27 Commits

Author SHA1 Message Date
e6f66dc931 Refactor package name from vultr-dns-mcp to mcp-vultr
Some checks are pending
Tests / test (3.10) (push) Waiting to run
Tests / test (3.11) (push) Waiting to run
Tests / test (3.12) (push) Waiting to run
Tests / test (3.13) (push) Waiting to run
Tests / build (push) Blocked by required conditions
Tests / test-install (3.10) (push) Blocked by required conditions
Tests / test-install (3.13) (push) Blocked by required conditions
Tests / security (push) Waiting to run
- Rename package from vultr-dns-mcp to mcp-vultr for MCP organization
- Update module name from vultr_dns_mcp to mcp_vultr throughout codebase
- Rename src/vultr_dns_mcp/ to src/mcp_vultr/
- Update all import statements and references in Python files
- Update documentation files (README.md, CLAUDE.md, etc.)
- Update CLI script names in pyproject.toml
- Update test files with new import paths

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 21:49:38 -06:00
2d866d275d Add zone file import/export functionality (v1.1.0)
Major new feature: DNS Zone File Management
- Add export_zone_file() method to export domain records as standard zone files
- Add import_zone_file() method to import records from zone file format
- Add comprehensive zone file parser with $TTL and $ORIGIN support
- Add dry-run mode for import validation without making changes
- Add zone file tools to FastMCP server (export_zone_file_tool, import_zone_file_tool)
- Add dns://domains/{domain}/zone-file resource for MCP clients

Features:
- Standard zone file format compliance (BIND, PowerDNS compatible)
- Support for all DNS record types (A, AAAA, CNAME, MX, TXT, NS, SRV)
- Proper handling of quoted strings and record priorities
- Line-by-line error reporting for invalid zone data
- Backup and migration capabilities

This enables easy DNS configuration backup, restoration, and bulk operations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 19:29:06 -06:00
509423e650 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>
2025-07-16 15:49:04 -06:00
ce640e2ee5 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>
2025-07-16 14:51:04 -06:00
691963a43b Refactor to use MCP resources for read operations (v1.0.2)
- Convert all read/list operations from tools to resources following MCP best practices
- Add @mcp.resource decorators for domains, records, and analysis endpoints
- Update version to 1.0.2
- Add uvx support documentation for Claude Desktop integration
- Fix CLI asyncio usage for FastMCP synchronous run() method
- Add vultr-mcp-server console script entry point

This improves alignment with MCP patterns where resources represent
readable data and tools perform actions that modify state.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 14:28:21 -06:00
66c4c3cb18 Update CLAUDE.md with FastMCP migration details
- Document migration from low-level MCP to FastMCP 2.0
- Update project structure with new files
- Add FastMCP server features and error handling improvements
- Update version history with all recent changes
- Add Claude Desktop integration section
- Update troubleshooting for common FastMCP issues

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 11:28:13 -06:00
75ffe33008 Migrate to FastMCP and add comprehensive improvements
Major changes:
- Migrate from low-level MCP to FastMCP framework for better compatibility
- Add custom exception hierarchy (VultrAPIError, VultrAuthError, etc.)
- Replace basic IPv6 validation with Python's ipaddress module
- Add HTTP request timeouts (30s total, 10s connect)
- Modernize development workflow with uv package manager
- Create FastMCP server with proper async/await patterns

New features:
- FastMCP server implementation with 12 DNS management tools
- Comprehensive Claude Desktop integration guide
- Enhanced error handling with specific exception types
- Professional README with badges and examples
- Complete testing suite with improvement validation

Documentation:
- CLAUDE.md: Consolidated project documentation
- CLAUDE_DESKTOP_SETUP.md: Step-by-step Claude Desktop setup guide
- Updated README.md with modern structure and uv-first approach
- Enhanced TESTING.md with FastMCP testing patterns

Development improvements:
- Updated all scripts to use uv run commands
- Smart development setup with uv/pip fallback
- Added comprehensive test coverage for new features
- PyPI-ready package configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 10:09:20 -06:00
7273fe8539 fixed 2025-06-11 18:14:19 -06:00
Ryan Malloy
5df5e9e8a0 Update CLI to use async run_server function 2025-06-11 17:55:21 -06:00
Ryan Malloy
b8fd6e4632 Migrate from fastmcp to official MCP package 2025-06-11 17:53:43 -06:00
Ryan Malloy
5c87097158 Update test workflow for Python 3.10+ requirement
- Change Python test matrix from 3.8-3.12 to 3.10-3.13
- Update test-install to test on 3.10 and 3.13 (min/max versions)
- Keep other Python versions in workflow for comprehensive testing

This aligns with the updated minimum Python requirement of 3.10+
to match the mcp package dependency requirements.
2025-06-11 17:45:39 -06:00
Ryan Malloy
1a19a54963 Fix Python version compatibility and MCP dependency
BREAKING CHANGE: Minimum Python version is now 3.10+

- Replace fastmcp>=0.1.0 with mcp>=1.0.0 (official MCP SDK)
- Update requires-python from ">=3.8" to ">=3.10" 
- Remove Python 3.8 and 3.9 from classifiers
- Update mypy and black target versions to match
- Replace fastmcp keyword with mcp-server
- Update mypy overrides for mcp.* modules

This fixes the dependency conflict where fastmcp requires Python 3.10+
but the project claimed to support Python 3.8+. The official MCP SDK
provides the same FastMCP functionality with import: from mcp import FastMCP
2025-06-11 17:45:18 -06:00
Ryan Malloy
ac3c04e8d1 Add version synchronization script
This script helps keep version numbers in sync between pyproject.toml 
and _version.py. It can check sync status, update _version.py to match 
pyproject.toml, or set both files to a new version.

Usage:
- python sync_version.py              # Check sync status
- python sync_version.py --update     # Update _version.py to match pyproject.toml  
- python sync_version.py --set 1.0.2  # Set both versions to 1.0.2
2025-06-11 17:43:22 -06:00
Ryan Malloy
3518a5afdf Update author information to match pyproject.toml
Change author from "Claude AI Assistant" to "Ryan Malloy" and
email to "ryan@supported.systems" to be consistent with the
package metadata in pyproject.toml.
2025-06-11 17:42:56 -06:00
Ryan Malloy
afcea653bb
Delete fix_tests.sh 2025-06-11 17:42:30 -06:00
Ryan Malloy
2228dce982
Delete fixed_test_mcp_server.py 2025-06-11 17:42:16 -06:00
Ryan Malloy
5077778388
Delete fixed_conftest.py 2025-06-11 17:42:04 -06:00
Ryan Malloy
3d3baaa3f0
Delete comprehensive_test_fix.py 2025-06-11 17:41:45 -06:00
Ryan Malloy
863c78bb1f Fix test dependency: replace httpx-mock with pytest-httpx
The package httpx-mock doesn't exist. The correct package for mocking 
httpx in pytest is pytest-httpx which provides the httpx_mock fixture.
2025-06-11 17:41:29 -06:00
Ryan Malloy
22c933a70e
Delete create_fixes.py 2025-06-11 17:41:25 -06:00
Ryan Malloy
2622516989
Delete analyze_test_issues.py 2025-06-11 17:40:58 -06:00
Ryan Malloy
cf38305950
Delete QUICKSTART.md 2025-06-11 17:40:32 -06:00
Ryan Malloy
cdfa53c9da
Update pyproject.toml 2025-06-11 17:37:50 -06:00
Ryan Malloy
2aaaecf3c1 Add PyPI publishing setup guide
- Complete setup instructions for trusted publishing
- Step-by-step publishing process
- Troubleshooting guide
- Best practices for versioning and changelog
2025-06-11 16:48:00 -06:00
Ryan Malloy
d6983b76cf Add PyPI publishing workflow
- Triggers on version tags (v*)
- Supports both TestPyPI and PyPI publishing
- Uses trusted publishing (OIDC) for security
- Requires all tests to pass before publishing
- Creates GitHub releases with changelog
- Supports manual workflow dispatch for testing
2025-06-11 16:47:27 -06:00
f3f68691a5 test fixes 2025-06-11 16:40:21 -06:00
a5fe791756 Initial Commit 2025-06-11 16:16:34 -06:00