任何API MCP服务器
一种MCP(模型上下文协议)服务器,设计用于与公开OpenAPI v3规范的任何API交互。服务器动态解析OpenAPI规范,并将API端点公开为人工智能助手可用的工具。
特性
- 与任何API兼容:只需提供API的OpenAPI规范文件。
- 多种身份验证方法:支持最常见的身份验证系统。
- 灵活配置:通过JSON文件或环境变量。
- 动态工具生成:自动将端点转换为MCP工具。
建筑
该项目使用以下技术和模式构建:
- Node.js和TypeScript:运行时环境和基础语言。
- 模型上下文协议(MCP)SDK:用途
@modelcontextprotocol/sdk通过以下方式实现MCP服务器stdio. - 模块化身份验证系统:支持多种身份验证类型的基于适配器的架构。
- 动态工具生成:读取OpenAPI文件并将每个操作转换为MCP工具。
先决条件
- Node.js(v16或更高版本)
- 要公开的API必须可以通过网络访问。
- API的OpenAPI规范文件(JSON或YAML)。
安装和建造
- 安装依赖项:
npm install- 编译TypeScript代码:
npm run build配置
配置可以通过两种方式完成:
选项1:配置文件(推荐)
创建一个 config.json 项目根目录中的文件:
{
"apiUrl": "https://api.example.com",
"openApiSpecPath": "./open-api.json",
"serverName": "my-api-mcp",
"serverVersion": "1.0.0",
"auth": {
"type": "bearer-endpoint",
"endpoint": "/auth/token",
"method": "POST",
"body": {
"key": "${API_KEY}",
"secret": "${API_SECRET}"
},
"tokenPath": "token"
}
}看 config.example.json 更多配置示例。选项2:环境变量
创建一个 .env 项目根目录中的文件:
API_URL=http://localhost:8080/api
AUTH_TYPE=bearer-endpoint
AUTH_ENDPOINT=/auth/token
AUTH_TOKEN_PATH=token
API_KEY=your_api_key
API_SECRET=your_api_secret支持的身份验证类型
1.无身份验证(none)
{
"auth": {
"type": "none"
}
}2.HTTP基本认证(basic)
{
"auth": {
"type": "basic",
"username": "myuser",
"password": "mypassword"
}
}3.API密钥(api-key)
支持通过标头、查询参数或cookie发送:
{
"auth": {
"type": "api-key",
"keyName": "X-API-Key",
"keyValue": "your-api-key",
"location": "header",
"prefix": ""
}
}4.静态承载令牌(bearer-token)
对于未过期或由外部管理的令牌:
{
"auth": {
"type": "bearer-token",
"token": "your-static-bearer-token"
}
}5.来自端点的承载令牌(bearer-endpoint)
从身份验证终结点获取令牌:
{
"auth": {
"type": "bearer-endpoint",
"endpoint": "/auth/token",
"method": "POST",
"body": {
"key": "${API_KEY}",
"secret": "${API_SECRET}"
},
"tokenPath": "token",
"expiresIn": 3600
}
}注:使用 ${VAR_NAME} 参考体内的环境变量。6.OAuth2客户端凭据(oauth2-client-credentials)
{
"auth": {
"type": "oauth2-client-credentials",
"tokenUrl": "https://auth.example.com/oauth/token",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"scopes": ["read", "write"],
"credentialsInBody": false
}
}环境变量
| 变量 | 描述 |
|---|---|
CONFIG_PATH | 配置文件的路径 |
API_URL | API基本URL |
OPENAPI_SPEC_PATH | OpenAPI规范文件的路径 |
SERVER_NAME | MCP服务器名称 |
AUTH_TYPE | 身份验证类型 |
API_KEY | API密钥(用于承载器端点) |
API_SECRET | API机密(用于承载器端点) |
MCP客户端中的使用
要在支持MCP的Claude Desktop或VS Code扩展等工具中使用此服务器:
{
"mcpServers": {
"any-api": {
"command": "node",
"args": ["/absolute/path/to/any-api-mcp/build/index.js"]
}
}
}确保更换 /absolute/path/to/any-api-mcp/ 使用克隆此存储库的实际路径。
扩展身份验证系统
要添加新的身份验证类型,请执行以下操作:
- 在中创建新适配器
src/auth/adapters/延伸BaseAuthAdapter - 将新类型添加到
AuthType在src/auth/types.ts - 创建相应的配置界面
- 在中注册适配器
AuthFactory.createAdapter()在src/auth/factory.ts
发展
要更改服务器,请执行以下操作:
- 修改中的代码
src/. - 重新编译
npm run build. - 重新启动MCP客户端以重新加载更改。
