使用说明
开放API MCP服务器
一个模型上下文协议(MCP)服务器,为人工智能助手提供访问OpenAPI规范的途径,并支持OAuth 2.0认证流程。
特性/功能
- 📖 书籍 OpenAPI 支持加载并解析OpenAPI 2.0、3.0和3.1规范
- 🔐 OAuth 2.0 认证全面支持密码模式、客户端凭证模式和授权码模式
- 🔑 翻译成中文是:钥匙 多种认证方法API密钥、Bearer令牌、基本认证和OAuth 2.0
- 🔍 翻译为中文是:放大镜(或“放大查看”) 智能搜索根据路径、方法、标签或关键词搜索和筛选API端点
- 📝 翻译成中文是:📝(这个符号本身没有特定的中文翻译,它通常表示“待办事项”或“笔记”的意思,可以理解为“待办事项”或“笔记”)。 详细模式/详细架构获取任意端点的完整请求/响应模式
- 🚀 表情符号“🚀”通常表示火箭、快速上升或飞速发展,也可以用来形容事情进展迅速或充满活力。在中文中,可以直接用“🚀”这个符号来传达同样的意思,或者根据上下文用相应的文字描述,比如“火箭”、“飞速上升”、“快速发展”等。 API执行直接调用API,自动进行身份验证
- 📊(表格/数据图表) 请求记录跟踪所有API调用并记录详细日志
安装
选项1:使用npx(推荐)
无需安装!使用 npx 直接运行:
npx @yanhao-an/open-api-mcp
选项2:全局安装
npm install -g @yanhao-an/open-api-mcp
open-api-mcp
选项3:来自源(开发)
git clone https://github.com/HaoYan-A/open-api-mcp.git
cd open-api-mcp
npm install
npm run build
npm start
配置
创建一个 .env 项目根目录中的文件:
# Required: OpenAPI Specification URL
OPENAPI_SPEC_URL=http://127.0.0.1/v3/api-docs
# Authentication Mode
# Options: none, apiKey, bearer, basic, oauth2
AUTH_MODE=oauth2
# OAuth 2.0 Configuration (if AUTH_MODE=oauth2)
OAUTH_FLOW=clientCredentials
OAUTH_CLIENT_ID=your-client-id
OAUTH_CLIENT_SECRET=your-client-secret
OAUTH_TOKEN_URL=https://auth.example.com/oauth/token
OAUTH_SCOPE=read write
# Logging
LOG_LEVEL=info
LOG_REQUESTS=true
LOG_RESPONSES=true
认证模式
1. OAuth 2.0 - 客户端凭据流程
最适合机器对机器通信:
AUTH_MODE=oauth2
OAUTH_FLOW=clientCredentials
OAUTH_CLIENT_ID=your-client-id
OAUTH_CLIENT_SECRET=your-client-secret
OAUTH_TOKEN_URL=https://auth.example.com/oauth/token
OAUTH_SCOPE=api.access
2. OAuth 2.0 - 密码模式(或密码授权流程)
对于用户名/密码认证:
AUTH_MODE=oauth2
OAUTH_FLOW=password
OAUTH_CLIENT_ID=your-client-id
OAUTH_CLIENT_SECRET=your-client-secret
OAUTH_USERNAME=user@example.com
OAUTH_PASSWORD=your-password
OAUTH_TOKEN_URL=https://auth.example.com/oauth/token
OAUTH_SCOPE=read write
3. OAuth 2.0 - 授权码流程
对于带重定向的用户授权:
AUTH_MODE=oauth2
OAUTH_FLOW=authorizationCode
OAUTH_CLIENT_ID=your-client-id
OAUTH_CLIENT_SECRET=your-client-secret
OAUTH_AUTH_URL=https://auth.example.com/oauth/authorize
OAUTH_TOKEN_URL=https://auth.example.com/oauth/token
OAUTH_REDIRECT_URI=http://localhost:3000/callback
OAUTH_CODE=<authorization-code-from-redirect>
4. API密钥认证
AUTH_MODE=apiKey
API_KEY=your-api-key
API_KEY_HEADER=Authorization
API_KEY_PREFIX=Bearer
5. 持有者令牌(或访问令牌)
AUTH_MODE=bearer
BEARER_TOKEN=your-bearer-token
6. 基本认证
AUTH_MODE=basic
BASIC_AUTH_USER=username
BASIC_AUTH_PASS=password
使用
运行服务器
# Development mode
npm run dev
# Production mode
npm start
# Test with MCP Inspector
npm run inspect
与Claude桌面版一起使用
添加到您的Claude桌面配置中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):
{
"mcpServers": {
"open-api": {
"command": "npx",
"args": ["-y", "@yanhao-an/open-api-mcp"],
"env": {
"OPENAPI_SPEC_URL": "http://127.0.0.1/v3/api-docs",
"AUTH_MODE": "oauth2",
"OAUTH_FLOW": "clientCredentials",
"OAUTH_CLIENT_ID": "your-client-id",
"OAUTH_CLIENT_SECRET": "your-client-secret",
"OAUTH_TOKEN_URL": "https://auth.example.com/oauth/token"
}
}
}
}
或者如果你已全局安装它:
{
"mcpServers": {
"open-api": {
"command": "open-api-mcp",
"args": [],
"env": {
"OPENAPI_SPEC_URL": "http://127.0.0.1/v3/api-docs",
"AUTH_MODE": "oauth2",
"OAUTH_FLOW": "clientCredentials",
"OAUTH_CLIENT_ID": "your-client-id",
"OAUTH_CLIENT_SECRET": "your-client-secret",
"OAUTH_TOKEN_URL": "https://auth.example.com/oauth/token"
}
}
}
}
MCP 工具
1. listApi
列出所有可用的API端点,并可选择性地进行过滤。
参数:
tag(可选):按标签名称筛选limit(可选):最大结果数(默认:50)offset(可选):跳过结果(默认:0)
示例:
{
"tag": "users",
"limit": 20
}
2. searchApi
根据上面的信息,执行如下指令:。
参数:
query(必填):搜索查询method(可选):HTTP 方法过滤器tag(可选):标签过滤器
示例:
{
"query": "user",
"method": "GET"
}
3. getApiSchema
获取特定端点的详细模式。
参数:
path(必需):API路径(例如。,/users/{id})method(必填):HTTP方法
示例:
{
"path": "/api/users/{id}",
"method": "GET"
}
4. callApi
执行带有认证的API请求。
参数:
path(必填):API路径method(必填):HTTP方法params(可选):查询参数body(可选):请求体headers(可选):额外的头部信息
示例:
{
"path": "/api/users",
"method": "POST",
"body": {
"name": "John Doe",
"email": "john@example.com"
}
}
5. getAuthStatus
获取当前的认证状态和配置。
6. getApiInfo
获取OpenAPI文档信息(标题、版本、基础URL、标签)。
项目结构
open-api-mcp/
├── src/
│ ├── auth/ # Authentication management
│ │ ├── auth-manager.ts # Main auth manager
│ │ ├── oauth2-handler.ts # OAuth 2.0 orchestrator
│ │ ├── token-manager.ts # Token storage
│ │ └── flows/ # OAuth 2.0 flow implementations
│ ├── openapi/ # OpenAPI document handling
│ │ ├── loader.ts # Load from URL
│ │ ├── parser.ts # Parse and index
│ │ └── cache.ts # Document caching
│ ├── api/ # API execution
│ │ └── caller.ts # HTTP client with auth
│ ├── tools/ # MCP tools
│ │ └── index.ts # Tool registration
│ ├── logger.ts # Logging utility
│ ├── types.ts # TypeScript types
│ └── index.ts # Main entry point
├── package.json
├── tsconfig.json
└── .env
发展
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode
npm run watch
# Test with inspector
npm run inspect
OAuth 2.0 流程详情
令牌管理
- 自动刷新令牌过期时会自动刷新
- 令牌缓存有效的令牌会被缓存以减少认证请求
- 到期缓冲区代币在到期前60秒刷新
流量选择指南
- 客户端凭据最适合服务器到服务器的通信,不涉及用户上下文
- 密码流对于使用用户名/密码的受信任应用程序
- 授权码对于用户授权访问的重定向流程
记录日志
服务器提供详细的日志记录以供调试:
# Log levels: debug, info, warn, error
LOG_LEVEL=debug
# Enable/disable request logging
LOG_REQUESTS=true
# Enable/disable response logging
LOG_RESPONSES=true
请求日志包括:
- 时间戳
- HTTP方法和URL
- 认证模式
- 请求参数和请求体
- 响应状态和数据
- 请求持续时间
故障排除
“无法加载OpenAPI文档”
- 验证
OPENAPI_SPEC_URL是正确且可访问的 - 检查网络连接
- 确保URL返回有效的OpenAPI JSON/YAML
"OAuth 2.0 流程失败"
- 验证OAuth凭据(客户端ID、密钥)
- 检查令牌URL是否正确
- 确保所需范围可用
- 检查服务器日志以查找特定错误信息
“令牌刷新失败”
- 验证刷新令牌是否有效
- 检查认证服务器是否支持刷新令牌
- 尝试重新认证以获取新的令牌
许可证
麻省理工学院(MIT)
做出贡献
欢迎贡献!请随时提交问题或拉取请求。