使用说明
项目简介
MCP API 是一个基于 Node.js 和 Express.js 构建的服务器,它充当 MCP 服务器的管理和聚合层。与直接实现 MCP 服务器不同,此项目连接到多个已存在的 MCP 服务器,并通过一个统一的 REST API 将这些服务器提供的工具暴露出来。这使得 LLM 应用可以通过标准的 HTTP 请求访问和调用来自不同 MCP 服务器的工具,简化了多服务器环境下的工具集成和管理。
主要功能点
- 多 MCP 服务器管理: 可以配置和连接到多个独立的 MCP 服务器。
- REST API 接口: 将 MCP 服务器的工具通过简洁的 RESTful API 暴露出来,易于集成到各种 LLM 应用中。
- 工具发现: 提供 API 接口 '/tools/{toolType}' 用于检索所有已注册的工具,支持 MCP 和 OpenAI 两种工具格式。
- 工具调用: 通过 '/callTool' 接口,可以方便地调用任何已注册的工具,并获取工具执行结果。
- Swagger 文档: 集成 Swagger UI,提供清晰的 API 文档,方便开发者理解和使用。
安装步骤
- 克隆仓库
git clone https://github.com/JoshuaRileyDev/mcp-api.git cd mcp-api - 安装依赖并启动开发服务器
npm install npm run dev - 配置环境变量
- 复制 '.env.example' 文件并重命名为 '.env'。
- 修改 '.env' 文件中的 'MCP_CONFIG_PATH' 环境变量,设置为你的 'mcp_config.json' 配置文件的绝对路径。
服务器配置
你需要创建一个 'mcp_config.json' 文件来配置要管理的 MCP 服务器。此文件应包含一个 'mcpServers' 字段,其中定义了每个 MCP 服务器的连接信息。
以下是一个 'mcp_config.json' 文件的示例:
{ "mcpServers": { "server1": { "command": "/path/to/your/first/mcp-server", "args": ["--port", "8001"], "env": { "SERVER_SPECIFIC_VAR": "value1" } }, "my-second-mcp-server": { "command": "/path/to/your/second/mcp-server", "args": [], "env": { "ANOTHER_VAR": "value2" } } } }
- 'mcpServers': 一个 JSON 对象,包含了所有要管理的 MCP 服务器的配置。
- 每个键(例如 '"server1"', '"my-second-mcp-server"')是你为 MCP 服务器定义的名称,可以自定义。
- 'command': MCP 服务器的可执行文件路径或启动命令。 这是客户端连接 MCP 服务器最关键的配置。请确保路径正确,并且 MCP 服务器能够通过此命令启动。
- 'args': (可选) 启动 MCP 服务器时需要传递的命令行参数,以字符串数组形式提供。例如,'["--port", "8001"]' 表示设置 MCP 服务器监听端口为 8001。
- 'env': (可选) 一个 JSON 对象,用于设置 MCP 服务器进程的环境变量。例如,可以用于传递服务器特定的配置信息。
注意: 'command' 和 'args' 的配置是用于启动和连接到 已存在 的 MCP 服务器。 你需要确保这些 MCP 服务器已经按照 MCP 协议实现并可独立运行。 本项目 'mcp-api' 本身不是一个独立的 MCP 服务器,而是 MCP 服务器的管理工具。
基本使用方法
-
启动 mcp-api 服务器: 运行 'npm run dev' 命令启动 mcp-api 服务器。默认情况下,服务器将在 'http://localhost:3005' 启动。
-
查看 API 文档: 访问 'http://localhost:3005/api-docs' 查看 Swagger UI 提供的 API 文档,了解所有可用的 API 接口和使用方法。
-
获取工具列表:
- 访问 'GET /tools/openai' 获取 OpenAI 格式的工具列表。
- 访问 'GET /tools/mcp' 获取 MCP 格式的工具列表。
-
调用工具:
- 发送 'POST' 请求到 '/callTool' 接口,请求体为 JSON 格式,包含 'toolName' 和 'arguments' 字段。
- 'toolName': 要调用的工具的完整名称,格式为 '"服务器名称_工具名称"'。 例如,如果你的服务器名称为 '"server1"',要调用的工具名称为 '"tool_a"',则 'toolName' 应为 '"server1_tool_a"'。 服务器名称与你在 'mcp_config.json' 中定义的名称一致。
- 'arguments': 传递给工具的参数,以 JSON 对象形式提供。
请求示例:
curl -X POST \ -H "Content-Type: application/json" \ -d '{ "toolName": "server1_tool_a", "arguments": {"input": "example input"} }' \ http://localhost:3005/callTool响应示例:
{ "result": "工具执行结果..." } - 发送 'POST' 请求到 '/callTool' 接口,请求体为 JSON 格式,包含 'toolName' 和 'arguments' 字段。
通过以上步骤,你可以使用 'mcp-api' 服务器来管理和调用多个 MCP 服务器提供的工具,从而构建更强大的 LLM 应用。
信息
分类
网页与API