mcp-cli

使用说明

  • 项目简介

    • 本仓库实现了一个完整的 MCP 后端框架,包含用于托管资源、注册与执行工具、渲染并提供 Prompt 模板的服务端组件,以及用于与客户端通过 JSON-RPC 进行通信的 IPC 层。框架还实现了多传输通道(标准输入/输出、SSE、HTTP、WebSocket)以及会话管理、工具缓存和热重载等能力,旨在为 LLM 客户端提供安全、可扩展的上下文服务。
  • 主要功能点

    • Resources/Resources 数据访问与管理:后端可暴露并管理可被 LLM 客户端读取的资源与数据。
    • Tools/工具注册与执行:支持将工具注册到 MCP 服务器端,LLM 客户端可以调用工具并获取结构化的响应。
    • Prompts/提示模板:提供和渲染用于 LLM 交互的 Prompt 模板,便于定制化交互模式。
    • 多传输协议支持:stdio、SSE、HTTP 等传输,服务器端实现统一的 JSON-RPC 协议处理。
    • 会话管理与能力声明:对会话进行管理,记录工具调用、成本、令牌等元数据,并可按服务器状态、工具缓存进行统计。
    • 动态热Reload:通过配置热加载实现服务器的增删改(如增加/移除服务器)。
    • 资源与工具缓存:在 SQLite 数据库中缓存工具元数据,提升后续调用性能与离线可用性。
  • 安装步骤

    • 依赖与构建
      • 需要 Bun 环境,执行 bun install 安装依赖。
      • 运行构建:bun run build,将产出 dist 目录下的可执行二进制文件(mcx、mcpd、mcpctl)以及相关前端资源。
    • 本地运行前需要准备配置和环境
      • 创建独立的工作目录用于测试与隔离,配置 MCP 服务端的连接信息和服务器清单。
      • 服务器配置文件通常位于 ~/.mcp-cli/servers.json,形如: { "mcpServers": { "echo": { "command": "bun", "args": ["test/echo-server.ts"] } } }
      • 流程概览:mcx 调用服务器工具时,后台会通过 mcpd 守护进程进行连接管理,首次调用时若未启动则自动启动守护进程并建立服务器池连接。
  • 服务器配置(注:MCP 客户端需要的配置信息请以 JSON 格式提供给服务器,示例仅供参考)

    • 服务器名称: echo
    • 启动命令: bun
    • 参数: test/echo-server.ts
    • 说明: 该服务器使用 stdio 传输方式,后端通过一个本地脚本模拟一个“回声”工具,便于集成测试与演示。 备注:下述配置信息仅用于 MCP 客户端进行连接,实际 MCP 客户端并不需要直接修改该仓库中的配置文件;该信息用于理解与对接 MCP 服务端的工作方式。
    • 配置示例(JSON)说明
      • server: "echo"
      • command: "bun"
      • args: ["test/echo-server.ts"]
      • transport: "stdio"(本实现支持多传输,示例以 stdio 为主)
      • 说明:该配置用于演示如何把一个服务器暴露给 MCP 客户端,客户端通过 MCP 端点调用工具。若要在实际环境中使用多个传输,请结合服务端实现的传输适配器进行配置。
  • 基本使用方法

    • 启动与连接
      • 启动 mcpd 守护进程后,守护进程会负责启动和管理 MCP 服务器、工具缓存、以及会话管理。
      • MCP 客户端(如 mcx CLI)通过 Unix 域套接字与 mcpd 进行通信,发起 JSON-RPC 请求,例如读取工具、调用工具等。
    • 调用工具
      • 使用 mcx 调用某服务器的工具,例如 mcx <server> <tool> '{ "arg": "value" }',后台将返回 JSON-RPC 响应内容。
    • 热更新
      • 修改服务器配置后,守护进程会在 debounce 时间后自动重新加载,新增服务器、删除服务器、修改服务器配置都会在状态中体现。
    • 查看与调试
      • mcx ls 可以列出当前配置的服务器及其工具数量。
      • mcx status 可以查看守护进程状态、正在运行的服务器和数据库状态。
  • 重要说明

    • MCP 客户端需要的核心能力包括:注册服务器、获取工具信息、执行工具调用、获取工具输出、以及配置与会话相关的信息。仓库中实现的服务端包含 IpcServer、ServerPool、AliasServer、ClaudeServer 等组件,覆盖上述能力并提供多传输层的实现。
    • 具体服务器实现和工具定义在 test 目录和 core/daemon 相关模块中,具备完整的服务器行为、工具执行流程和会话状态管理。

服务器信息