使用说明

项目简介

mcpport是一个Model Context Protocol (MCP) 网关的实现,它本身不是一个直接提供资源、工具或Prompt的MCP服务器,而是一个MCP服务器的管理器和接入点。你可以将mcpport理解为一个“MCP服务器的服务器”。它的主要作用是:

  1. 接收和管理 MCP 服务器的注册: 允许各种独立的 MCP 服务器(例如文件系统服务器、数据库服务器等)注册到该网关。
  2. 充当客户端的统一接入点: LLM 客户端只需要连接到 mcpport 网关,即可通过网关访问和调用已注册的后端 MCP 服务器提供的资源和工具。
  3. 协议转换和路由: mcpport 负责处理客户端的 MCP 请求,并将这些请求路由到相应的后端 MCP 服务器,然后将服务器的响应返回给客户端。

简而言之,mcpport 就像一个“总机”,帮助 LLM 客户端找到并连接到不同的 MCP 服务提供者。

主要功能点

  • MCP 服务器注册与管理: 允许 MCP 服务器通过 WebSocket 注册到网关,并进行生命周期管理。
  • 请求路由: 接收客户端请求,根据请求内容路由到已注册的 MCP 服务器。
  • 工具代理: 将已注册 MCP 服务器提供的工具暴露给客户端,并代理客户端对工具的调用。
  • 多协议支持: 支持 WebSocket 和 SSE (Server-Sent Events) 等多种传输协议。
  • 可配置性: 提供丰富的配置选项,例如端口、日志级别、超时时间等。
  • 健康检查: 提供健康检查接口,用于监控网关和注册服务器的运行状态。

注意: mcpport 本身不直接提供资源、Prompt 模板或工具。它需要配合其他实现了 MCP 服务器协议的后端服务一起使用。仓库示例中使用了 '@modelcontextprotocol/server-filesystem' 作为后端 MCP 服务器的例子,但这只是一个示例,你可以使用任何符合 MCP 协议的服务。

安装步骤

  1. 安装 'uvx' (如果尚未安装):

    'uvx' 是一个用于运行 Python 应用的工具,'mcpport' 使用它来启动服务。 如果你还没有安装 'uvx',请先安装它。 (请参考 'uvx' 官方文档进行安装,这里不提供具体安装步骤,假设用户已具备 Python 运行环境和包管理工具)

  2. 克隆 'mcpport' 仓库 (如果需要):

    如果你需要修改 'mcpport' 的代码或从源代码运行,可以克隆该仓库:

    git clone https://github.com/fangyinc/mcpport
    cd mcpport

    如果只是使用预构建的版本,则无需克隆仓库。

  3. 安装 '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 服务器而提供的工具。

基本使用方法

  1. 启动 'mcpport gateway' 网关服务器。
  2. 启动一个或多个后端 MCP 服务器,并使用 'mcpport register' 命令将它们注册到网关。 你可以根据需要注册不同类型的 MCP 服务器,例如文件系统服务器、数据库服务器、API 服务器等等。
  3. LLM 客户端连接到 'mcpport gateway' 网关的地址 (例如 'ws://localhost:8765/mcp/register')。 客户端可以通过网关发现和访问已注册的 MCP 服务器提供的功能。
  4. 客户端通过网关发送 MCP 请求 (例如调用工具、读取资源等)。 网关会将请求路由到相应的后端 MCP 服务器,并将响应返回给客户端。

总结: 'mcpport' 提供了一个 MCP 网关的基础设施,你需要根据你的具体需求,选择或开发合适的后端 MCP 服务器,并将它们注册到 'mcpport' 网关,才能构建完整的 MCP 应用系统。 'mcpport' 本身不提供具体的 MCP 服务,但它是构建 MCP 应用的关键组件。

信息

分类

AI与计算