MCP Server Generator
Generates production-ready MCP servers with dual-mode (MCP + CLI) architecture, tests, and documentation. Includes progressive disclosure tools for AI agents and best practices guidance.
README
MCP Server Generator
A meta-generator for creating dual-mode MCP servers with best practices
Overview
Generate complete, production-ready MCP (Model Context Protocol) servers that work in two modes:
- MCP Server Mode: For AI agents (Claude Desktop, etc.)
- CLI Mode: For developers
This tool is itself an MCP server, enabling AI agents to generate other MCP servers! It demonstrates the dual-mode architecture pattern it creates and implements progressive disclosure for context-efficient tool discovery.
Why Use This?
- ā” Fast: Generate a complete MCP server in under 5 minutes
- šļø Complete: Includes tests, documentation, packaging, and CI/CD
- ā Tested: Generated servers have comprehensive test suites with high coverage
- šÆ Best Practices: Follows validated patterns from production MCP servers with built-in guidance
- š§ Dual-Mode: Works as both MCP server and CLI tool
- š§ Smart Discovery: Progressive disclosure tools for context-efficient AI agent usage
- š¦ Ready to Publish: GitHub Actions workflows included for PyPI publishing
Features
- ā Dual-mode architecture (MCP + CLI)
- ā Progressive disclosure tools (context-efficient tool discovery for AI agents)
- ā Built-in guidance (best practices and implementation guides)
- ā Claude Code integration (generate slash commands for guided development)
- ā Async/await support (async handlers for I/O operations, avoids event loop errors)
- ā Package prefix support (avoid PyPI namespace conflicts with AUTO detection)
- ā Complete project scaffolding (tests, docs, packaging)
- ā GitHub Actions workflows (via pypi-workflow-generator)
- ā Comprehensive test suite (92+ tests with high coverage)
- ā Type hints and documentation
- ā Best practices enforcement
- ā Minimal dependencies
Installation
For MCP Server Usage (Recommended)
Using uvx (no installation required):
The easiest way to use this as an MCP server - just configure in Claude Desktop:
{
"mcpServers": {
"mcp-server-generator": {
"command": "uvx",
"args": ["hitoshura25-mcp-server-generator"]
}
}
}
Prerequisites: Install uv:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
For CLI Usage (Alternative)
Using pipx (isolated installation):
pipx install hitoshura25-mcp-server-generator
Using pip:
pip install hitoshura25-mcp-server-generator
From Source (Development)
git clone https://github.com/hitoshura25/mcp-server-generator.git
cd mcp-server-generator
pip install -e .
Quick Start
Interactive Mode (Recommended)
The easiest way to get started:
hitoshura25-mcp-server-generator-cli --interactive
This will guide you through:
- Project naming
- Author information
- Tool definitions
- Configuration options
Command-Line Mode
For automation or when you have a tool definition file:
hitoshura25-mcp-server-generator-cli \
--project-name my-mcp-tool \
--description "Does something useful" \
--author "Your Name" \
--email "you@example.com" \
--tools-file tools.json
MCP Server Mode (For AI Agents)
Configure mcp-server-generator as an MCP server in Claude Desktop to let Claude generate MCP servers for you:
Using uvx (recommended):
{
"mcpServers": {
"mcp-server-generator": {
"command": "uvx",
"args": ["hitoshura25-mcp-server-generator"]
}
}
}
Using pipx/pip installation:
{
"mcpServers": {
"mcp-server-generator": {
"command": "hitoshura25-mcp-server-generator"
}
}
}
For detailed MCP configuration, see MCP-USAGE.md
MCP Server Tools
When used as an MCP server (in Claude Desktop or other MCP clients), mcp-server-generator provides powerful tools with progressive disclosure support - allowing AI agents to discover and use tools efficiently without loading all schemas upfront.
Discovery Tools
search_tools - Find relevant tools by query
- Search by keywords, categories, or use cases
- Three detail levels for context efficiency:
name: Just tool names (most efficient)summary: Names + descriptions + categoriesfull: Complete information including use cases
- Example:
search_tools(query="generate", detail_level="summary")
get_tool_info - Get detailed information about a specific tool
- Two detail levels:
summaryorfull - Progressive disclosure for context efficiency
- Example:
get_tool_info(tool_name="generate_mcp_server", detail_level="full")
Generation Tools
generate_mcp_server - Generate complete MCP server projects
- Creates dual-mode architecture (MCP + CLI)
- Includes tests, documentation, and CI/CD workflows
- Production-ready scaffolding with best practices
- Supports async/await patterns
generate_claude_command - Create Claude Code command files
- Generates
.claude/commands/directory structure - Creates slash commands for guided MCP development
- Templates for common workflows:
mcp_generator,best_practices,implementation_helper,custom - Enables guided development experience
Validation Tools
validate_project_name - Validate project names
- Check Python package compatibility
- Avoid Python keyword conflicts
- Ensure PyPI naming conventions
Guidance Tools
get_best_practices - MCP development best practices
- Progressive disclosure strategies
- Context-efficient tool design
- Control flow optimization
- Security and privacy considerations
- State management patterns
- Testing strategies
get_implementation_guide - Step-by-step implementation guide
- Project setup and initialization
- Tool implementation patterns
- Testing strategies
- Deployment and publishing
- Claude Desktop integration
Why Progressive Disclosure?
Progressive disclosure allows AI agents to:
- Discover tools without loading full schemas upfront
- Save context window space for actual work
- Scale to hundreds or thousands of tools
- Get exactly the level of detail needed
Example workflow (MCP tool invocations):
# 1. Search for relevant tools
search_tools(query="generate", detail_level="name")
# Returns: ["generate_mcp_server", "generate_claude_command"]
# 2. Get summary of specific tool
get_tool_info(tool_name="generate_mcp_server", detail_level="summary")
# Returns: name, description, category
# 3. Get full details when ready to use
get_tool_info(tool_name="generate_mcp_server", detail_level="full")
# Returns: complete information including use cases and parameters
Package Prefix
To avoid namespace conflicts on PyPI, mcp-server-generator supports prefixing package names. This is highly recommended for unique package names.
Prefix Modes
AUTO (Recommended)
- Automatically detects your GitHub username from git config
- Priority:
github.userā remote URL āuser.name(sanitized) - Example:
my-toolāusername-my-tool
Custom Prefix
- Use your own prefix (organization name, brand, etc.)
- Example:
--prefix acmeāacme-my-tool
NONE
- No prefix applied (only if you have a truly unique name)
- Example:
unique-server-nameāunique-server-name
Usage Examples
Interactive Mode:
hitoshura25-mcp-server-generator-cli --interactive
# You'll be prompted: "Prefix (default: AUTO): "
# - Press Enter for AUTO detection
# - Type "NONE" for no prefix
# - Type "acme" for custom prefix
Command-Line:
# AUTO mode (default)
hitoshura25-mcp-server-generator-cli --project-name calculator --prefix AUTO ...
# Custom prefix
hitoshura25-mcp-server-generator-cli --project-name calculator --prefix acme ...
# No prefix
hitoshura25-mcp-server-generator-cli --project-name unique-calculator --prefix NONE ...
MCP Server Mode:
{
"project_name": "calculator",
"prefix": "AUTO",
...
}
Generated Names
With prefix username and project my-tool:
- PyPI Package:
username-my-tool(install withpip install username-my-tool) - Python Import:
username_my_tool(use in code asimport username_my_tool) - CLI Command:
username-my-tool(run asusername-my-tool --help) - MCP Command:
mcp-username-my-tool(use in config)
For detailed MCP configuration, see MCP-USAGE.md
What Gets Generated
A complete, production-ready MCP server project:
my-mcp-tool/
āāā .gitignore
āāā README.md
āāā MCP-USAGE.md
āāā LICENSE
āāā setup.py
āāā pyproject.toml
āāā requirements.txt
āāā MANIFEST.in
āāā my_mcp_tool/
ā āāā __init__.py
ā āāā server.py # MCP server implementation
ā āāā cli.py # CLI interface
ā āāā generator.py # Business logic (TODO stubs)
ā āāā tests/
ā āāā __init__.py
ā āāā test_server.py # MCP protocol tests
ā āāā test_generator.py # Core logic tests
āāā .github/
āāā workflows/
āāā pypi-publish.yml # PyPI publishing workflow
Generated Features
- ā Working MCP server with proper JSON-RPC over stdio
- ā CLI interface with argparse
- ā Complete test suite (MCP protocol + business logic)
- ā GitHub Actions workflow for PyPI publishing
- ā Comprehensive documentation (README, MCP-USAGE)
- ā Proper Python packaging (setup.py, pyproject.toml)
- ā TODO stubs for easy implementation
Tool Definition Format
Create a tools.json file to define your MCP server's tools:
{
"tools": [
{
"name": "my_function",
"description": "Does something useful",
"parameters": [
{
"name": "input_text",
"type": "string",
"description": "Text to process",
"required": true
},
{
"name": "max_length",
"type": "number",
"description": "Maximum length",
"required": false
}
]
}
]
}
Supported Types
string/strnumber/int/integer/floatboolean/boolarray/listobject/dict
For complete examples, see EXAMPLES.md
Documentation
- MCP-USAGE.md - Detailed MCP server configuration guide
- ASYNC_GUIDE.md - Complete guide for using async/await in generated MCP servers
- EXAMPLES.md - Example projects and use cases
- SECURITY.md - Security guidelines and best practices
- CONTRIBUTING.md - Development and contribution guidelines
Security
š Important: MCP servers can be exploited for malicious purposes if not properly secured. See SECURITY.md for comprehensive security guidelines.
Key Security Features
Generated MCP servers include:
-
Security utilities module (
security_utils.py) with ready-to-use functions for:- Input validation and sanitization
- Path traversal protection
- Command injection prevention
- Rate limiting to prevent high-speed automated attacks
- Audit logging for security-relevant operations
- Sensitive data redaction (PII, credentials, API keys)
-
Automated security analysis - The generator analyzes your tool definitions and warns about:
- High-risk patterns (command execution, code evaluation)
- Medium-risk patterns (file operations, network access, credential handling)
- Recommendations for secure implementation
-
Comprehensive security documentation - Every generated project includes SECURITY.md with:
- Threat model based on real-world AI-orchestrated cyber espionage
- Secure coding patterns and examples
- Security checklist for deployment
- Incident response procedures
Best Practices
When creating MCP servers:
- Validate all inputs - Use whitelists, not blacklists
- Apply principle of least privilege - Tools should do the minimum necessary
- Implement rate limiting - Protect against high-speed automated attacks
- Add audit logging - Track all security-relevant operations
- Redact sensitive data - Don't expose PII, credentials, or secrets
- Use security utilities - Leverage the built-in
security_utils.pymodule
Threat Model
MCP servers can be targeted for:
- AI-orchestrated cyber espionage campaigns
- Jailbreak attempts through task decomposition
- High-speed reconnaissance and exploitation
- Credential harvesting through tool chaining
- Data exfiltration at scale
Reference: Anthropic's research on AI-orchestrated cyber espionage
Testing
The project includes a comprehensive test suite:
# Run all tests
pytest
# Run with coverage report
pytest --cov=hitoshura25_mcp_server_generator --cov-report=term-missing
# Run specific test file
pytest hitoshura25_mcp_server_generator/tests/test_server.py -v
Test Statistics:
- 92+ comprehensive tests covering all functionality
- All async MCP protocol tests passing
- Progressive disclosure and discovery tools tests passing
- Template validation tests passing
Requirements
- Python ā„3.8
- Jinja2 ā„3.0
- hitoshura25-pypi-workflow-generator ==0.6.0
Development
See CONTRIBUTING.md for detailed development instructions.
Quick setup:
# Clone the repository
git clone https://github.com/hitoshura25/mcp-server-generator.git
cd mcp-server-generator
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .
# Run tests
pytest
Architecture
mcp-server-generator follows a dual-mode architecture pattern:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā mcp-server-generator ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā āāāāāāāāāāāā āāāāāāāāāāāā ā
ā ā MCP Mode ā ā CLI Mode ā ā
ā āāāāāā¬āāāāāā āāāāāā¬āāāāāā ā
ā ā ā ā
ā āāāāāāāāāā¬āāāāāāāāā ā
ā ā ā
ā āāāāāāāā¼āāāāāāāā ā
ā ā generator.py ā ā
ā ā (Core Logic) ā ā
ā āāāāāāāāāāāāāāāā ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Both modes use the same core generator logic, ensuring consistency.
License
Apache-2.0
Author
Vinayak Menon
Links
- PyPI: https://pypi.org/project/hitoshura25-mcp-server-generator/
- GitHub: https://github.com/hitoshura25/mcp-server-generator
- Issues: https://github.com/hitoshura25/mcp-server-generator/issues
- Reference Implementation: pypi-workflow-generator
Acknowledgments
This project is based on patterns validated in pypi-workflow-generator, a production MCP server for generating GitHub Actions workflows.
Progressive disclosure implementation follows best practices from:
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.