使用说明
项目简介
mcpport是一个Model Context Protocol (MCP) 网关的实现,它本身不是一个直接提供资源、工具或Prompt的MCP服务器,而是一个MCP服务器的管理器和接入点。你可以将mcpport理解为一个“MCP服务器的服务器”。它的主要作用是:
- 接收和管理 MCP 服务器的注册: 允许各种独立的 MCP 服务器(例如文件系统服务器、数据库服务器等)注册到该网关。
- 充当客户端的统一接入点: LLM 客户端只需要连接到 mcpport 网关,即可通过网关访问和调用已注册的后端 MCP 服务器提供的资源和工具。
- 协议转换和路由: mcpport 负责处理客户端的 MCP 请求,并将这些请求路由到相应的后端 MCP 服务器,然后将服务器的响应返回给客户端。
简而言之,mcpport 就像一个“总机”,帮助 LLM 客户端找到并连接到不同的 MCP 服务提供者。
主要功能点
- MCP 服务器注册与管理: 允许 MCP 服务器通过 WebSocket 注册到网关,并进行生命周期管理。
- 请求路由: 接收客户端请求,根据请求内容路由到已注册的 MCP 服务器。
- 工具代理: 将已注册 MCP 服务器提供的工具暴露给客户端,并代理客户端对工具的调用。
- 多协议支持: 支持 WebSocket 和 SSE (Server-Sent Events) 等多种传输协议。
- 可配置性: 提供丰富的配置选项,例如端口、日志级别、超时时间等。
- 健康检查: 提供健康检查接口,用于监控网关和注册服务器的运行状态。
注意: mcpport 本身不直接提供资源、Prompt 模板或工具。它需要配合其他实现了 MCP 服务器协议的后端服务一起使用。仓库示例中使用了 '@modelcontextprotocol/server-filesystem' 作为后端 MCP 服务器的例子,但这只是一个示例,你可以使用任何符合 MCP 协议的服务。
安装步骤
-
安装 'uvx' (如果尚未安装):
'uvx' 是一个用于运行 Python 应用的工具,'mcpport' 使用它来启动服务。 如果你还没有安装 'uvx',请先安装它。 (请参考 'uvx' 官方文档进行安装,这里不提供具体安装步骤,假设用户已具备 Python 运行环境和包管理工具)
-
克隆 'mcpport' 仓库 (如果需要):
如果你需要修改 'mcpport' 的代码或从源代码运行,可以克隆该仓库:
git clone https://github.com/fangyinc/mcpport cd mcpport如果只是使用预构建的版本,则无需克隆仓库。
-
安装 'mcpport' (如果需要):
如果你克隆了仓库,可以在仓库根目录下安装 'mcpport':
pip install .或者,你可以直接使用 'uvx' 运行,无需显式安装。
服务器配置
1. 启动 MCP 网关 (mcpport gateway):
使用 'uvx' 命令启动 mcpport 网关服务器:
uvx mcpport gateway
默认情况下,网关将在 '8765' 端口启动。你可以使用 '--port' 参数指定端口,例如:
uvx mcpport gateway --port 9000
其他常用的配置参数包括:
- '--host': 指定监听的主机地址,默认为 '0.0.0.0' (监听所有 IPv4 地址)。 可以设置为 '::' 以同时监听 IPv4 和 IPv6 地址。
- '--ipv6': 启用 IPv6 支持,默认为 'false'。
- '--log-level': 设置日志级别,例如 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'。 默认为 'INFO'。
- '--timeout-rpc': 设置与 MCP 服务器 RPC 调用的超时时间,单位为秒,默认为 '10' 秒。
- '--timeout-run-tool': 设置工具执行的超时时间,单位为秒,默认为 '120' 秒。
- '--sse-path': 设置 SSE (Server-Sent Events) 端点的路径,默认为 '/sse'。
- '--messages-path': 设置消息端点的路径,默认为 '/messages/'。
你可以使用 'uvx mcpport gateway --help' 查看所有可用的配置选项。
2. 注册 MCP 服务器到网关 (mcpport register):
你需要启动一个 实际提供 MCP 服务 的后端服务器,并将其注册到 'mcpport' 网关。 仓库的 'README.md' 中提供了一个使用 '@modelcontextprotocol/server-filesystem' 的示例。
假设你要注册一个文件系统 MCP 服务器,可以使用以下命令:
uvx mcpport register \ --stdio "npx -y @modelcontextprotocol/server-filesystem ./" \ --gateway-url="ws://localhost:8765/mcp/register" \ --server-name "file"
这个命令的参数解释如下(以下配置信息为 JSON 格式,MCP 客户端需要配置类似信息才能连接到 MCP 服务器):
{ "server name": "file", // 你为这个 MCP 服务器起的名称,客户端可以使用这个名称来识别它 "command": "npx -y @modelcontextprotocol/server-filesystem ./", // 启动后端 MCP 服务器的命令。 // 这里使用了 npx 来运行 @modelcontextprotocol/server-filesystem 包, // 并指定当前目录 (.) 为文件系统服务器的工作目录。 // 这个命令会被 mcpport 客户端在后台执行。 "args": { // (可选) 传递给启动命令的额外参数。 // 在这个例子中没有额外的参数。 }, "gateway_url": "ws://localhost:8765/mcp/register", // mcpport 网关的注册端点 URL。 // 你的 MCP 服务器客户端 (这里是 'mcpport register') 需要连接到这个 URL // 才能向网关注册自己。 "stdio": true, // (隐式参数,由 '--stdio' 参数决定) 表明后端 MCP 服务器是通过标准输入/输出 (stdio) 进行通信的。 "port": 0, // (可选) 本地 HTTP 端口,默认为 0,表示不启动本地 HTTP 服务器。 // 如果设置为大于 0 的端口号,'mcpport register' 会启动一个本地 HTTP 服务器, // 并可以通过 WebSocket 连接到后端 MCP 服务器。 // 在这个例子中设置为 0,表示直接通过 stdio 连接后端服务器并注册到网关。 "message_path": "/ws", // (可选) 本地 WebSocket 路径,仅当 'port' 大于 0 时有效。 "enable_cors": false, // (可选) 是否启用 CORS (跨域资源共享),仅当 'port' 大于 0 时有效。 "health_endpoint": [], // (可选) 健康检查端点列表,仅当 'port' 大于 0 时有效。 "require_gateway": true, // (可选) 是否要求必须连接到网关,如果设置为 true,当无法连接到网关时,客户端会退出。 "log_level": "INFO", // (可选) 日志级别。 "server_id": null // (可选) 服务器 ID,如果为空,则自动生成。 }
重要提示: 'mcpport register' 命令实际上是启动了一个 MCP 服务器客户端,这个客户端负责启动你指定的后端 MCP 服务器进程 (通过 '--stdio' 参数),并将这个后端服务器注册到 'mcpport gateway' 网关。 'mcpport register' 自身不是一个 MCP 服务器,而是为了方便注册和管理后端 MCP 服务器而提供的工具。
基本使用方法
- 启动 'mcpport gateway' 网关服务器。
- 启动一个或多个后端 MCP 服务器,并使用 'mcpport register' 命令将它们注册到网关。 你可以根据需要注册不同类型的 MCP 服务器,例如文件系统服务器、数据库服务器、API 服务器等等。
- LLM 客户端连接到 'mcpport gateway' 网关的地址 (例如 'ws://localhost:8765/mcp/register')。 客户端可以通过网关发现和访问已注册的 MCP 服务器提供的功能。
- 客户端通过网关发送 MCP 请求 (例如调用工具、读取资源等)。 网关会将请求路由到相应的后端 MCP 服务器,并将响应返回给客户端。
总结: 'mcpport' 提供了一个 MCP 网关的基础设施,你需要根据你的具体需求,选择或开发合适的后端 MCP 服务器,并将它们注册到 'mcpport' 网关,才能构建完整的 MCP 应用系统。 'mcpport' 本身不提供具体的 MCP 服务,但它是构建 MCP 应用的关键组件。
信息
分类
AI与计算