PMCP Progressive MCP 网关服务器

使用说明(Markdown 格式)

  • 项目简介

    • PMCP 是一个面向 LLM 客户端的 MCP 服务器实现,核心职责包括:托管与管理资源(Resources)、注册和执行工具(Tools)、定义并渲染提示模板(Prompts),并通过 JSON-RPC 与客户端通信。服务器还负责会话管理、能力声明、以及对传输协议(如 Stdio、SSE、WebSocket 等)的支持,为 LLM 应用提供安全、可扩展的上下文服务框架。
  • 主要功能点

    • 核心 MCP 功能:提供工具调用、资源访问、以及提示渲染的标准化接口。
    • 资源与工具管理:通过网关统一管理下游服务器的资源和工具,确保统一入口与权限控制。
    • 提示模板与渲染:支持可定制的 Prompt 模板与描述渲染,便于 LLM 的交互模式配置。
    • 多传输协议支持:支持标准输入输出(stdio)、Server-Sent Events(SSE)以及基于 HTTP 的传输,方便不同场景的客户端接入。
    • 自动化服务器 provisioning:具备按需 Provision 下游 MCP 服务器的能力,减少上下文负载和重启成本。
    • 安全与合规:提供单例锁、策略过滤(允许/拒绝清单)、对输出进行脱敏等机制,提升安全性与可控性。
    • 本地缓存与离线发现:内置描述缓存、离线发现工具描述的能力,帮助提升响应速度与稳定性。
  • 安装步骤

    1. 使用 pip 安装 PMCP 包(推荐方式):
      • 使用 pip 安装 pmcp,以 Python 环境运行 PMCP 服务器。
    2. 安装完成后即可运行服务器,具体命令在快速入门文档中给出。
    3. 如需额外功能(如带LLM的内容生成、模板、缓存等),可选安装相应依赖。
  • 服务器配置(JSON 配置示例说明) 说明:MCP 客户端需要配置 MCP 服务器的启动信息(至少包含 server name、command、args),以便能够启动并连接到 MCP 服务器。以下为符合仓库实现的配置要点,不是代码块,仅作文本说明。

    • 项目级服务器(本地启动,示例字段含义)

      • 名称(name):playwright
      • 启动命令(command):npx
      • 启动参数(args):-y @playwright/mcp
      • 可选环境变量(env):若服务器需要 API Key,可在 env 中提供相应变量名及默认值或占位符
    • 另一个示例:github 服务器

      • 名称(name):github
      • 启动命令(command):npx
      • 启动参数(args):-y @modelcontextprotocol/server-github
      • 需要 API Key 时:在 env 中设置 GITHUB_TOKEN(如果客户端有环境变量注入) 注:实际使用中,客户端的配置文件通常放在项目根目录的 .mcp.json、或全局用户配置中,PMCP 会从项目、用户以及自定义配置中合并得到最终的 Downstream Server 配置。
  • 基本使用方法

    • 启动与连接
      • 启动 PMCP 网关服务器后,网关将自动 provisioning 某些服务器、载入描述缓存、并建立对下游服务器的连接。
      • 客户端通过 gateway.* 一组的 JSON-RPC 调用进行 capabilities 发现、工具调用、资源读取等操作。
    • 常用工作流
      • 发现能力:gateway.request_capability,获取候选服务器或 CLI 的能力信息。
      • 进入工具:gateway.catalog_search,浏览可用工具的简要卡片;gateway.describe 获取具体工具的完整描述;gateway.invoke 调用实际工具。
      • 资源与提示:gateway.list_resources、gateway.read_resource、gateway.list_prompts、gateway.get_prompt,按需获取资源和提示模板。
    • 部署与运维
      • 通过 pmcp setup/refresh 等命令,进行服务器清单的自动 provisioning、工具描述缓存刷新、以及日志查看等运维操作。
      • 支持通过 pmcp doctor 进行环境自检与故障排查,确保单例锁、SSE 与本地服务兼容性。
  • 其他注意事项

    • PMCP 支持 Progressive Disclosure,初始返回的是简要能力卡,更多细节在请求后续描述时提供。
    • 安全策略可通过网关策略文件(policy.yaml)设定对服务器、工具、资源和 prompts 的访问控制。

服务器信息