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/),
|
||||
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
|
||||
|
||||
### Changed
|
||||
|
@ -139,12 +139,13 @@ vultr-dns-mcp/
|
||||
- 12 comprehensive DNS management tools
|
||||
- **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
|
||||
- DNS record operations: CRUD for all record types
|
||||
- Validation: Pre-creation validation with suggestions
|
||||
- Analysis: Configuration analysis with security recommendations
|
||||
- Setup utilities: Quick website and email DNS configuration
|
||||
- Resource access tools: Tool wrappers for Claude Desktop compatibility
|
||||
|
||||
### Enhanced Error Handling
|
||||
- Custom exception hierarchy: VultrAPIError, VultrAuthError, VultrRateLimitError, etc.
|
||||
|
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
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"
|
||||
readme = "README.md"
|
||||
license = {text = "MIT"}
|
||||
|
@ -1,4 +1,4 @@
|
||||
"""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())
|
||||
|
@ -190,6 +190,60 @@ def create_vultr_mcp_server(api_key: Optional[str] = None) -> FastMCP:
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user