README.zh-cn.md•3.34 kB
# OpenAPI 到 MCP Server
[简体中文](README.zh-cn.md) | [English](README.md)
这个项目从提供的 `openapi.yaml` 直接启动一个 Model Context Protocol (MCP) 服务器,并使用 `uv` 管理依赖。每一个 HTTP 端点都会被注册为一个 MCP 工具,AnythingLLM(或任意支持 MCP 的客户端)都可以调用。
## 快速开始
1. **安装依赖**
   ```bash
   uv sync
   ```
2. **配置 `openapi2mcpserver/config.yaml`**
   ```yaml
   base_url: "https://localhost:12001"
   verify_ssl: false
   openapi_path: "../openapi.yaml"           # 可选,默认使用仓库根目录的副本
   log_file: "../logs/openapi2mcpserver.log" # 可选,启用文件日志
   log_level: "INFO"                         # 可选,支持 DEBUG/INFO/WARNING/ERROR
   auth:
     mode: "basic"                           # 可选值:none/basic/bearer/header/query
     username: "your-username"
     password: "your-password"
     # basic_token: "cHJlLWVuY29kZWQtY3JlZHM="
     # extra_headers:
     #   X-API-Version: "1"
   # default_headers:
   #   X-Request-Source: "mcp"
   ```
3. **启动 MCP 服务器**
   ```bash
   uv run openapi2mcpserver
   ```
## 在 AnythingLLM 中使用该 MCP 服务器
以下步骤针对 AnythingLLM 桌面版插件系统,并列出了 macOS 与 Windows 的默认路径。如路径不存在,请先创建文件,并根据你的实际环境替换示例路径。
### macOS
1. 打开 `~/Library/Application Support/anythingllm-desktop/storage/plugins/anythingllm_mcp_servers.json`
2. 新增或合并以下配置:
   ```json
   {
     "mcpServers": {
       "rhino-agent": {
         "command": "/Users/<你的用户名>/.local/bin/uv",
         "args": ["run", "--project", "/Users/<你的用户名>/workspace/AIProjects/openapi2mcpserver", "openapi2mcpserver"]
       }
     }
   }
   ```
### Windows
1. 打开 `%APPDATA%\\anythingllm-desktop\\storage\\plugins\\anythingllm_mcp_servers.json`
2. 如果你使用 `uv.exe`,请将路径替换为 `where uv` 的输出,例如:
   ```json
   {
     "mcpServers": {
       "rhino-agent": {
         "command": "C:\\\\Users\\\\<YourUser>\\\\AppData\\\\Roaming\\\\Python\\\\Scripts\\\\uv.exe",
         "args": ["run", "--project", "C:\\\\Users\\\\<YourUser>\\\\workspace\\\\AIProjects\\\\openapi2mcpserver", "openapi2mcpserver"]
       }
     }
   }
   ```
保存后重启 AnythingLLM(或在设置中重新加载插件),就能在工作区的工具列表里看到 `rhino-agent`。
## 亮点
- 自动解析每个 OpenAPI 路径并注册对应的 MCP 工具
- 提供 `OpenAPI_GetSchema` 工具以检查 `components.schemas`
- 工具输入涵盖路径参数、查询参数、请求头与请求体
- 支持灵活的认证模式(none/basic/bearer/自定义 header/query)以及全局默认请求头
- 结构化日志同时输出到控制台和文件,便于 LLM 排错
## 项目结构
```
openapi2mcpserver/
    __init__.py
    __main__.py
    client.py
    config.py
    openapi_loader.py
    server.py
```
## 运行提示
服务器启动时会读取 OpenAPI 描述,为每个工具构建 JSON Schema 输入,并将调用转发给上游 API。响应(状态码、请求头以及 JSON/文本响应体)会原样返回给 MCP 客户端,这样你可以继续执行诸如轮询任务状态之类的后续操作。