Skip to content

camel-ai/mcpify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MCPify - Export all projects as MCP servers!

Python 3.10+ License: MIT

MCPify is a powerful tool that automatically detects APIs in existing projects and transforms them into Model Context Protocol (MCP) servers. This enables seamless integration of your existing command-line tools, web APIs, and applications with AI assistants and other MCP-compatible clients.

πŸš€ Features

  • Intelligent API Detection: Multiple advanced detection strategies
    • πŸ€– OpenAI Detection: Use GPT-4 for intelligent API analysis and tool extraction
    • πŸͺ Camel-AI Detection: Leverage Camel-AI's ChatAgent framework for comprehensive analysis
    • πŸ” AST Detection: Static code analysis using Abstract Syntax Trees
    • 🎯 Auto-Selection: Automatically choose the best available detection strategy
  • Multiple Project Types: Support for various project architectures
    • CLI Tools: Detect argparse, click, typer-based command-line interfaces
    • Web APIs: Support for Flask, Django, and FastAPI applications with route detection
    • Interactive Commands: Identify command-based interactive applications
    • Python Modules: Extract callable functions and methods
  • Flexible MCP Server: Multiple ways to start and control MCP servers
  • Multiple Backend Support: Works with command-line tools, HTTP APIs, Python modules, and more
  • Configuration Validation: Built-in validation system to ensure correct configurations
  • Parameter Detection: Automatically extract route parameters, query parameters, and CLI arguments
  • Zero Code Changes: Transform existing projects without modifying their source code
  • Professional Architecture: Clean separation between detection, configuration, and server execution

🎨 Interactive UI Features

MCPify now includes a powerful Streamlit-based web interface that makes repository analysis and MCP server configuration generation intuitive and interactive!

πŸš€ Launch the UI

# Install UI dependencies pip install 'mcpify[ui]' # Start the interactive web interface python -m mcpify.ui # Or use the convenience function python -c "from mcpify.ui import start_ui; start_ui()"

Then navigate to http://localhost:8501 in your browser.

✨ Key UI Features

πŸ” Repository Analyzer

  • GitIngest-style Interface: Clean, intuitive repository input with drag-and-drop support
  • Smart Examples: Pre-configured example repositories to try instantly
  • Advanced Options: Configurable exclude patterns, file size limits, and detection strategies
  • Real-time Progress: Visual progress indicators for each analysis phase
  • Multiple Input Types: Support for GitHub URLs, local directories, and Git repositories

πŸ€– AI-Powered Chat Interface (Coming Soon)

  • Conversational API Discovery: Describe what you need in natural language
  • Smart Recommendations: AI suggests relevant APIs and tools based on your requirements
  • Interactive Configuration: Build MCP configurations through guided conversations
  • Context-Aware Suggestions: Leverages repository analysis for targeted recommendations

πŸ“Š Intelligent Analysis Workflow

The UI provides a 5-phase intelligent workflow:

  1. πŸ“ Input Phase: Repository selection with examples and advanced options
  2. πŸ”„ Analysis Phase: GitIngest processing with real-time progress tracking
  3. πŸ’¬ Chat Phase: AI-powered conversation to understand your needs
  4. 🎯 Confirmation Phase: Review and confirm detected APIs and tools
  5. βœ… Complete Phase: Download configurations and get deployment instructions

πŸŽ›οΈ Advanced Features

  • Session Management: Save and restore analysis sessions
  • Configuration Validation: Real-time validation with detailed error reporting
  • Export Options: Download configurations in multiple formats
  • Server Testing: Built-in MCP server testing and validation
  • History Tracking: Keep track of all your analysis sessions

πŸ–₯️ UI Screenshots & Workflow

Repository Input Interface

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ✨ MCPify ✨ β”‚ β”‚ Turn repositories into MCP servers β”‚ β”‚ β”‚ β”‚ πŸ“ Repository Input β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ https://github.com/user/repo β”‚ β”‚ πŸ” Analyzeβ”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ βš™οΈ Advanced Options β”‚ β”‚ β€’ Exclude patterns: *.md, __pycache__/, *.pyc β”‚ β”‚ β€’ Max file size: 50 KB β”‚ β”‚ β€’ Detection strategy: auto β”‚ β”‚ β”‚ β”‚ πŸ’‘ Try these examples: β”‚ β”‚ [FastAPI Todo] [Flask Example] [CLI Tool] [API Client]β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ 

Analysis Progress Tracking

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ πŸ”„ Analysis Progress β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘ 80% β”‚ β”‚ β”‚ β”‚ Validating Configuration β”‚ β”‚ Checking configuration validity... β”‚ β”‚ β”‚ β”‚ βœ… GitIngest βœ… Detect APIs πŸ”„ Validate ⏳ Complete β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ 

Results Dashboard

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ βœ… Analysis Complete β”‚ β”‚ β”‚ β”‚ πŸ“Š Repository: my-fastapi-app πŸ—‚οΈ Files: 45 β”‚ β”‚ 🐍 Language: Python ⚑ Framework: FastAPI β”‚ β”‚ ⏱️ Time: 12.3s πŸ“ Analyzed: 32 β”‚ β”‚ β”‚ β”‚ πŸ“‹ Summary | βš™οΈ Configuration | πŸ“Š Validation | πŸ“ Codeβ”‚ β”‚ β”‚ β”‚ πŸŽ‰ Generated 8 API tools with FastAPI backend β”‚ β”‚ πŸ“₯ Download Configuration β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ 

🎯 UI Usage Examples

Quick Repository Analysis

# Start the UI python -m mcpify.ui # In the browser: # 1. Enter: https://github.com/tiangolo/fastapi # 2. Click "πŸ” Analyze" # 3. Wait for analysis completion # 4. Download the generated configuration

Advanced Configuration

# Start UI with custom settings python -m mcpify.ui # Configure advanced options: # β€’ Exclude patterns: "*.md, tests/, docs/" # β€’ Max file size: 100 KB # β€’ Detection strategy: openai # β€’ Include private repos: Yes

πŸ”§ UI Configuration

The UI can be customized through environment variables:

# Custom port export STREAMLIT_SERVER_PORT=8502 python -m mcpify.ui # Custom host export STREAMLIT_SERVER_ADDRESS=0.0.0.0 python -m mcpify.ui # Enable debug mode export STREAMLIT_LOGGER_LEVEL=debug python -m mcpify.ui

🎨 UI Architecture

mcpify/ui/ β”œβ”€β”€ __init__.py # UI module exports β”œβ”€β”€ main.py # UI entry point β”œβ”€β”€ app.py # Main Streamlit application β”œβ”€β”€ models.py # Data models for UI β”œβ”€β”€ session_manager.py # Session and history management β”œβ”€β”€ components/ # Reusable UI components β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ chat_interface.py # AI chat components β”‚ β”œβ”€β”€ sidebar.py # Navigation sidebar β”‚ └── detection_results.py # Results display └── pages/ # Individual page implementations β”œβ”€β”€ __init__.py └── repository_analyzer.py # Main analyzer page 

πŸš€ UI Development

Want to contribute to the UI? Here's how to get started:

# Install UI development dependencies pip install 'mcpify[ui,dev]' # Run the UI in development mode streamlit run mcpify/ui/app.py --server.runOnSave true # Run UI tests python -m pytest tests/test_ui_*.py -v

πŸ“¦ Installation

Using pip (recommended)

pip install mcpify

From source

git clone https://github.com/your-username/mcpify.git cd mcpify pip install -e .

Optional Dependencies

For enhanced detection capabilities:

# For OpenAI-powered detection pip install openai export OPENAI_API_KEY="your-api-key" # For Camel-AI powered detection pip install camel-ai

πŸ—οΈ Project Architecture

mcpify/ β”œβ”€β”€ mcpify/ # Core package β”‚ β”œβ”€β”€ cli.py # CLI interface with detection commands β”‚ β”œβ”€β”€ __main__.py # Module entry point β”‚ β”œβ”€β”€ wrapper.py # MCP protocol wrapper β”‚ β”œβ”€β”€ backend.py # Backend adapters β”‚ β”œβ”€β”€ detect/ # Detection module β”‚ β”‚ β”œβ”€β”€ __init__.py # Module exports β”‚ β”‚ β”œβ”€β”€ base.py # Base detector class β”‚ β”‚ β”œβ”€β”€ ast.py # AST-based detection β”‚ β”‚ β”œβ”€β”€ openai.py # OpenAI-powered detection β”‚ β”‚ β”œβ”€β”€ camel.py # Camel-AI detection β”‚ β”‚ β”œβ”€β”€ factory.py # Detector factory β”‚ β”‚ └── types.py # Type definitions β”‚ └── validate.py # Configuration validation β”œβ”€β”€ examples/ # Example projects β”œβ”€β”€ docs/ # Documentation └── tests/ # Test suite 

πŸ› οΈ Quick Start

1. Intelligent API Detection

MCPify offers multiple detection strategies. Use the best one for your needs:

# Auto-detection (recommended): Automatically selects the best available strategy mcpify detect /path/to/your/project --output config.json # OpenAI-powered detection: Most intelligent, requires API key mcpify openai-detect /path/to/your/project --output config.json # Camel-AI detection: Advanced agent-based analysis mcpify camel-detect /path/to/your/project --output config.json # AST detection: Fast, no API key required mcpify ast-detect /path/to/your/project --output config.json

2. View and validate the configuration

mcpify view config.json mcpify validate config.json

3. Start the MCP server

# Method 1: Using mcpify CLI (recommended) mcpify serve config.json # Method 2: Direct module invocation python -m mcpify serve config.json # HTTP mode for web integration mcpify serve config.json --mode streamable-http --port 8080

🎯 Detection Strategies

Auto-Detection (Recommended)

The auto-detect command intelligently selects the best available strategy:

mcpify detect /path/to/project

Selection Priority:

  1. Camel-AI (if installed) - Most comprehensive analysis
  2. OpenAI (if API key available) - Intelligent LLM-based detection
  3. AST (always available) - Reliable static analysis fallback

OpenAI Detection πŸ€–

Uses GPT-4 for intelligent project analysis:

# With API key parameter mcpify openai-detect /path/to/project --openai-key YOUR_API_KEY # Using environment variable export OPENAI_API_KEY="your-api-key" mcpify openai-detect /path/to/project

Advantages:

  • Understands complex code patterns and context
  • Generates detailed descriptions and parameter information
  • Excellent at identifying non-obvious API endpoints
  • Handles multiple programming languages

Camel-AI Detection πŸͺ

Uses Camel-AI's ChatAgent framework for comprehensive analysis:

# Install camel-ai first pip install camel-ai # Set OpenAI API key (required by Camel-AI) export OPENAI_API_KEY="your-api-key" # Run detection mcpify camel-detect /path/to/project --model-name gpt-4

Advantages:

  • Advanced agent-based reasoning
  • Deep project structure understanding
  • Excellent for complex multi-file projects
  • Sophisticated parameter extraction

AST Detection πŸ”

Fast, reliable static code analysis:

mcpify ast-detect /path/to/project

Advantages:

  • No API key required
  • Fast execution
  • Reliable for standard patterns (argparse, Flask routes)
  • Works offline

πŸ“‹ Usage Scenarios

For Developers (API Detection & Testing)

# Detect and test your APIs with different strategies mcpify detect my-project --output my-project.json # Auto-select best mcpify openai-detect my-project --output my-project-ai.json # AI-powered mcpify ast-detect my-project --output my-project-ast.json # Static analysis # Compare results mcpify view my-project.json mcpify serve my-project.json

For AI-Enhanced Detection

# Use OpenAI for intelligent analysis export OPENAI_API_KEY="your-key" mcpify openai-detect complex-project --output smart-config.json # Use Camel-AI for advanced agent analysis pip install camel-ai mcpify camel-detect complex-project --output agent-config.json

For Production Deployment

# Generate configuration with best available strategy mcpify detect production-app --output prod-config.json # Deploy as HTTP server mcpify serve prod-config.json --mode streamable-http --host 0.0.0.0 --port 8080

πŸ”§ Backend Types & Examples

FastAPI/Flask Web Applications

{ "name": "my-web-api", "description": "Web API server", "backend": { "type": "fastapi", "base_url": "http://localhost:8000" }, "tools": [ { "name": "get_user", "description": "Get user information", "endpoint": "/users/{user_id}", "method": "GET", "parameters": [ { "name": "user_id", "type": "string", "description": "User ID" } ] } ] }

Python Modules

{ "name": "my-python-tools", "description": "Python module backend", "backend": { "type": "python", "module_path": "./my_module.py" }, "tools": [ { "name": "calculate", "description": "Perform calculation", "function": "calculate", "parameters": [ { "name": "expression", "type": "string", "description": "Mathematical expression" } ] } ] }

Command-Line Tools

{ "name": "my-cli-tool", "description": "Command line tool backend", "backend": { "type": "commandline", "config": { "command": "python3", "args": ["./my_script.py"], "cwd": "." } }, "tools": [ { "name": "process_data", "description": "Process data with CLI tool", "args": ["--process", "{input_file}"], "parameters": [ { "name": "input_file", "type": "string", "description": "Input file path" } ] } ] }

βš™οΈ Detection Configuration

Available Detection Commands

# Auto-detection with strategy selection mcpify detect <project_path> [--output <file>] [--openai-key <key>] # Specific detection strategies mcpify openai-detect <project_path> [--output <file>] [--openai-key <key>] mcpify camel-detect <project_path> [--output <file>] [--model-name <model>] mcpify ast-detect <project_path> [--output <file>] # Configuration management mcpify view <config_file> [--verbose] mcpify validate <config_file> [--verbose] mcpify serve <config_file> [--mode <mode>] [--host <host>] [--port <port>]

Supported Backend Types

  • fastapi: FastAPI web applications
  • flask: Flask web applications
  • python: Python modules and functions
  • commandline: Command-line tools and scripts
  • external: External programs and services

Server Modes

  • stdio: Standard input/output (default MCP mode)
  • streamable-http: HTTP Server-Sent Events mode

Parameter Types

  • string, integer, number, boolean, array
  • Automatic type detection from source code
  • Custom validation rules
  • Enhanced type inference with AI detection

πŸš€ Server Configuration

Command Line Options

# Basic usage mcpify serve config.json # Specify server mode mcpify serve config.json --mode stdio # Default mode mcpify serve config.json --mode streamable-http # HTTP mode # Configure host and port (HTTP mode only) mcpify serve config.json --mode streamable-http --host localhost --port 8080 mcpify serve config.json --mode streamable-http --host 0.0.0.0 --port 9999 # Real examples with provided configurations mcpify serve examples/python-server-project/server.json mcpify serve examples/python-server-project/server.json --mode streamable-http --port 8888 mcpify serve examples/python-cmd-tool/cmd-tool.json --mode stdio

Server Modes Explained

STDIO Mode (Default)

  • Uses standard input/output for communication
  • Best for local MCP clients and development
  • No network configuration needed
mcpify serve config.json # or explicitly mcpify serve config.json --mode stdio

Streamable HTTP Mode

  • Uses HTTP with Server-Sent Events
  • Best for web integration and remote clients
  • Requires host and port configuration
# Local development mcpify serve config.json --mode streamable-http --port 8080 # Production deployment mcpify serve config.json --mode streamable-http --host 0.0.0.0 --port 8080

πŸ“ Examples

Explore the examples/ directory for ready-to-use configurations:

# Try different detection strategies on examples mcpify detect examples/python-server-project --output server-auto.json mcpify openai-detect examples/python-cmd-tool --output cmd-openai.json mcpify ast-detect examples/python-server-project --output server-ast.json # View example configurations mcpify view examples/python-server-project/server.json mcpify view examples/python-cmd-tool/cmd-tool.json # Test with examples - STDIO mode (default) mcpify serve examples/python-server-project/server.json mcpify serve examples/python-cmd-tool/cmd-tool.json # Test with examples - HTTP mode mcpify serve examples/python-server-project/server.json --mode streamable-http --port 8888 mcpify serve examples/python-cmd-tool/cmd-tool.json --mode streamable-http --port 9999

πŸ§ͺ Development

Running Tests

# Run all tests python -m pytest tests/ -v # Run with coverage python -m pytest tests/ --cov=mcpify --cov-report=html # Run specific tests python -m pytest tests/test_detect.py -v

Development Setup

git clone https://github.com/your-username/mcpify.git cd mcpify pip install -e ".[dev]" # Install optional dependencies for full functionality pip install openai camel-ai python -m pytest tests/ -v

Available Commands

MCPify CLI Commands

# Detection commands mcpify detect <project_path> [--output <file>] [--openai-key <key>] mcpify openai-detect <project_path> [--output <file>] [--openai-key <key>] mcpify camel-detect <project_path> [--output <file>] [--model-name <model>] mcpify ast-detect <project_path> [--output <file>] # Configuration commands mcpify view <config_file> [--verbose] mcpify validate <config_file> [--verbose] # Server commands mcpify serve <config_file> [--mode <mode>] [--host <host>] [--port <port>]

πŸš€ Deployment Options

1. Package Installation

pip install mcpify # Use mcpify serve for all scenarios

2. Module Invocation

# Run as Python module python -m mcpify serve config.json python -m mcpify serve config.json --mode streamable-http --port 8080

3. Docker Deployment

FROM python:3.10-slim COPY . /app WORKDIR /app RUN pip install . # Optional: Install AI detection dependencies # RUN pip install openai camel-ai CMD ["mcpify", "serve", "config.json", "--mode", "streamable-http", "--host", "0.0.0.0", "--port", "8080"]

4. Production HTTP Server

# Start HTTP server for production mcpify serve config.json --mode streamable-http --host 0.0.0.0 --port 8080 # With custom configuration mcpify serve config.json --mode streamable-http --host 127.0.0.1 --port 9999

🀝 Contributing

We welcome contributions! Please see our development setup above and:

  • Fork the repository
  • Create a feature branch
  • Add tests for new functionality
  • Submit a pull request

Code Quality

# Linting and formatting ruff check mcpify/ ruff format mcpify/ # Type checking mypy mcpify/

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ”— Related Projects

πŸ“ž Support

  • Documentation: See docs/usage.md for detailed usage instructions
  • Examples: Check the examples/ directory for configuration templates
  • Issues: GitHub Issues
  • Discussions: GitHub Discussions

About

MCPify all the projects!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages