Add tool wrappers for Claude Desktop compatibility (v1.0.3)
- Add tool wrappers for all resource endpoints to ensure Claude Desktop can access them - Implement hybrid approach: resources for MCP spec compliance, tools for practical usage - Add 5 new tool wrappers: list_domains_tool, get_domain_tool, list_records_tool, get_record_tool, analyze_domain_tool - Update documentation to reflect the hybrid approach - Bump version to 1.0.3 This ensures compatibility with Claude Desktop while maintaining MCP best practices. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
691963a43b
commit
ce640e2ee5
14
CHANGELOG.md
14
CHANGELOG.md
@ -5,6 +5,20 @@ 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.3] - 2025-01-16
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Tool wrappers for resource access to ensure Claude Desktop compatibility
|
||||||
|
- `list_domains_tool()` - wrapper for dns://domains resource
|
||||||
|
- `get_domain_tool()` - wrapper for dns://domains/{domain} resource
|
||||||
|
- `list_records_tool()` - wrapper for dns://domains/{domain}/records resource
|
||||||
|
- `get_record_tool()` - wrapper for dns://domains/{domain}/records/{record_id} resource
|
||||||
|
- `analyze_domain_tool()` - wrapper for dns://domains/{domain}/analysis resource
|
||||||
|
|
||||||
|
### Technical
|
||||||
|
- Hybrid approach: resources for direct MCP access, tools for Claude Desktop compatibility
|
||||||
|
- Maintains both patterns to support different MCP client implementations
|
||||||
|
|
||||||
## [1.0.2] - 2025-01-16
|
## [1.0.2] - 2025-01-16
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -139,12 +139,13 @@ vultr-dns-mcp/
|
|||||||
- 12 comprehensive DNS management tools
|
- 12 comprehensive DNS management tools
|
||||||
- **Important**: FastMCP's `run()` method is synchronous, not async. Do not wrap with `asyncio.run()`
|
- **Important**: FastMCP's `run()` method is synchronous, not async. Do not wrap with `asyncio.run()`
|
||||||
|
|
||||||
### MCP Tools (12 total)
|
### MCP Tools (17 total)
|
||||||
- Domain management: list, create, delete, get details
|
- Domain management: list, create, delete, get details
|
||||||
- DNS record operations: CRUD for all record types
|
- DNS record operations: CRUD for all record types
|
||||||
- Validation: Pre-creation validation with suggestions
|
- Validation: Pre-creation validation with suggestions
|
||||||
- Analysis: Configuration analysis with security recommendations
|
- Analysis: Configuration analysis with security recommendations
|
||||||
- Setup utilities: Quick website and email DNS configuration
|
- Setup utilities: Quick website and email DNS configuration
|
||||||
|
- Resource access tools: Tool wrappers for Claude Desktop compatibility
|
||||||
|
|
||||||
### Enhanced Error Handling
|
### Enhanced Error Handling
|
||||||
- Custom exception hierarchy: VultrAPIError, VultrAuthError, VultrRateLimitError, etc.
|
- Custom exception hierarchy: VultrAPIError, VultrAuthError, VultrRateLimitError, etc.
|
||||||
|
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "vultr-dns-mcp"
|
name = "vultr-dns-mcp"
|
||||||
version = "1.0.2"
|
version = "1.0.3"
|
||||||
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"}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
"""Version information for vultr-dns-mcp package."""
|
"""Version information for vultr-dns-mcp package."""
|
||||||
|
|
||||||
__version__ = "1.0.2"
|
__version__ = "1.0.3"
|
||||||
__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())
|
||||||
|
@ -190,6 +190,60 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
|
|||||||
|
|
||||||
return records
|
return records
|
||||||
|
|
||||||
|
# Tool wrappers for resources (for compatibility with Claude Desktop)
|
||||||
|
@mcp.tool
|
||||||
|
async def list_domains_tool() -> List[Dict[str, Any]]:
|
||||||
|
"""List all DNS domains in your Vultr account.
|
||||||
|
|
||||||
|
This is a tool wrapper for the dns://domains resource.
|
||||||
|
"""
|
||||||
|
return await list_dns_domains()
|
||||||
|
|
||||||
|
@mcp.tool
|
||||||
|
async def get_domain_tool(domain: str) -> Dict[str, Any]:
|
||||||
|
"""Get details for a specific DNS domain.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
domain: The domain name to get details for
|
||||||
|
|
||||||
|
This is a tool wrapper for the dns://domains/{domain} resource.
|
||||||
|
"""
|
||||||
|
return await get_dns_domain(domain)
|
||||||
|
|
||||||
|
@mcp.tool
|
||||||
|
async def list_records_tool(domain: str) -> List[Dict[str, Any]]:
|
||||||
|
"""List all DNS records for a domain.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
domain: The domain name to list records for
|
||||||
|
|
||||||
|
This is a tool wrapper for the dns://domains/{domain}/records resource.
|
||||||
|
"""
|
||||||
|
return await list_dns_records(domain)
|
||||||
|
|
||||||
|
@mcp.tool
|
||||||
|
async def get_record_tool(domain: str, record_id: str) -> Dict[str, Any]:
|
||||||
|
"""Get details for a specific DNS record.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
domain: The domain name
|
||||||
|
record_id: The record ID to get details for
|
||||||
|
|
||||||
|
This is a tool wrapper for the dns://domains/{domain}/records/{record_id} resource.
|
||||||
|
"""
|
||||||
|
return await get_dns_record(domain, record_id)
|
||||||
|
|
||||||
|
@mcp.tool
|
||||||
|
async def analyze_domain_tool(domain: str) -> Dict[str, Any]:
|
||||||
|
"""Analyze DNS configuration for a domain and provide recommendations.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
domain: The domain name to analyze
|
||||||
|
|
||||||
|
This is a tool wrapper for the dns://domains/{domain}/analysis resource.
|
||||||
|
"""
|
||||||
|
return await analyze_dns_records(domain)
|
||||||
|
|
||||||
return mcp
|
return mcp
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user