项目简介
MCPoSimpleServer 是一个基于 Python FastAPI 实现的轻量级、异步服务器,旨在作为 LLM 应用与 Model Context Protocol (MCP) 工具和 Prompt 之间的桥梁。它本身并不直接实现具体的工具或 Prompt,而是通过管理和运行外部的 MCP 工具进程,并将它们的能力(Tool调用、Prompt渲染等)通过标准化的 MCP 协议(如 SSE/JSON-RPC)和 REST API 暴露给 LLM 客户端。服务器支持多用户,提供身份认证和私有服务器实例管理,为 LLM 应用提供安全、可扩展的上下文服务框架。
主要功能点
- MCP 工具管理: 能够启动、停止、重启、加载由 'uvx' 或 'npx' 等命令执行的外部 MCP 工具/服务器进程。
- 动态 API 暴露: 将外部 MCP 工具的能力动态生成 REST API 接口 (Swagger/OpenAPI),方便非 MCP 客户端调用。
- Prompt 模板管理: 支持加载和执行公共、私有(用户独享)和共享的 Prompt 模板。
- 多用户支持: 提供用户认证(用户名/密码、API Key)和授权(管理员/普通用户),支持用户拥有私有的 MCP 服务器配置和环境。
- 隔离运行: 为每个受管理的 MCP 服务器进程(特别是用户私有的)提供隔离的运行环境,通常在独立线程或进程中。
- 多种协议支持: 主要通过 Server-Sent Events (SSE) 和 JSON-RPC 协议与标准 MCP 客户端通信,同时也提供 REST API 接口。
- 配置持久化: 使用 JSON 文件存储服务器配置、用户数据、Prompt 等信息,无需数据库。
- 工具过滤: 支持通过白名单或黑名单过滤可用的工具。
安装步骤
该项目推荐使用 Docker 进行部署,以简化环境依赖。具体安装步骤请参考官方 GitHub 仓库的详细说明。
基本流程如下:
- 克隆仓库代码。
- 构建 Docker 镜像。
- 运行 Docker 容器,可以通过环境变量配置端口、管理员密码等。
更详细的步骤请查阅仓库中的 'Dockerfile' 和相关的部署文档(如果提供)。
服务器配置
MCPoSimpleServer 的核心功能是管理外部的 MCP 工具进程。这些外部工具的配置信息存储在 JSON 格式的文件中。
-
公共工具配置: 位于主配置文件 ('config.json') 中。您需要编辑此文件来定义哪些外部 MCP 工具服务器应该由 MCPoSimpleServer 启动并作为公共工具暴露。配置结构通常包含一个 'mcpServers' 对象,其中每个键是服务器的名称,对应的值是一个包含 'command' (启动命令)、'args' (命令参数)、'env' (环境变量)、'description' (描述) 等字段的对象。
{ "mcpServers": { "server_name_1": { "command": "command_to_run_server_1", "args": ["arg1", "arg2"], "env": {"ENV_VAR": "value"}, "description": "Description of server 1" }, "server_name_2": { "command": "command_to_run_server_2", "args": [], "disabled": true } // ...更多服务器配置 }, "tools": { "whiteList": [], // 或 ["tool_name_a", "tool_name_b"] "blackList": [] // 或 ["tool_name_c"] } }请注意,此处的 'command' 和 'args' 是 MCPoSimpleServer 用于启动外部 MCP 工具进程的命令和参数。
-
私有工具配置: 用户可以创建自己的私有 MCP 服务器配置。这些配置存储在每个用户的独立 JSON 文件中。用户可以通过 API 接口 ('/user/mcpserver') 来添加、查看、修改和删除他们的私有服务器配置和环境变量。私有配置会覆盖同名公共配置的环境变量等设置,并为该用户启动一个独立的服务器实例。
对于 MCP 客户端而言,要连接到 MCPoSimpleServer,客户端需要知道 MCPoSimpleServer 的网络地址(主机名和端口)以及 MCP 协议的入口点路径(通常是 '/mcp/sse')。例如,如果 MCPoSimpleServer 运行在 'localhost:8000',客户端需要配置连接到 'http://localhost:8000/mcp/sse'。客户端不需要关心 MCPoSimpleServer 内部如何启动和管理具体的 MCP 工具进程。
基本使用方法
- 启动服务器: 运行 Docker 容器或直接执行 'python -m mcpo_simple_server'。
- 连接 MCP 客户端: 配置您的 MCP 客户端连接到 MCPoSimpleServer 的 SSE 端点(例如 'http://localhost:8000/mcp/sse')。客户端将通过此连接接收事件和发送 JSON-RPC 消息。
- 使用工具和 Prompt:
- 标准 MCP 客户端: 客户端连接后,可以发送 JSON-RPC 请求,如 'initialize' (建立会话)、'tools/list' (获取可用工具列表)、'tools/call' (调用工具)、'prompts/list' (获取可用Prompt列表)、'prompts/execute' (执行Prompt模板) 等。MCPoSimpleServer 会将这些请求路由到相应的内部服务或外部 MCP 工具进程,并将结果通过 SSE 返回给客户端。
- 非 MCP 客户端 / REST API: 您可以通过访问 '/docs' 或 '/redoc' 查看由 FastAPI 自动生成的 API 文档,发现并直接调用由 MCPoSimpleServer 动态暴露的工具 REST API(路径通常为 '/tool/{服务器名}/{工具名}')。Prompt 也可以通过 '/public/prompts' (公共) 或 '/user/prompts' (用户私有/共享) 接口进行列表和执行。
- 用户认证: 对于需要访问私有工具或 Prompt、或管理私有服务器的用户,需要通过 '/user/login' 接口进行认证获取 Bearer Token,或生成 API Key,并在后续请求中携带认证信息。
- 管理服务器: 管理员可以通过 '/admin' 或 '/public' 下的特定接口来管理公共 MCP 服务器(添加、删除、重启等)和用户。
信息
分类
AI与计算