Context Mode MCP 服务器端实现

使用说明(Markdown 版本,便于快速上手)

  • 项目简介

    • Context Mode 是一个基于 MCP 的后端服务器实现,核心职责包括:托管与管理资源、注册与执行工具、以及提供可渲染的提示模板,服务于大型语言模型客户端在对话中获取上下文和外部能力。
  • 主要功能点

    • MCP 协议支持:实现对 MCP 请求/响应(JSON-RPC 形式)的处理,提供标准化的上下文服务框架。
    • 资源管理与数据访问:通过 ContentStore 提供文档、代码片段、日志等内容的索引、检索与高效访问。
    • 工具注册与执行:公开一组工具(如 execute、execute_file、index、search、fetch_and_index、batch_execute、stats 等),可供 LLM 客户端调用并在沙箱中执行,输出按需进入上下文。
    • Prompt 与模板渲染:在工具输出中嵌入可定制的提示模板与路由草案,支持对话模式的可定制化。
    • 安全与合规:引入权限和 deny/allow 规则,对 shell 命令、文件访问、以及代码中的潜在 shell 注入进行沙箱化与审查。
    • 多传输协议与会话管理:当前实现提供 Stdio 传输作为 MCP 的传输通道,后续可扩展为 WebSocket、SSE 等传输方式,同时维护会话状态与能力声明。
    • 运行时适配与优化:内置运行时探测和 Bun/Node 等运行时选择,优化 JS/TS 的执行性能。
    • 附加工具与集成:包括对外部内容抓取(fetch_and_index)与知识库的智能检索组合(searchWithFallback、trigram,porter 等多层检索)等特性。
  • 安装步骤

    • 获取代码并安装依赖
      • 安装依赖并构建:在项目根目录执行 npm install;随后执行 npm run build 以生成可运行的服务器文件。
    • 运行 MCP 服务器
      • 构建完成后,使用 Node 启动服务器:node build/server.js(默认采用 StdIO 传输进行 MCP 通信)。
    • 运行方式的可选项
      • 也可通过 Claude Code 的 Marketplace 插件形式接入,具体依赖客户端配置和插件安装方式,请参照官方插件使用说明。
  • 服务器配置(MCP 客户端必须的最小信息)

    • 说明:MCP 客户端需要提供服务器的启动信息以建立连接。以下信息仅作示例描述,实际应以客户端配置为准。
    • JSON 配置示例(描述性文本,不作为代码块呈现) { "server": { "name": "context-mode", "command": "node", "args": ["build/server.js"] }, "transport": "stdio" }
    • 注释
      • server.name:服务器名称,与 MCP 服务端在协商能力时使用的标识相同,这里设为 context-mode。
      • server.command/args:启动 MCP 服务器的命令及参数。此处对应运行打包后的 server.js 文件路径。
      • transport:通信传输方式,这里采用 StdIO(标准输入/输出),这是 MCP 客户端与 Claude Code 等对接时常用的传输模式之一。
  • 基本使用方法

    • 启动与连接
      • 先启动 MCP 服务器(参照上面的运行步骤),确保服务器进程正在监听 StdIO 连接。
      • 在 MCP 客户端(例如 Claude Code 的插件设置)中,使用上述 JSON 配置连接服务器,建立 JSON-RPC 的通信。
    • 常用操作
      • initialize、tools/list、tools/call、execute、execute_file、index、search、fetch_and_index、batch_execute 等 RPC 调用即可触达如下能力:
        • 资源管理(索引、查询、按源检索等)
        • 工具执行(在沙箱内运行代码、处理输出并进入上下文)
        • 内容抓取与索引(fetch_and_index)及其预览输出
        • 会话层面的统计与上下文节省分析(stats、ctx-stats 等 Hook 提供的能力)
    • 安全与策略
      • MCP 服务器端提供对执行、文件访问等行为的 deny/allow 过滤,确保沙箱行为符合设定的权限策略。
  • 适用场景与限制

    • 适用于希望将“上下文信息与工具能力”以 MCP 服务器形式对外提供的应用场景,如将 Claude Code 与外部知识库、工具以及 Prompts 组织成统一的后端服务。
    • 当前实现以 StdIO 为传输,未来可扩展为 WebSocket、SSE 等传输协议以支持不同部署场景。
    • 需在具备 Node.js 环境的服务器上运行,并确保依赖的运行时(如 Bun、Node、Python 等)可用。
  • 可能的扩展与维护

    • 增强对 WebSocket/SSE 的传输实现,以支持浏览器端和后端服务的实时通信。 增加对更多 MCP 客户端的兼容性测试,完善工具集合与 Prompts 模板库。 针对大规模 Tool Output 的优化,如进一步压缩输出、分片传输和更智能的摘要策略。
  • 备注

    • 项目中包含了大量针对 MCP 的工具实现、内容索引与检索策略、执行沙箱以及安全策略等完整组件,属于较为完整的 MCP 服务器实现方案。

服务器信息