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 提供的能力)
- initialize、tools/list、tools/call、execute、execute_file、index、search、fetch_and_index、batch_execute 等 RPC 调用即可触达如下能力:
- 安全与策略
- MCP 服务器端提供对执行、文件访问等行为的 deny/allow 过滤,确保沙箱行为符合设定的权限策略。
- 启动与连接
-
适用场景与限制
- 适用于希望将“上下文信息与工具能力”以 MCP 服务器形式对外提供的应用场景,如将 Claude Code 与外部知识库、工具以及 Prompts 组织成统一的后端服务。
- 当前实现以 StdIO 为传输,未来可扩展为 WebSocket、SSE 等传输协议以支持不同部署场景。
- 需在具备 Node.js 环境的服务器上运行,并确保依赖的运行时(如 Bun、Node、Python 等)可用。
-
可能的扩展与维护
- 增强对 WebSocket/SSE 的传输实现,以支持浏览器端和后端服务的实时通信。 增加对更多 MCP 客户端的兼容性测试,完善工具集合与 Prompts 模板库。 针对大规模 Tool Output 的优化,如进一步压缩输出、分片传输和更智能的摘要策略。
-
备注
- 项目中包含了大量针对 MCP 的工具实现、内容索引与检索策略、执行沙箱以及安全策略等完整组件,属于较为完整的 MCP 服务器实现方案。