Fix tool wrappers callable error (v1.0.4)

- Fix tool wrappers to call vultr_client methods directly instead of resource functions
- Resolve "FunctionResource object is not callable" error in Claude Desktop
- Tool wrappers now properly call vultr_client.list_domains(), vultr_client.get_domain(), etc.
- Maintains hybrid approach while fixing the execution error
- Bump version to 1.0.4

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ryan Malloy 2025-07-16 15:49:04 -06:00
parent ce640e2ee5
commit 509423e650
4 changed files with 18 additions and 7 deletions

View File

@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.4] - 2025-01-16
### Fixed
- Fixed tool wrappers to properly call underlying VultrDNSServer methods instead of trying to call FunctionResource objects
- Resolved "FunctionResource object is not callable" error in Claude Desktop
- Tool wrappers now directly call `vultr_client.list_domains()`, `vultr_client.get_domain()`, etc.
### Technical
- Changed tool wrapper implementation from calling resource functions to calling the underlying client methods
- Maintains functionality while fixing the callable object error
## [1.0.3] - 2025-01-16 ## [1.0.3] - 2025-01-16
### Added ### Added

View File

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "vultr-dns-mcp" name = "vultr-dns-mcp"
version = "1.0.3" version = "1.0.4"
description = "A comprehensive Model Context Protocol (MCP) server for managing Vultr DNS records" description = "A comprehensive Model Context Protocol (MCP) server for managing Vultr DNS records"
readme = "README.md" readme = "README.md"
license = {text = "MIT"} license = {text = "MIT"}

View File

@ -1,4 +1,4 @@
"""Version information for vultr-dns-mcp package.""" """Version information for vultr-dns-mcp package."""
__version__ = "1.0.3" __version__ = "1.0.4"
__version_info__ = tuple(int(i) for i in __version__.split(".") if i.isdigit()) __version_info__ = tuple(int(i) for i in __version__.split(".") if i.isdigit())

View File

@ -197,7 +197,7 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
This is a tool wrapper for the dns://domains resource. This is a tool wrapper for the dns://domains resource.
""" """
return await list_dns_domains() return await vultr_client.list_domains()
@mcp.tool @mcp.tool
async def get_domain_tool(domain: str) -> Dict[str, Any]: async def get_domain_tool(domain: str) -> Dict[str, Any]:
@ -208,7 +208,7 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
This is a tool wrapper for the dns://domains/{domain} resource. This is a tool wrapper for the dns://domains/{domain} resource.
""" """
return await get_dns_domain(domain) return await vultr_client.get_domain(domain)
@mcp.tool @mcp.tool
async def list_records_tool(domain: str) -> List[Dict[str, Any]]: async def list_records_tool(domain: str) -> List[Dict[str, Any]]:
@ -219,7 +219,7 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
This is a tool wrapper for the dns://domains/{domain}/records resource. This is a tool wrapper for the dns://domains/{domain}/records resource.
""" """
return await list_dns_records(domain) return await vultr_client.list_records(domain)
@mcp.tool @mcp.tool
async def get_record_tool(domain: str, record_id: str) -> Dict[str, Any]: async def get_record_tool(domain: str, record_id: str) -> Dict[str, Any]:
@ -231,7 +231,7 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
This is a tool wrapper for the dns://domains/{domain}/records/{record_id} resource. This is a tool wrapper for the dns://domains/{domain}/records/{record_id} resource.
""" """
return await get_dns_record(domain, record_id) return await vultr_client.get_record(domain, record_id)
@mcp.tool @mcp.tool
async def analyze_domain_tool(domain: str) -> Dict[str, Any]: async def analyze_domain_tool(domain: str) -> Dict[str, Any]:
@ -242,7 +242,7 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
This is a tool wrapper for the dns://domains/{domain}/analysis resource. This is a tool wrapper for the dns://domains/{domain}/analysis resource.
""" """
return await analyze_dns_records(domain) return await vultr_client.analyze_records(domain)
return mcp return mcp