hitoshura25

MCP Server Generator

Community hitoshura25
Updated

Generate MCP servers with dual-mode architecture (MCP protocol + CLI)

MCP Server Generator

A meta-generator for creating dual-mode MCP servers with best practices

Python VersionLicense

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:

  1. Project naming
  2. Author information
  3. Tool definitions
  4. 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 "[email protected]" \
  --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 + categories
    • full: 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: summary or full
  • 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 with pip install username-my-tool)
  • Python Import: username_my_tool (use in code as import username_my_tool)
  • CLI Command: username-my-tool (run as username-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 / str
  • number / int / integer / float
  • boolean / bool
  • array / list
  • object / dict

For complete examples, see EXAMPLES.md

Documentation

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:

  1. Validate all inputs - Use whitelists, not blacklists
  2. Apply principle of least privilege - Tools should do the minimum necessary
  3. Implement rate limiting - Protect against high-speed automated attacks
  4. Add audit logging - Track all security-relevant operations
  5. Redact sensitive data - Don't expose PII, credentials, or secrets
  6. Use security utilities - Leverage the built-in security_utils.py module

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

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:

MCP Server ยท Populars

MCP Server ยท New