使用说明
OpenAPI MCP服务器
一个通用的MCP(模型上下文协议)服务器,提供对任何OpenAPI规范的访问作为资源。该服务器从可配置的API端点获取并缓存OpenAPI规范,使其可用于Claude Desktop或Cursor等MCP客户端。
特性
- 通用和可配置:适用于任何OpenAPI规范URL-不绑定到任何特定的API提供程序
- 自动规格获取:启动时自动下载最新的OpenAPI规范
- 本地高速缓存:本地缓存性能和离线访问规范
- MCP资源协议:将OpenAPI规范作为MCP资源公开
- 可扩展设计:通过简单的配置轻松添加API
- 可定制的:通过环境变量配置服务器名称、URI方案和缓存目录
- 配置示例:预先配置了VA(退伍军人事务部)API
- 福利声明API V2
- 福利文档API V1
运作原理
- 启动时,服务器从已配置的API端点获取OpenAPI规范
- 规范在本地缓存(默认值:
.cache/openapi-specs/) - MCP服务器通过HTTP/SSE传输将这些规范作为资源公开
- MCP客户端可以发现和阅读OpenAPI规范
配置
服务器可以通过环境变量进行配置:
MCP_SERVER_NAME:MCP服务器的名称(默认值:openapi-mcp)MCP_URI_SCHEME:资源的URI方案(默认值:openapi)CACHE_DIR:缓存目录路径(默认值:.cache/openapi-specs)DEBUG:启用调试日志记录(默认值:False)
您也可以在中直接修改API配置 src/app/config.py 通过编辑 API_CONFIGS 字典。
项目结构
.
├── api/ # Vercel serverless functions
│ └── index.py # HTTP/SSE entry point for Vercel
├── end_to_end/ # End-to-end tests
│ ├── __init__.py
│ ├── conftest.py
│ └── test_end_to_end.py
├── integration/ # Integration tests
│ ├── __init__.py
│ ├── conftest.py
│ └── test_integration.py
├── src/ # Source code
│ └── app/
│ ├── __init__.py
│ ├── http_server.py # HTTP/SSE server for Vercel
│ ├── mcp_server.py # Core MCP server logic
│ ├── spec_fetcher.py # OpenAPI spec fetcher
│ └── config.py # Configuration
├── test/ # Unit tests
│ ├── __init__.py
│ ├── conftest.py
│ └── test_app.py
├── docker-entrypoint.sh
├── DEPLOYMENT.md # Deployment guide
├── getting_started.md
├── pyproject.toml
├── requirements.txt # For Vercel deployment
├── vercel.json # Vercel configuration
├── .vercelignore # Files to exclude from deployment
└── README.md
文件目的
README.md-项目概述、文档、说明和使用示例DEPLOYMENT.md-本地运行和部署到Vercel的详细部署指南getting_started.md-详细的开发设置说明pyproject.toml-使用Poetry的项目元数据、依赖关系和构建配置requirements.txt-Vercel部署的Python依赖关系vercel.json-Vercel部署配置.vercelignore-要从Vercel部署中排除的文件docker-entrypoint.sh-与docker compose一起使用的简单docker入口点**/__init__.py-将目录标记为Python包
文件夹用途
/api-HTTP/SSE传输的Vercel无服务器功能入口点/src-包含应用程序源代码/test-包含不需要外部资源的单元测试/integration-包含与外部资源(如数据库、消息队列)交互的测试,并带有一些模拟功能/end_to_end-包含无需模拟即可验证整个应用程序的测试
安装
先决条件
- Python 3.12或更高版本
- 诗2依赖管理
设置
- 克隆此存储库:
git clone <repository-url>
cd va-api-mcp
- 安装诗歌(如果尚未安装):
curl -sSL https://install.python-poetry.org | python3 -
- 安装依赖项:
poetry install
- (可选)为开发设置预提交挂钩:
pre-commit install
用法
此服务器使用HTTP/SSE传输,可以在本地运行进行测试,也可以部署到Vercel进行远程访问。
有关详细的部署说明,请参阅 部署.md.
快速开始
在本地运行服务器:
poetry install
poetry run uvicorn app.http_server:app --reload --port 8000
配置您的MCP客户端(Cursor或Claude Desktop)以连接到 http://localhost:8000/sse.
有关Vercel的生产部署和完整的配置说明,请参阅 部署指南.
发展
开发设置
- 激活虚拟环境:
# For Poetry 2.0.0+, you need to install the shell plugin first:
poetry self add poetry-plugin-shell
# Then you can activate the virtual environment:
poetry shell
可用命令
- 运行测试:
poetry run pytest
- 运行集成测试:
poetry run pytest integration
- 运行端到端测试:
poetry run pytest end_to_end
- 运行linting:
poetry run ruff check .
- 运行类型检查:
poetry run mypy src
- 格式代码:
poetry run ruff format .
- 运行安全检查:
poetry run bandit -r src
预提交钩子
这个项目使用预提交挂钩来确保代码质量。每次提交前都会自动执行以下检查:
- 代码格式化(ruff)
- 类型检查(mypy)
- 安全检查(土匪)
- YAML验证
- 诗歌依赖性验证
- 还有更多。..
要手动运行预提交检查,请执行以下操作:
pre-commit run --all-files
代码质量工具
该项目使用多种工具来维护代码质量:
- 拉夫:快速Python linter和格式化程序
- 米皮:静态类型检查器
- 匪徒:安全门楣
- Pytest:测试框架
- 预承诺:Git挂钩管理器
这些工具的配置可以在中找到 pyproject.toml 和 .pre-commit-config.yaml.
建筑
openapi-mcp/
├── api/
│ └── index.py # Vercel serverless function entry point (HTTP/SSE)
├── src/
│ └── app/
│ ├── config.py # Configuration (API URLs, server settings, cache settings)
│ ├── spec_fetcher.py # Generic OpenAPI spec fetcher and caching
│ ├── mcp_server.py # Generic MCP server implementation
│ └── http_server.py # HTTP/SSE server for remote deployment
├── test/ # Unit tests
├── .cache/ # Cached OpenAPI specifications (gitignored, local only)
├── pyproject.toml # Project dependencies (Poetry)
├── requirements.txt # Dependencies for Vercel
└── vercel.json # Vercel deployment configuration
运输模式
此服务器使用 HTTP/SSE(服务器发送事件) 交通通讯。实施于 http_server.py,它可以是:
- 在本地运行
uvicorn用于在部署前测试HTTP/SSE传输 - 部署到Vercel等云平台,供多个客户端远程访问
设计理念
此服务器是有意通用的,不与任何特定的API提供程序绑定。核心组件(spec_fetcher.py, mcp_server.py)使用任何有效的OpenAPI规范。唯一特定于VA的元素在默认配置中,可以很容易地用任何其他API替换。
资源
- MCP(模型上下文协议)规范
- OpenAPI规范
- Vercel Python运行时文档
- VA开发人员门户 (API提供程序示例)
- 福利声明API文档
- 福利文档API文档
许可证
该项目提供了通过MCP访问OpenAPI规范的通用工具。当将此服务器与特定API(如默认配置中的VA API)一起使用时,请确保遵守相应API的服务条款。
贡献
欢迎投稿!请随时提交拉取请求。
