MCP适配器
介绍
MCP适配器 是一个旨在将OpenAPI规范(v2/v3)自动转换为MCP(模型上下文协议)应用程序的工具。它能够将HTTP API无缝转换为MCP API,允许通过MCP协议暴露和管理遗留或新的HTTP服务,而只需最少的手动干预。
思想与建筑
该项目围绕一个 事件驱动、解耦架构.核心工作流程是:
- 资源监视器:监视OpenAPI规范的文件更改或Kubernetes ConfigMaps。
- OpenAPI加载器:解析和验证OpenAPI文档,提取API路由,并为MCP转换做好准备。
- MCP服务器:根据解析的OpenAPI规范动态创建和管理MCP服务器和工具。
- HTTP服务器:提供健康检查和自检端点。
每个阶段都通过异步通道(队列)进行通信,确保松耦合和可扩展性。该系统支持基于文件和基于Kubernetes的资源监视,使其能够灵活地适应不同的部署场景。
高水位流量:
Resource Watcher (File or Kubernetes)
│
└─(channel 1: watcher → openapi)─▶ OpenAPILoader (parses OpenAPI spec, builds HTTP client definitions)
│
└─(channel 2: openapi → server)─▶ MCPServer (manages MCP instances and tools)
│
└─▶ MCPInstance / FastMCP (runs the actual MCP protocol server)设计要点:
- 明确模块边界:为了可维护性,每个职责(监视、解析、服务)都是隔离的。
- 由渠道驱动的事件:异步消息传递使组件解耦。
- 可扩展:轻松添加新的资源源或协议。
- 平滑关闭:监听信号/信号并清理所有任务。
依赖项
- Python>=3.14(建议调整为3.11/3.12以获得更广泛的兼容性)
- anyio --异步并发
- 参数解析 --CLI解析
- fastmcp --MCP服务器框架
- HTTPX --异步HTTP客户端
- 头 --Kubernetes操作框架
- openapi规范验证器 --OpenAPI验证
- 腾跃 --OpenAPI解析和转换
待办事项
- 重构CLI解析:将CLI参数解析移出模块顶级,以避免对导入产生副作用。
- 统一异步运行时:对所有并发原语的anyio或asyncio进行标准化。
- 优雅的服务器生命周期:确保HTTP和MCP服务器可以干净地启动和停止。
- 定义严格的消息类型:为通道消息使用数据类以提高类型安全性。
- 完整的OpenAPI加载器逻辑:完成路线提取、差异化和错误处理。
- 增强错误处理和重试:添加强大的异常管理和重试策略。
- 较低的Python版本要求:更新
pyproject.toml为了与主流Python版本兼容。 - 添加单元测试和CI:通过自动化测试和持续集成覆盖核心逻辑。
- 改进配置管理:考虑使用Pydantic的
BaseSettings通过env/CLI/文件进行统一配置。 - 添加结构化日志记录和指标:支持JSON日志和Prometheus度量以实现可观察性。
______________________________________________________________________
有关更多详细信息,请参阅 源代码 和 OpenAPI规范示例.
