OpenAPI MCP服务器构建工具

EasyMCP是一个将OpenAPI规范转换为功能完备的MCP服务器的工具,支持热重载、监控和企业级功能。

  • by federicoinzirillo
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 federicoinzirillo/easymcp

使用说明

EasyMCP🚀

通过动态OpenAPI集成构建生产就绪MCP服务器的最简单方法

EasyMCP 将任何OpenAPI规范转换为功能齐全的模型上下文协议(MCP)服务器,具有开箱即用的热重载、监控和企业功能。

🎯 产品特点

  • ✅ OpenAPI 动态在飞行中上传和更新OpenAPI规范
  • 🔄 热重载自动监控OpenAPI文件,实时加载
  • 🛠️ 工具MCP集成通过 MCP 原生工具管理规格
  • 🚀 FastMCP 2.0使用最新版本的 FastMCP 与优化 OpenAPI 解析器
  • 🎨 Python最佳实践配置完整的uv,ruff,mypy和类型提示
  • 📦 依赖管理现代 UV 成瘾管理
  • 🧪 类型安全完整的类型提示和Pydantic验证

📋 要求

  • Python 3.11+
  • uv(包管理器)

🚀 安装

1. 安装uv(如果尚未安装)

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# macOS con Homebrew
brew install uv

2. 克隆并配置项目

cd /Users/federicoinzirillo/Developer/Projects/fastmcp

# Crea virtual environment e installa dipendenze
uv sync

# Installa anche le dipendenze di sviluppo
uv sync --dev

📖 使用

服务器启动

# Attiva l'ambiente virtuale
source .venv/bin/activate

# Avvia il server
python -m src.main

或者UV:

uv run python -m src.main

添加 OpenAPI 规范

服务器自动监控目录 openapi_specs/ 新的规格或修改。

方法1:本地文件

添加文件 .yaml 哦 .json 在目录中 openapi_specs/:

cp my-api-spec.yaml openapi_specs/my-api.yaml

服务器将自动加载新规格!

Metodo 2:URL删除

使用石油工具MCP load_openapi_spec:

# Tramite client MCP
result = await client.call_tool(
    "load_openapi_spec",
    arguments={
        "name": "petstore",
        "source": "https://petstore3.swagger.io/api/v3/openapi.json",
        "base_url": "https://petstore3.swagger.io/api/v3"
    }
)

🛠️ 可用的MCP工具

服务器显示了以下动态管理工具:

load_openapi_spec

从本地 URL 或文件上传新的 OpenAPI 规范。

参数 :

  • name (str):规范标识名称
  • source (str):OpenAPI文件的URL
  • base_url (str, optional): API 调用的基本 URL

list_openapi_specs

列出当前上传的所有 OpenAPI 规范。

get_openapi_spec_info

获取有关特定负载的详细信息。

参数 :

  • name str:规范名称

remove_openapi_spec

删除已加载的 OpenAPI 规范。

参数 :

  • name (str) 要删除的规范名称

reload_all_specs

从目录中重新加载所有 OpenAPI 规范。

🏗️ 项目结构

fastmcp/
├── src/
│   ├── __init__.py           # Package initialization
│   ├── main.py               # Entry point del server
│   ├── server.py             # Server MCP principale
│   └── openapi_manager.py    # Gestione specifiche OpenAPI
├── openapi_specs/
│   └── example.yaml          # Specifica OpenAPI di esempio
├── tests/                    # Test suite (da implementare)
├── pyproject.toml            # Configurazione progetto e dipendenze
├── .gitignore                # File da ignorare in git
└── README.md                 # Questa documentazione

🔧 发展

Linting e格式化

# Format del codice con ruff
uv run ruff format .

# Check linting
uv run ruff check .

# Fix automatico problemi linting
uv run ruff check --fix .

类型检查

uv run mypy src/

测试

uv run pytest

📝 示例:OpenAPI规范

该项目包括一个运行的例子 openapi_specs/example.yaml 使用JSONPlaceholder API测试:

openapi: 3.0.0
info:
  title: Example API
  version: 1.0.0
servers:
  - url: https://jsonplaceholder.typicode.com
paths:
  /posts:
    get:
      summary: Ottieni tutti i post
      # ... altre definizioni

🎨 配置 Ruff

该项目使用 Ruff 进行 linting 和格式化,并遵循以下规则:

  • ✅ 密码样式(E、W)
  • ✅ pyflakes(F)
  • ✅ isort(I)
  • ✅ flake8冲锋枪(B)
  • ✅ flake8综合教程(C4)
  • ✅ pyupgrade(UP)
  • ✅ flake8简化(SIM卡)
  • ✅ flake8使用pathlib(PTH)

🚢 部署

克劳德桌面

fastmcp install claude-desktop src/main.py \
  --name "Dynamic OpenAPI MCP" \
  --with httpx \
  --with pyyaml \
  --with watchdog \
  --with pydantic \
  --with fastmcp

光标

fastmcp install cursor src/main.py \
  --name "Dynamic OpenAPI MCP" \
  --with httpx \
  --with pyyaml \
  --with watchdog \
  --with pydantic \
  --with fastmcp

FastMCP云

fastmcp deploy

🔐 最佳实践实施

  1. 类型安全完整类型提示 + Pydantic 用于验证
  2. 错误处理通过日志进行强大的错误管理
  3. 异步/等待现代异步模式,实现最佳性能
  4. 上下文管理器使用 Context Manager 管理资源
  5. 结构化日志:每次调试记录可配置文件
  6. 文件监视热自动重新加载,无需重新启动
  7. 依赖注入模块化和可测试的架构
  8. 清洁代码PEP 8 和 Python 最佳实践

📚 资源

📄 许可证

麻省理工学院

🤝 贡献

欢迎贡献,问题和功能请求!


由❤️ 使用 FastMCP 2.0