使用说明
Cronos402 OpenAPI MCP转换器
自动将OpenAPI规范转换为模型上下文协议(MCP)工具。
生产URL:https://openapi.cronos402.dev
概述
OpenAPI MCP服务弥合了传统REST API和模型上下文协议之间的差距。它读取OpenAPI/Swagger规范并动态生成MCP工具,允许AI代理通过标准化的MCP接口与任何REST API交互。这使得AI代理能够与现有API进行即时集成,而无需手动开发包装器。
建筑
- 框架:使用TypeScript的Express.js
- 解析器:OpenAPI 3.x规范解析器
- 发电机:动态MCP工具生成
- 验证:请求/响应的JSON模式验证
- 缓存:性能规格缓存
- 协议:模型上下文协议(MCP)HTTP传输
特性
- OpenAPI到MCP工具的自动转换
- 支持OpenAPI 3.x规范
- 从API端点生成动态工具
- 请求/响应验证
- 身份验证标头转发
- 参数类型映射
- 错误处理和转换
- 规范缓存
- 与所有MCP客户端兼容
快速开始
发展
pnpm install
pnpm dev
服务器在上运行 http://localhost:3001
构建
pnpm build
pnpm start
环境变量
PORT=3001
CACHE_ENABLED=true
CACHE_TTL=3600
用法示例
将OpenAPI规范转换为MCP
提供OpenAPI规范URL:
curl -X POST https://openapi.cronos402.dev/convert \
-H "Content-Type: application/json" \
-d '{
"openApiUrl": "https://api.example.com/openapi.json"
}'
该服务在以下位置生成MCP端点:
https://openapi.cronos402.dev/mcp/{spec-id}
使用CLI连接
npx cronos402 connect --urls https://openapi.cronos402.dev/mcp/your-spec-id
Claude桌面配置
{
"mcpServers": {
"My REST API": {
"command": "npx",
"args": [
"cronos402",
"connect",
"--urls",
"https://openapi.cronos402.dev/mcp/spec-id",
"--api-key",
"your_api_key"
]
}
}
}
编程访问
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(
new URL('https://openapi.cronos402.dev/mcp/spec-id')
);
const client = new Client(
{ name: 'my-app', version: '1.0.0' },
{ capabilities: {} }
);
await client.connect(transport);
// List all tools generated from OpenAPI spec
const tools = await client.listTools();
// Call REST API endpoint as MCP tool
const result = await client.callTool({
name: 'get_users',
arguments: { page: 1, limit: 10 }
});
API终点
POST/转换
将OpenAPI规范转换为MCP。
请求:
{
"openApiUrl": "https://api.example.com/openapi.json",
"name": "My API",
"authentication": {
"type": "bearer",
"token": "optional_token"
}
}
答复:
{
"specId": "abc123",
"mcpUrl": "https://openapi.cronos402.dev/mcp/abc123",
"toolCount": 15
}
GET/mcp/:规范
转换规范的MCP端点。
GET/规格/:规格ID
检索规范元数据。
删除/规格/:规格ID
删除缓存的规范。
运作原理
转换过程
- 解析:阅读OpenAPI规范
- 验证:确保规范是有效的OpenAPI 3.x
- 生成:为每个端点创建MCP工具
- 工具名称来自
operationId - 来自路径/查询/正文参数的参数
- 来自请求/响应定义的架构
- 工具名称来自
- 缓存:存储规范和工具
- 服务:为工具调用提供MCP端点
工具映射
OpenAPI端点映射到MCP工具:
# OpenAPI
paths:
/users/{id}:
get:
operationId: getUser
parameters:
- name: id
in: path
schema:
type: string
成为MCP工具:
{
"name": "getUser",
"description": "Get user by ID",
"inputSchema": {
"type": "object",
"properties": {
"id": { "type": "string" }
},
"required": ["id"]
}
}
请求流
MCP Client → OpenAPI-MCP → REST API
↓
Convert tool call to HTTP request
↓
Execute REST call
↓
Convert response to MCP format
认证
转换器支持身份验证转发:
{
"openApiUrl": "https://api.example.com/openapi.json",
"authentication": {
"type": "bearer",
"token": "your_token"
}
}
令牌转发到 Authorization 头到API。
测试
# Run all tests
pnpm test
# Watch mode
pnpm test:watch
# Coverage
pnpm test:coverage
部署
生产建设
pnpm build
NODE_ENV=production pnpm start
码头工人
FROM node:20-alpine
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
EXPOSE 3001
CMD ["pnpm", "start"]
环境要求
- Node.js 20+
- 缓存Redis(可选)
- 生产环境中的HTTPS端点
监控
GET /health-服务健康检查GET /metrics-普罗米修斯指标GET /specs-列出所有缓存的规范
局限性
- 仅限OpenAPI 3.x(不支持2.0)
- 大规格可能会影响性能
- 仅限于承载/API密钥的身份验证类型
- 不完全支持文件上传端点
资源
- 文档: docs.cronos402.dev/openapi-mcp
- 软件开发工具包: npmjs.com/package/cronos402
- GitHub: github/Cronos402/openapi-mcp
- OpenAPI规范
- 模型上下文协议
许可证
麻省理工学院
