M

MCP代码智者

@jalehman/mcp-sage
0 Stars 59 次浏览 jalehman 更新于 2026-08-23

一个MCP服务器,通过在提示中嵌入文件内容,提供从Gemini 2.5 Pro获取第二意见或详细代码审查的工具,使其能够处理具有广泛上下文的大型代码库。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

mcp-sage

一个MCP(Model Context Protocol)服务器,提供工具将提示发送给另一个LLM(目前仅支持Gemini 2.5 Pro),并在提示中嵌入所有引用的文件路径(对于文件夹递归嵌入)。这对于从能够准确处理大量上下文的模型中获取第二意见或详细的代码审查非常有用。

理由

我大量使用了Claude Code。它是一个很好的产品,非常适合我的工作流程。然而,对于更复杂的代码库,需要更多上下文时,具有大量上下文的新模型似乎非常有用。这使我能够继续将Claude Code作为开发工具,同时利用Gemini 2.5 Pro的大容量上下文来增强Claude Code有限的上下文能力。

灵感来源

该项目借鉴了另外两个开源项目:

概述

该项目实现了一个MCP服务器,暴露了两个工具:

second-opinion

  1. 接收一个提示和一组文件/目录路径作为输入
  2. 将这些文件打包成结构化的XML格式
  3. 检查组合内容是否在Gemini的令牌限制内(1M个令牌)
  4. 将组合后的提示+上下文发送给Gemini 2.5 Pro
  5. 返回模型的响应

expert-review

  1. 接收一个代码更改指令和一组文件/目录路径作为输入
  2. 将这些文件打包成结构化的XML格式
  3. 检查组合内容是否在Gemini的令牌限制内(1M个令牌)
  4. 创建一个特定的提示,指示模型使用SEARCH/REPLACE块格式化响应
  5. 将组合后的上下文+指令发送给Gemini 2.5 Pro
  6. 返回易于实施的SEARCH/REPLACE块格式的编辑建议

前提条件

  • Node.js(v18或更高版本)
  • 一个Google Gemini API密钥

安装

# Clone the repository
git clone https://github.com/your-username/mcp-sage.git
cd mcp-sage

# Install dependencies
npm install

# Build the project
npm run build

环境变量

设置以下环境变量:

  • GEMINI_API_KEY: 您的Google Gemini API密钥

使用方法

在使用npm run build构建后,在您的MCP配置中添加以下内容:

GEMINI_API_KEY=XXX node /path/to/this/repo/dist/index.js

提示

要获取第二意见,只需请求第二意见即可。

要获取代码审查,请请求代码审查或专家审查。

这两种方式都受益于提供您希望包含在上下文中的文件路径,但如果省略,主机LLM可能会推断出应包含的内容。

调试与监控

服务器通过MCP日志功能提供了详细的监控信息。这些日志包括:

  • 令牌使用统计(已用令牌与令牌限制)
  • 请求中包含的文件和文档数量
  • 请求处理时间指标
  • 当超出令牌限制时的错误信息

日志通过MCP协议的notifications/message方法发送,确保它们不会干扰JSON-RPC通信。支持日志记录的MCP客户端将适当显示这些日志。

示例日志条目:

Token usage: 1,234 / 1,000,000 tokens (0.12%)
Files included: 3, Document count: 3
Sending request to Gemini with 1,234 tokens...
Received response from Gemini in 982ms

使用工具

second-opinion 工具

second-opinion 工具接受以下参数:

  • prompt(字符串,必填):发送给Gemini的提示
  • paths(字符串数组,必填):作为上下文包含的文件路径列表

示例MCP工具调用(使用JSON-RPC 2.0):

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "second-opinion",
    "arguments": {
      "prompt": "Explain how this code works",
      "paths": ["path/to/file1.js", "path/to/file2.js"]
    }
  }
}

expert-review 工具

expert-review 工具接受以下参数:

  • instruction(字符串,必填):所需的特定更改或改进
  • paths(字符串数组,必填):作为上下文包含的文件路径列表

示例MCP工具调用(使用JSON-RPC 2.0):

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "expert-review",
    "arguments": {
      "instruction": "Add error handling to the function",
      "paths": ["path/to/file1.js", "path/to/file2.js"]
    }
  }
}

响应中将包含SEARCH/REPLACE块,您可以使用这些块来实现建议的更改:

<<<<<<< SEARCH
function getData() {
  return fetch('/api/data')
    .then(res => res.json());
}
=======
function getData() {
  return fetch('/api/data')
    .then(res => {
      if (!res.ok) {
        throw new Error(`HTTP error! Status: ${res.status}`);
      }
      return res.json();
    })
    .catch(error => {
      console.error('Error fetching data:', error);
      throw error;
    });
}
>>>>>>> REPLACE

运行测试

要测试工具:

# Test the second-opinion tool
GEMINI_API_KEY=your_api_key_here node test/run-test.js

# Test the expert-review tool
GEMINI_API_KEY=your_api_key_here node test/test-expert.js

项目结构

  • src/index.ts:带有工具定义的主要MCP服务器实现
  • src/pack.ts:用于将文件打包成结构化XML格式的工具
  • src/tokenCounter.ts:用于计算提示中令牌数量的实用程序
  • src/gemini.ts:Gemini API客户端实现
  • test/run-test.js:针对second-opinion工具的测试
  • test/test-expert.js:针对expert-review工具的测试

许可证

ISC

相关 MCP 服务