API转换与生命周期管理工具

MCPgen是一个自动化工具,可将Postman集合、数据库模式和API文档转换为可工作的MCP服务器,并提供实时聊天、安全仪表盘和自动清理等高级功能。

  • by batuhanilgarr
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 batuhanilgarr/MCPGen

使用说明

MCPgen-MCP中心和生命周期经理

自动将Postman集合、数据库架构和API文档转换为工作的MCP服务器。 现在有了在线聊天平台、安全仪表板和自动清理功能!

特性 • 快速开始 • 现场演示 • 文档


🚀 特性

核心能力

功能 状态 描述
邮差收集解析器 ✅ 将Postman JSON(v2.1)转换为MCP工具
数据库架构解析器 ✅ 从PostgreSQL/MySQL/SQLite模式生成CRUD工具
OpenAPI/Swagger支持 ✅ 导入OpenAPI 3.0 YAML/JSON规范
GraphQL架构解析器 ✅ 将GraphQL模式转换为MCP工具(查询、修改、订阅)
cURL命令分析器 ✅ 从cURL命令中提取端点(单个或批处理)
失眠收集 ✅ 进口失眠收款出口
HAR文件支持 ✅ 从浏览器网络日志中解析HTTP存档文件
WSDL/SOAP解析器 ✅ 支持SOAP web服务
API蓝图 ✅ 导入API蓝图降价文档
RAML支持 ✅ 导入RAML YAML规范

高级功能

功能 状态 描述
在线聊天游乐场 ✅ Qwen3支持MCP工具的自然语言聊天
安全仪表版 ✅ 使用循环进度指标进行实时代码质量分析
AI自动修复 ✅ 自动修复硬编码的秘密和安全问题
可视化工具图 ✅ 用户的React Flow可视化→ LLM → Tool → 数据库流
实时服务器日志 ✅ 支持WebSocket流的Xterm.js终端
自动清理 ✅ 非活动服务器的后台生命周期管理
代码质量分数 ✅ 带有徽章的安全、性能、最佳实践指标
共享和嵌入 ✅ 使用唯一链接和嵌入代码共享MCP服务器
MCP服务器管理器 ✅ 直接从UI运行和停止服务器
IDE集成 ✅ Cursor、Windsurf、Claude Desktop的一键设置

智能代码生成

  • ✅ 生产就绪的FastMCP代码 与:
    • 自动函数命名(snake_case转换)
    • 具有重试逻辑的共享助手函数
    • 速率限制的指数回退
    • 全面的错误处理
    • 键入提示和文档字符串

身份验证配置文件

  • ✅ 预配置身份验证 用于:
    • Microsoft Graph API
    • 条纹API
    • OpenAI API
    • 基本的HTTP认证
    • 自定义身份验证

🎮 现场演示

直接在浏览器中尝试这些现成的示例。点击任何演示以自动生成代码并跳转到聊天游乐场:

⚽ Futbol市场演示

“梅西多少钱?” -与Qwen3 LLM进行自然语言聊天,从模拟SQLite数据库中查询足球运动员的价格。AI驱动的MCP工具调用的完美示例。

特征:

  • Qwen3:32b自然语言理解法学硕士整合
  • 足球运动员数据模拟SQLite数据库
  • 实时聊天界面
  • 显示数据流的可视化工具图

☀️ 天气 API 演示

OpenWeatherMap-风格的天气API集成。了解Postman集合如何通过身份验证和错误处理转换为MCP服务器。

特征:

  • OpenAPI风格的端点定义
  • 查询参数处理
  • 环境变量配置

🛒 E-Ticaret CRM演示

具有客户ID、日期范围和状态过滤的订单管理和查询系统。演示CRUD操作和复杂查询。

特征:

  • 多种端点类型(GET、PATCH)
  • 查询参数过滤
  • 状态管理

即将推出

  • 🔄 AI自然语言 -描述你想要什么,AI创建你的MCP服务器
  • 🔄 逆向工程 -从实时API URL中发现终结点
  • 🔄 多源聚合 -将多个源合并到一个统一的服务器中
  • 🔄 Visual API生成器 -拖放可直观地创建API端点
  • 🔄 多语言SDK -生成TypeScript、Go、Rust SDK
  • 🔄 测试生成 -自动生成单元和集成测试
  • 🔄 Webhook支持 -生成webhook处理程序
  • 🔄 速率限制 -内置速率限制支持
  • 🔄 缓存 -响应缓存策略
  • 🔄 模板库 -预构建模板和社区市场
  • 🔄 一键部署 -一键部署到Vercel、Railway、Render

📋 目录

🛠️ 安装

先决条件

  • Node.js 18+和npm
  • python 3.10+(FastMCP SDK所需)
  • PostgreSQL 或 MySQL (可选,用于数据库模式解析)

后端设置

cd backend
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
uvicorn main:app --reload --port 8000

后端将运行在 http://localhost:8000

前端设置

cd frontend
npm install
npm run dev

前端将运行在 http://localhost:3000

🚀 快速开始

  1. 启动后端

    cd backend
    source venv/bin/activate
    uvicorn main:app --reload --port 8000
    
  2. 启动前端

    cd frontend
    npm run dev
    
  3. 打开浏览器 导航至 http://localhost:3000

  4. 上传邮差收藏

    • 点击“上传邮递员JSON”
    • 选择您导出的Postman收藏(v2.1格式)
    • 等待分析完成
  5. 自定义和生成

    • 选择要转换的端点
    • 配置环境变量(BASE_URL、API_KEY等)
    • 选择身份验证配置文件(如果需要)
    • 点击“生成代码”
  6. 测试和部署

    • 使用真实的API调用测试端点
    • 查看带有循环进度指示器的代码质量分数和徽章
    • 使用AI自动修复自动解决安全问题
    • 使用自然语言与您的MCP服务器聊天(Qwen3供电)
    • 在Xterm.js终端查看实时服务器日志
    • 探索显示数据流的可视化工具图
    • 使用唯一链接共享您的服务器
    • 直接从UI运行服务器(代码生成时自动启动)
    • 下载生成的代码
    • 复制 .env.example 和 config.json
    • 与您的IDE集成(Cursor、Windsurf、Claude Desktop)

📖 用法

CLI工具(命令行)

MCPgen包括一个强大的CLI工具,用于从命令行生成MCP服务器。

安装

cd backend
source venv/bin/activate
pip install -r requirements.txt

基本用法

# Postman collection
python cli.py postman collection.json -o output/

# OpenAPI spec
python cli.py openapi api.yaml -o output/ --base-url https://api.example.com

# GraphQL schema
python cli.py graphql schema.graphql -o output/

# Database schema
python cli.py database schema.sql -o output/ --db-type postgresql

高级选项

# With environment variables
python cli.py postman collection.json -o output/ \
  --env BASE_URL=https://api.example.com API_KEY=secret

# With authentication profile
python cli.py openapi api.yaml -o output/ \
  --auth-profile microsoft-graph

# Interactive endpoint selection
python cli.py postman collection.json -o output/ -i

# Select specific endpoints
python cli.py postman collection.json -o output/ \
  --select endpoint1 endpoint2

# Select all endpoints (non-interactive)
python cli.py postman collection.json -o output/ -a

支持的格式

  • postman -邮差收藏v2.1 JSON
  • openapi -OpenAPI 3.0 YAML/JSON
  • graphql -GraphQL架构SDL
  • curl -cURL命令(单个或批处理)
  • insomnia -失眠集合JSON
  • har -HTTP存档文件
  • wsdl -WSDL/SOAP文件
  • api-blueprint -API蓝图降价
  • raml -RAML YAML文件
  • database -SQL架构文件

输出文件

CLI在输出目录中生成三个文件:

  • mcp_server.py -生成的MCP服务器代码
  • .env.example -环境变量模板
  • config.json -IDE配置(光标、Windsurf、克劳德桌面)

邮递员收款工作流程

  1. 出口邮差收藏

    • 邮递员:收藏→ 出口→ 收藏v2.1
    • 另存为JSON文件
  2. 上传到MCPgen

    • 拖放或点击上传
    • MCPgen自动检测基本URL
  3. 分析端点

    • 查看所有端点、方法和参数
    • 查看检测到的集合和文件夹
  4. 定制

    • 选择要转换的端点
    • 输入环境变量:
      • BASE_URL -API基本URL
      • API_KEY -API身份验证密钥
      • AUTH_TOKEN -持有者代币
    • 选择身份验证配置文件(可选)
  5. 测试

    • 选择端点
    • 输入参数
    • 使用真实的API调用进行测试
    • 查看请求/响应详细信息
  6. 部署

    • 下载生成的Python代码
    • 复制 .env.example 到 .env
    • 填写您的凭据
    • 复制 config.json 到IDE配置
    • 运行MCP服务器

数据库架构工作流

  1. 连接到数据库

    • 输入连接详细信息(PostgreSQL/MySQL)
    • 或者上传SQL架构文件
  2. 选择表

    • 选择表以生成CRUD操作
    • 预览生成的工具
  3. 生成和部署

    • 下载CRUD工具代码
    • 配置数据库连接
    • 部署到IDE

📦 支持的格式

格式 状态 描述
邮差收藏v2.1 ✅ 完全支持身份验证、标头、正文参数
OpenAPI 3.0✅ 导入OpenAPI/Swagger的YAML和JSON规范
GraphQL架构 ✅ 将GraphQL模式转换为MCP工具(查询、修改、订阅)
cURL命令 ✅ 解析单个或批处理cURL命令
失眠收集 ✅ 进口失眠收款出口
HAR文件 ✅ 从浏览器网络日志中解析HTTP存档文件
WSDL/SOAP ✅ 支持SOAP web服务
API蓝图 ✅ 导入API蓝图降价文档
拉姆尔 ✅ 导入RAML YAML规范
PostgreSQL架构 ✅ CRUD操作生成
MySQL架构 ✅ CRUD操作生成
SQLite架构 ✅ CRUD操作生成
AI自然语言🔄 即将推出-描述你想要什么,AI生成MCP服务器
逆向工程 🔄 即将推出-从实时API URL中发现端点
多源聚合 🔄 即将推出-将多个源合并到一个统一的服务器中
Visual API生成器 🔄 即将推出-拖放以可视化方式创建API端点

🔐 认证

支持的身份验证方法

  1. 持有者令牌

    AUTH_TOKEN=your-token-here
    
  2. API密钥

    API_KEY=your-api-key-here
    
  3. 基本认证

    BASIC_AUTH_USERNAME=username
    BASIC_AUTH_PASSWORD=password
    
  4. Microsoft Graph

    MICROSOFT_GRAPH_CLIENT_ID=your-client-id
    MICROSOFT_GRAPH_CLIENT_SECRET=your-client-secret
    MICROSOFT_GRAPH_TENANT_ID=your-tenant-id
    
  5. 条纹

    STRIPE_API_KEY=your-stripe-key
    STRIPE_SECRET_KEY=your-stripe-secret
    
  6. 开放人工智能

    OPENAI_API_KEY=your-openai-key
    

自定义身份验证

您可以在中添加自定义身份验证配置文件 backend/auth_profiles.py

📚 api参考

后端端点

POST /api/analyze/postman

分析Postman集合JSON

请求:

{
  "file": "multipart/form-data"
}

答复:

{
  "endpoints": [...],
  "collections": [...],
  "base_url": "https://api.example.com"
}

POST /api/generate/mcp

生成MCP服务器代码

请求:

{
  "endpoints": [...],
  "selected_endpoints": ["endpoint1", "endpoint2"],
  "env_vars": {
    "BASE_URL": "https://api.example.com",
    "API_KEY": "..."
  },
  "auth_profile": "basic_auth"
}

答复:

{
  "code": "generated python code...",
  "env_example": "BASE_URL=...",
  "config_json": "{...}"
}

POST /api/test/endpoint

使用实际API调用测试端点

请求:

{
  "endpoint": {...},
  "params": {...},
  "env_vars": {...}
}

GET /api/auth-profiles

获取可用的身份验证配置文件

POST /api/analyze/db-schema

分析数据库架构

POST /api/generate/db-crud

从数据库模式生成CRUD工具

POST /api/share/create

为MCP服务器创建可共享链接

请求:

{
  "code": "generated python code...",
  "metadata": {
    "title": "My MCP Server",
    "description": "Description here"
  },
  "expires_in_days": 30
}

答复:

{
  "share_id": "abc123def456",
  "share_url": "https://mcpgen.com/share/abc123def456",
  "embed_code": "<iframe src=\"...\"></iframe>",
  "qr_code_url": "https://mcpgen.com/api/share/abc123def456/qr"
}

GET /api/share/{share_id}

获取共享MCP服务器代码

POST /api/analyze/quality

分析代码质量和返回分数

请求:

{
  "code": "generated python code..."
}

答复:

{
  "score": 95.5,
  "badges": ["🏆 Production Ready", "🔒 Security First", "✨ Best Practices"],
  "metrics": {
    "security": 92.0,
    "performance": 88.0,
    "best_practices": 95.0,
    "complexity": 85.0,
    "documentation": 90.0
  },
  "suggestions": ["Add more type hints", "Improve error handling"]
}

POST /api/server/start

启动生成的MCP服务器

请求:

{
  "code": "generated python code...",
  "env_vars": {
    "BASE_URL": "https://api.example.com",
    "API_KEY": "..."
  },
  "server_name": "my-server"
}

POST /api/server/stop/{server_id}

停止正在运行的MCP服务器

GET /api/server/status/{server_id}

获取服务器状态

GET /api/server/list

列出所有正在运行的服务器

GET /api/demo/{demo_type}

准备好使用演示示例

演示类型:

  • football_market -足球运动员价格查询演示
  • weather_api -Weather API集成演示
  • ecommerce_crm -电子商务订单管理演示

答复:

{
  "code": "generated python code...",
  "env_example": "BASE_URL=...",
  "config_json": "{...}",
  "metadata": {
    "title": "Demo Title",
    "description": "Demo description",
    "demo_type": "football_market"
  }
}

POST /api/ai/chat-mcp

使用自然语言与MCP服务器聊天

请求:

{
  "server_id": "server-uuid",
  "message": "Messi kaç para?"
}

答复:

{
  "tool_call": {
    "tool_name": "get_player_price",
    "arguments": {"name": "Messi"}
  },
  "tool_result": {
    "status": "ok",
    "player": "Lionel Messi",
    "price": 100.0,
    "currency": "M EUR"
  },
  "assistant_message": "Lionel Messi için tahmini fiyat 100.0M EUR"
}

POST /api/analyze/quality/auto-fix

自动修复生成代码中的安全问题

请求:

{
  "code": "generated python code..."
}

答复:

{
  "fixed_code": "updated code with os.getenv()...",
  "changed": true,
  "analysis": {
    "score": 95.0,
    "metrics": {...},
    "issues": []
  }
}

GET /ws/server/{server_id}/logs

用于流式传输实时MCP服务器日志的WebSocket端点

连接:

ws://localhost:8000/ws/server/{server_id}/logs

消息格式:

{
  "type": "logs",
  "lines": ["[13:54:32] INFO Starting MCP server..."]
}

💡 例子

示例1:邮差收藏

{
  "info": {
    "name": "My API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Get User",
      "request": {
        "method": "GET",
        "url": "{{base-url}}/users/:id"
      }
    }
  ]
}

生成代码:

@mcp.tool()
async def get_user(id: str) -> dict:
    """
    Get User
    
    Method: GET
    URL: {BASE_URL}/users/{id}
    """
    url = f"{BASE_URL}/users/{id}"
    headers = {"Content-Type": "application/json"}
    
    return await make_request(
        method="GET",
        url=url,
        headers=headers
    )

示例2:数据库架构

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2),
    description TEXT
);

生成代码:

@mcp.tool()
async def create_product(
    name: str,
    price: Optional[float] = None,
    description: Optional[str] = None
) -> dict:
    """Create a new Product record."""
    # Database insert logic
    ...

🏗️ 项目结构

MCPgen/
├── frontend/                 # Next.js frontend
│   ├── app/                 # App Router pages
│   │   ├── page.tsx        # Main dashboard with landing page
│   │   ├── layout.tsx     # Root layout with Header/Footer
│   │   ├── docs/           # Documentation page
│   │   ├── about/          # About page
│   │   └── examples/       # Examples page
│   ├── components/
│   │   ├── layout/         # Header, Footer
│   │   ├── steps/          # Stepper components
│   │   │   ├── upload-step.tsx
│   │   │   ├── analyze-step.tsx
│   │   │   ├── customize-step.tsx
│   │   │   ├── test-step.tsx
│   │   │   └── deploy-step.tsx  # Chat playground, security dashboard
│   │   ├── mcp-server-terminal.tsx  # Xterm.js terminal component
│   │   ├── seo/            # SEO components
│   │   └── ui/             # Shadcn UI components
│   └── package.json
├── backend/                # FastAPI backend
│   ├── main.py             # FastAPI app with WebSocket support
│   ├── generator.py         # Code generator with path param support
│   ├── demo_examples.py     # Ready-to-use demo generators
│   ├── llm_service.py      # Qwen3 LLM integration
│   ├── auth_profiles.py     # Auth profiles
│   ├── db_parser.py         # DB schema parser
│   ├── openapi_parser.py    # OpenAPI parser
│   ├── graphql_parser.py    # GraphQL parser
│   ├── curl_parser.py       # cURL parser
│   ├── insomnia_parser.py  # Insomnia parser
│   ├── har_parser.py        # HAR parser
│   ├── wsdl_parser.py       # WSDL parser
│   ├── api_blueprint_parser.py # API Blueprint parser
│   ├── raml_parser.py       # RAML parser
│   ├── share_manager.py     # Share & embed manager
│   ├── code_quality.py      # Code quality analyzer with auto-fix
│   ├── mcp_server_manager.py # MCP server manager with auto-cleanup
│   ├── cli.py               # CLI tool
│   └── requirements.txt
├── README.md               # This file
├── Dev_Notes.md           # Development notes
├── HERO_IMAGE_PROMPT.md   # Hero image generation prompts
└── FEATURES.md             # Feature documentation

🤝 贡献

欢迎投稿!请在提交PR之前阅读我们的投稿指南。

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🙏 致谢

🎨 英雄形象/视频概念

英雄形象生成提示:

Modern SaaS landing page hero image: A sleek, futuristic interface showing code transformation. 
On the left: Postman collection JSON file with colorful syntax highlighting. 
In the center: An animated arrow/transformation effect with particles and code snippets flowing. 
On the right: A clean MCP server code editor with Python syntax, showing "@mcp.tool()" decorators. 
Background: Gradient from dark blue to purple, subtle grid pattern. 
Style: Clean, modern, tech-focused, professional SaaS aesthetic. 
Light rays emanating from the transformation point. 
Minimalist, high contrast, suitable for dark mode.

视频动画概念:

Short 10-15 second loop:
1. Postman JSON file fades in (0-2s)
2. Code transformation animation with particles (2-5s)
3. MCP server code appears with syntax highlighting (5-8s)
4. Chat UI overlay appears showing "Messi kaç para?" → "Lionel Messi için tahmini fiyat 100.0M EUR" (8-12s)
5. Smooth fade to logo/branding (12-15s)
6. Loop back to start

📞 支持和链接


由...制作❤️ MCPgen团队

在几秒钟内将您的API转换为支持AI的MCP服务器

🚀 开始使用 • 📖 文档 • 💻 GitHub