MCP服务器自动生成工具

AutoMCP是一个通过OpenAPI/Swagger文档自动生成生产就绪的MCP服务器的AI驱动平台,适用于快速API服务部署。

  • by pranavkale07
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 pranavkale07/AutoMCP

使用说明

自动MCP🚀

自动MCP 是一个功能强大的平台,可以自动生成即用型 模型上下文协议(MCP) 后端API文档中的服务器。只需上传您的OpenAPI、Swagger或Postman收藏,AutoMCP就会使用谷歌的Gemini AI生成一个完整的、可用于生产的MCP服务器包。

✨ 特性

  • 🤖 人工智能发电:使用Google Gemini AI生成高质量的MCP服务器代码
  • 📚 支持多种格式:支持OpenAPI 3.x、Swagger 2.x和Postman集合
  • 🔧 完成包生成:生成具有以下功能的完整MCP服务器:
    • TypeScript工具实现
    • 类型定义
    • 配置文件
    • 带有依赖项的Package.json
    • 全面自述
  • 🎯 智能解析:自动提取端点、参数、模式和身份验证方案
  • 📦 随时可用:生成的包可以立即部署
  • 🔒 安全:本地文件存储,无云依赖
  • 🚀 快速:高效的解析和代码生成管道

📋 先决条件

🛠️ 安装

  1. 克隆仓库

    git clone <repository-url>
    cd AutoMCP
    
  2. 安装依赖项

    npm install
    
  3. 设置环境变量

    cp .env.example .env
    

    编辑 .env 并添加您的Gemini API密钥:

    PORT=3000
    GEMINI_API_KEY=your_gemini_api_key_here
    GEMINI_MODEL=gemini-1.5-pro
    GEMINI_MAX_TOKENS=32768
    MAX_FILE_SIZE=10485760
    
  4. 构建项目

    npm run build
    

⚙️ 配置

环境变量

变量 描述 默认值
PORT 服务器端口 3000
GEMINI_API_KEY Google Gemini API密钥 必需
GEMINI_MODEL 使用Gemini模型 gemini-1.5-pro
GEMINI_TEMPERATURE 发电温度 0.7
GEMINI_MAX_TOKENS 每个请求的最大令牌数 32768
MAX_FILE_SIZE 最大上传文件大小(字节) 10485760 (10 MB)
NODE_ENV 环境模式 development

支持的Gemini型号

  • gemini-1.5-pro (推荐)
  • gemini-pro
  • gemini-1.5-flash

要列出可用型号:

npm run list-models

🚀 用法

启动服务器

开发模式:

npm run dev

生产方式:

npm run build
npm start

服务器将于启动 http://localhost:3000

API工作流

1.上传API文档

curl -X POST http://localhost:3000/api/upload \
  -F "file=@your-api-docs.json"

答复:

{
  "status": "success",
  "fileId": "8f4be01f-236d-4f67-8b70-6cf347b81d12",
  "filename": "pet-store-openapi.json",
  "metadata": {
    "title": "Swagger Petstore",
    "version": "1.0.0",
    "endpoints": 19
  }
}

2.生成MCP服务器

curl -X POST http://localhost:3000/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "fileId": "8f4be01f-236d-4f67-8b70-6cf347b81d12"
  }'

答复:

{
  "status": "success",
  "packageId": "8f4be01f-236d-4f67-8b70-6cf347b81d12",
  "packageName": "mcp-swagger-petstore---openapi-3-0",
  "downloadUrl": "/api/download/8f4be01f-236d-4f67-8b70-6cf347b81d12",
  "toolsGenerated": 19
}

3.检查发电状态

curl http://localhost:3000/api/status/8f4be01f-236d-4f67-8b70-6cf347b81d12

4.下载生成的包

curl -O http://localhost:3000/api/download/8f4be01f-236d-4f67-8b70-6cf347b81d12

或在浏览器中打开:

http://localhost:3000/api/download/8f4be01f-236d-4f67-8b70-6cf347b81d12

使用邮递员

导入提供的Postman收藏(AutoMCP.postman_collection.json)为了便于测试。看 POSTMAN_SETUP.md 了解详情。

📚 API文档

端点

GET /api/health

健康检查端点。

答复:

{
  "status": "ok",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "uptime": 3600
}

POST /api/upload

上传API文档文件(OpenAPI/Swagger/Postman)。

请求:

  • 方法: POST
  • 内容类型: multipart/form-data
  • 主体: file (文件字段)

答复:

{
  "status": "success",
  "fileId": "uuid",
  "filename": "api-docs.json",
  "metadata": { ... }
}

POST /api/generate

从上传的文件生成MCP服务器。

请求:

{
  "fileId": "uuid"
}

答复:

{
  "status": "success",
  "packageId": "uuid",
  "packageName": "mcp-api-name",
  "downloadUrl": "/api/download/uuid",
  "toolsGenerated": 19
}

GET /api/download/:id

将生成的MCP服务器包下载为ZIP格式。

答复:

  • 内容类型: application/zip
  • 文件: mcp-server-package.zip

GET /api/status/:id

获取包的生成状态。

答复:

{
  "status": "completed",
  "packageId": "uuid",
  "packageName": "mcp-api-name",
  "toolsGenerated": 19,
  "createdAt": "2024-01-15T10:30:00.000Z"
}

🏗️ 建筑

AutoMCP
├── API Layer (Express)
│   ├── Upload Controller
│   ├── Generate Controller
│   └── Download Controller
├── Parser Layer
│   ├── OpenAPI Parser
│   ├── Schema Resolver
│   └── Data Transformer
├── Gemini Integration
│   ├── Gemini Client (with retry logic)
│   ├── Code Generator
│   └── Prompt Templates
├── Generator Layer
│   ├── MCP Package Generator
│   └── Config Template Generator
└── Storage Layer
    ├── File Storage (Local)
    └── Package Storage (Local)

数据流

  1. 上传 → 文件已保存到临时存储
  2. 解析 → OpenAPI/Swagger解析为结构化格式
  3. 变换 → 针对Gemini提示进行标准化的数据
  4. 生成 → Gemini AI生成MCP服务器代码
  5. 组装 → 代码组装成完整的包
  6. 包裹 → ZIP存档已创建
  7. 下载 → 软件包可供下载

🧪 测试生成的MCP服务器

1.取出并安装

unzip mcp-server-package.zip
cd mcp-server-package
npm install

2.配置

创建 .env 文件:

API_BASE_URL=https://your-api.com/v2
API_KEY=your_api_key

3.建造

npm run build

4.使用MCP检查员进行测试

npx @modelcontextprotocol/inspector node dist/index.js

这将在以下位置打开web UI http://localhost:5173 您可以在其中测试所有生成的工具。

5.测试单个工具

node -e "
import('./dist/tools/getPetById.js').then(m => 
  m.getPetById({petId: 1})
    .then(console.log)
    .catch(console.error)
);
"

🔧 发展

项目结构

src/
├── api/              # API routes and controllers
├── config/           # Configuration management
├── gemini/           # Gemini AI integration
├── generators/       # MCP package generators
├── middleware/       # Express middleware
├── parsers/          # API documentation parsers
├── transformers/     # Data transformers
├── types/            # TypeScript type definitions
├── utils/            # Utility functions
└── server.ts         # Main server entry point

开发命令

# Development with hot reload
npm run dev

# Build TypeScript
npm run build

# Production start
npm start

# List available Gemini models
npm run list-models

代码风格

  • 具有严格模式的TypeScript
  • ES2020目标
  • CommonJS模块
  • API的Express.js
  • 异步/等待异步操作

🐛 故障排除

常见问题

1.Gemini API错误

错误: 404 Not Found - models/gemini-X is not found

解决方案:

  • 查看可用型号: npm run list-models
  • 更新 GEMINI_MODEL 在 .env 到一个有效的模型
  • 系统将自动检测并使用可用型号

2.文件上传错误

错误: File too large

解决方案:

  • 增加 MAX_FILE_SIZE 在 .env
  • 或者压缩API文档文件

3.发电超时

错误: Generation timeout

解决方案:

  • 增加 GEMINI_MAX_TOKENS 在 .env
  • 将大型API拆分为较小的服务
  • 检查Gemini API配额限制

4.生成的MCP服务器错误

错误: API error: 500 Internal Server Error

解决方案:

  • 检查生成的API基础URL config.ts
  • 验证API身份验证凭据
  • 使用直接测试API curl

调试模式

启用详细日志记录:

DEBUG=* npm run dev

📝 生成的包结构

mcp-api-name/
├── src/
│   ├── index.ts          # MCP server entry point
│   ├── config.ts         # Configuration
│   ├── types.ts          # TypeScript types
│   └── tools/            # Generated tool implementations
│       ├── getPetById.ts
│       ├── addPet.ts
│       └── ...
├── package.json          # Dependencies
├── tsconfig.json         # TypeScript config
├── .env.example          # Environment template
├── .gitignore
└── README.md             # Usage instructions

🤝 贡献

欢迎投稿!请按照以下步骤操作:

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

📄 许可证

ISC许可证

🙏 致谢

📞 支持

对于问题、疑问或贡献:

  • 在GitHub上打开一个问题
  • 检查现有文档
  • 查看故障排除部分

🗺️ 路线图

  • []支持邮递员收藏
  • []Swagger 2.x支持改进
  • []自定义提示模板
  • []批量生成
  • []云存储集成
  • []Web UI仪表板
  • []API版本控制支持
  • []身份验证方案改进

建于❤️ 为了黑客马拉松