- Add dedicated list tools for all entities (list_users, list_domains, etc.)
- Add get tools for individual items (get_user, get_domain, get_alias)
- Keep resources for MCP compliance while adding tools for better Claude Desktop support
- Tools return formatted strings with counts for better readability
- Version bump to 0.4.2 for Claude Desktop compatibility
Tools added:
- list_users, list_domains, list_aliases, list_alternative_domains, list_relays
- get_user, get_domain, get_alias
- list_domain_users, list_domain_managers
This ensures Claude Desktop can easily fetch lists regardless of how it handles resources.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Return dict/list directly instead of JSON strings for proper serialization
- FastMCP automatically serializes dicts/lists to JSON
- Update return types from str to dict/list/Union types
- Fix error handling to return structured data instead of strings
- Add Union type import for better type hints
- Version bump to 0.4.1 for resource fixes
Per FastMCP docs:
- Dictionaries/Lists are automatically serialized to JSON
- Resources should return native Python data structures
- FastMCP handles the serialization to proper MCP format
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove all OpenAPI/Swagger integration code
- Simplify server to use only manual tools and resources
- Clean up unused imports (asyncio, pathlib, typing.Any/Dict)
- Remove complex fallback logic and OpenAPI validation
- Keep comprehensive 29 tools + 13 resources for full API coverage
- Maintain security automation tools (auto_configure_domain_security, analyze_domain_security)
- Version bump to 0.4.0 for major simplification
Benefits:
- Cleaner, more maintainable code
- No Swagger 2.0 vs OpenAPI 3.x compatibility issues
- Better error handling and reliability
- Reduced complexity while maintaining full functionality
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace shared client instance with fresh client per request
- Add get_mailu_client() function for proper client creation
- Fix "Cannot reopen a client instance" error
- Ensure proper async context management for all HTTP requests
- Version bump to 0.3.2 for connection lifecycle fixes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Complete FastMCP server with OpenAPI integration and fallback tools
- Automatic tool generation from Mailu REST API endpoints
- Bearer token authentication support
- Comprehensive test suite and documentation
- PyPI-ready package configuration with proper metadata
- Environment-based configuration support
- Production-ready error handling and logging
- Examples and publishing scripts included
Features:
- User management (list, create, update, delete)
- Domain management (list, create, update, delete)
- Alias management and email forwarding
- DKIM key generation
- Manager assignment for domains
- Graceful fallback when OpenAPI validation fails
Ready for Claude Desktop integration and PyPI distribution.