mcp-sage
MCP(模型上下文协议)服务器提供将提示发送到另一个 LLM(目前仅限 Gemini 2.5 Pro)的工具,该提示会将所有引用的文件路径(文件夹则以递归方式)嵌入到提示中。这对于从能够准确处理大量上下文的模型中获取第二意见或详细的代码审查非常有用。
基本原理
我大量使用 Claude Code。它是一款非常棒的产品,非常适合我的工作流程。不过,拥有大量上下文的较新模型似乎在处理需要更多上下文的更复杂代码库时非常有用。这让我可以继续使用 Claude Code 作为开发工具,同时利用 Gemini 2.5 Pro 的庞大上下文来增强 Claude Code 有限的上下文。
灵感
该项目从另外两个开源项目中汲取灵感:
- simonw/files-to-prompt用于文件压缩
- asadm/vibemode提出想法并提示将整个 repo 发送给 Gemini 以获取批量编辑建议
概述
该项目实现了一个 MCP 服务器,它公开了两个工具:
second-opinion
- 接受提示和文件/目录路径列表作为输入
- 将文件打包成结构化的 XML 格式
- 检查合并内容是否在 Gemini 的令牌限制(1M 个令牌)范围内
- 将组合提示 + 上下文发送到 Gemini 2.5 Pro
- 返回模型的响应
expert-review
- 接受代码更改指令和文件/目录路径列表作为输入
- 将文件打包成结构化的 XML 格式
- 检查合并内容是否在 Gemini 的令牌限制(1M 个令牌)范围内
- 创建一个专门的提示,指示模型使用 SEARCH/REPLACE 块来格式化响应
- 将上下文和指令组合发送至 Gemini 2.5 Pro
- 返回格式化为 SEARCH/REPLACE 块的编辑建议,以便于实施
先决条件
- Node.js(v18 或更高版本)
- Google Gemini API 密钥
安装
环境变量
设置以下环境变量:
GEMINI_API_KEY
:您的 Google Gemini API 密钥
用法
使用npm run build
构建后,将以下内容添加到您的 MCP 配置中:
提示
要获得关于某事的第二意见,只需询问第二意见。
要获得代码审查,请请求代码审查或专家审查。
这两者都受益于提供您想要包含在上下文中的文件的路径,但如果省略,主机 LLM 可能会推断出要包含的内容。
调试和监控
服务器通过 MCP 日志记录功能提供详细的监控信息。这些日志包括:
- 令牌使用情况统计(已用令牌与令牌限制)
- 请求中包含的文件和文档的数量
- 请求处理时间指标
- 超出令牌限制时的错误信息
日志通过 MCP 协议的notifications/message
方法发送,确保它们不会干扰 JSON-RPC 通信。支持日志记录的 MCP 客户端将正确显示这些日志。
日志条目示例:
使用工具
第二意见工具
second-opinion
工具接受以下参数:
prompt
(字符串,必需):发送给 Gemini 的提示paths
(字符串数组,必需):作为上下文包含的文件路径列表
MCP 工具调用示例(使用 JSON-RPC 2.0):
专家评审工具
expert-review
工具接受以下参数:
instruction
(字符串,必需):所需的具体更改或改进paths
(字符串数组,必需):作为上下文包含的文件路径列表
MCP 工具调用示例(使用 JSON-RPC 2.0):
响应将包含可用于实施建议的更改的 SEARCH/REPLACE 块:
运行测试
测试工具:
项目结构
src/index.ts
:包含工具定义的主要 MCP 服务器实现src/pack.ts
:将文件打包成结构化 XML 格式的工具src/tokenCounter.ts
:用于计数提示中的令牌的实用程序src/gemini.ts
:Gemini API 客户端实现test/run-test.js
:测试第二意见工具test/test-expert.js
:测试专家评审工具
执照
国际学习中心
This server cannot be installed
MCP 服务器通过在提示中嵌入文件内容,提供从 Gemini 2.5 Pro 获取第二意见或详细代码审查的工具,使其能够处理具有广泛上下文的大型代码库。