From 509423e650510c86b2dad87e8fb781403510f3a8 Mon Sep 17 00:00:00 2001 From: Ryan Malloy Date: Wed, 16 Jul 2025 15:49:04 -0600 Subject: [PATCH] Fix tool wrappers callable error (v1.0.4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- CHANGELOG.md | 11 +++++++++++ pyproject.toml | 2 +- src/vultr_dns_mcp/_version.py | 2 +- src/vultr_dns_mcp/fastmcp_server.py | 10 +++++----- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f833cfe..20db5b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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/), 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 ### Added diff --git a/pyproject.toml b/pyproject.toml index 40cda6b..1bc6fff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] 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" readme = "README.md" license = {text = "MIT"} diff --git a/src/vultr_dns_mcp/_version.py b/src/vultr_dns_mcp/_version.py index 2c7c7c0..fccc9b3 100644 --- a/src/vultr_dns_mcp/_version.py +++ b/src/vultr_dns_mcp/_version.py @@ -1,4 +1,4 @@ """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()) diff --git a/src/vultr_dns_mcp/fastmcp_server.py b/src/vultr_dns_mcp/fastmcp_server.py index f4503b3..ce18d2c 100644 --- a/src/vultr_dns_mcp/fastmcp_server.py +++ b/src/vultr_dns_mcp/fastmcp_server.py @@ -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. """ - return await list_dns_domains() + return await vultr_client.list_domains() @mcp.tool 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. """ - return await get_dns_domain(domain) + return await vultr_client.get_domain(domain) @mcp.tool 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. """ - return await list_dns_records(domain) + return await vultr_client.list_records(domain) @mcp.tool 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. """ - return await get_dns_record(domain, record_id) + return await vultr_client.get_record(domain, record_id) @mcp.tool 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. """ - return await analyze_dns_records(domain) + return await vultr_client.analyze_records(domain) return mcp