OpenAPI MCP服务器

一个通过解析OpenAPI规范动态暴露REST API作为MCP工具的模型上下文协议服务器,适用于任何符合OpenAPI规范的API。

  • by robotanica
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 robotanica/openapi-mcp-server

使用说明

OpenAPI MCP服务器

一种模型上下文协议(MCP)服务器,通过解析OpenAPI规范将REST API动态公开为MCP工具。与任何符合OpenAPI的API配合使用。

特性

  • 动态工具生成:根据OpenAPI规范自动创建MCP工具
  • 两种操作模式:低电平(自动)和FastMCP(预定义)
  • 灵活认证:支持Bearer令牌、API密钥和自定义标头
  • 端点筛选:白名单/黑名单特定的API终结点
  • 参数剥离:从请求中删除敏感参数
  • 预构建预设:包括流行API的配置

快速开始

# Install
pip install openapi-mcp-server

# Run with any OpenAPI service
openapi-mcp-server --openapi-url https://api.example.com/openapi.json --base-url https://api.example.com

# Use with Lemy (preset included)
openapi-mcp-server --preset lemy

# Test mode (verify tools without starting MCP)
openapi-mcp-server --preset lemy --test

预设

勒米

openapi-mcp-server --preset lemy
# or
OPENAPI_PRESET=lemy openapi-mcp-server

自定义API

openapi-mcp-server \
  --openapi-url https://your-api.com/openapi.json \
  --base-url https://your-api.com \
  --mode fastmcp \
  --auth-token your-token

安装

来自PyPI

pip install openapi-mcp-server

或者使用紫外线:

uv add openapi-mcp-server

本地安装(开发)

如果您想从源代码安装以进行开发或测试:

# Clone the repository
git clone https://github.com/yourusername/openapi-mcp-server.git
cd openapi-mcp-server

# Install in editable mode with development dependencies
pip install -e ".[dev]"

# Or with uv
uv pip install -e ".[dev]"

# Verify installation
openapi-mcp-server --help

# Run tests to ensure everything works
pytest

可编辑安装(-e 标志)允许您修改源代码并立即查看更改,而无需重新安装。

配置

环境变量

变量 描述 默认值
OPENAPI_PRESET 预设名称(狐猴、松弛等) 无
OPENAPI_SPEC_URL OpenAPI规范URL 必填
API_BASE_URL API基本URL 必需
MCP_MODE 服务器模式(low_level 或 fastmcp) low_level
API_KEY API身份验证密钥 无
AUTH_HEADER 身份验证标头名称 Authorization
AUTH_TYPE 身份验证类型 Bearer
TOOL_WHITELIST 逗号分隔的端点模式 无
TOOL_BLACKLIST 逗号分隔的端点模式 无
TOOL_NAME_PREFIX 工具名称的前缀 api_
STRIP_PARAM 要从请求中删除的参数 无
DEBUG 启用调试日志记录 false

配置文件

创建一个 config.json:

{
  "openapi_spec_url": "https://api.example.com/openapi.json",
  "api_base_url": "https://api.example.com",
  "mode": "fastmcp",
  "api_key": "your-token",
  "tool_whitelist": ["/users", "/posts"],
  "debug": true
}

然后运行:

openapi-mcp-server --config config.json

使用Claude代码

添加到您的Claude Code MCP配置中:

{
  "mcpServers": {
    "my-api": {
      "command": "openapi-mcp-server",
      "args": ["--preset", "lemy"],
      "env": {
        "API_BASE_URL": "http://localhost:11981"
      }
    }
  }
}

或者对于自定义API:

{
  "mcpServers": {
    "my-api": {
      "command": "openapi-mcp-server",
      "env": {
        "OPENAPI_SPEC_URL": "https://api.example.com/openapi.json",
        "API_BASE_URL": "https://api.example.com",
        "API_KEY": "your-token",
        "MCP_MODE": "fastmcp"
      }
    }
  }
}

预设

预置模式

  • 莱姆:Lemy人工智能平台
  • 松弛:Slack API(即将推出)
  • GitHub:GitHub API(即将发布)

创建自定义预设

在中创建预设文件 presets/my-service.json:

{
  "name": "my-service",
  "openapi_spec_url": "https://api.myservice.com/openapi.json",
  "api_base_url": "https://api.myservice.com",
  "mode": "fastmcp",
  "auth_header": "X-API-Key",
  "auth_type": "Token",
  "tool_name_prefix": "myservice_",
  "fastmcp_tools": [
    {
      "name": "myservice_get_user",
      "description": "Get user information",
      "endpoint": "/users/{id}",
      "method": "GET",
      "parameters": {
        "id": {"type": "string", "required": true, "in": "path"}
      }
    }
  ]
}

发展

git clone https://github.com/yourusername/openapi-mcp-server
cd openapi-mcp-server
pip install -e ".[dev]"

# Run tests
pytest

# Test with Lemy
openapi-mcp-server --preset lemy --test

示例

松弛API

openapi-mcp-server \
  --openapi-url https://api.slack.com/specs/openapi/v2/slack_web.json \
  --base-url https://slack.com/api \
  --auth-token xoxb-your-token \
  --tool-prefix slack_

GitHub API

openapi-mcp-server \
  --openapi-url https://api.github.com/openapi.json \
  --base-url https://api.github.com \
  --auth-token ghp_your-token \
  --auth-header Authorization \
  --auth-type "Bearer"

自定义内部API

openapi-mcp-server \
  --openapi-url http://internal-api:8080/openapi.json \
  --base-url http://internal-api:8080 \
  --mode fastmcp \
  --whitelist "/api/v1/users,/api/v1/projects"

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 为您的更改添加测试
  4. 确保所有测试通过
  5. 提交拉取请求

详细指南请参见CONTRIBUTING.md。