🚀 深度代码推理MCP服务器
深度代码推理MCP服务器将Claude Code与谷歌的Gemini AI相结合,用于互补性代码分析。该服务器支持多模型工作流程,其中Claude Code负责紧密的终端集成和多文件重构,而Gemini则利用其庞大的上下文窗口(100万个标记)和代码执行能力进行分布式系统调试和长跟踪分析。
🚀 快速开始
前提条件
- Node.js 18 或更高版本
- 拥有Gemini API访问权限的谷歌云账户
- 从 谷歌AI工作室 获取的Gemini API密钥
关键依赖项
- @google/generative-ai:谷歌用于Gemini API集成的官方SDK
- @modelcontextprotocol/sdk:用于Claude集成的MCP协议实现
- zod:工具参数的运行时类型验证
- dotenv:环境变量管理
安装步骤
- 克隆仓库:
git clone https://github.com/Haasonsaas/deep-code-reasoning-mcp.git
cd deep-code-reasoning-mcp
- 安装依赖项:
npm install
- 设置Gemini API密钥:
cp .env.example .env
- 构建项目:
npm run build
配置
环境变量
GEMINI_API_KEY
(必需):你的谷歌Gemini API密钥
Claude桌面配置
在你的Claude桌面配置文件(~/Library/Application Support/Claude/claude_desktop_config.json
)中添加以下内容:
{
"mcpServers": {
"deep-code-reasoning": {
"command": "node",
"args": ["/path/to/deep-code-reasoning-mcp/dist/index.js"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}
✨ 主要特性
- Gemini 2.5 Pro预览版:使用谷歌最新的Gemini 2.5 Pro预览版(05 - 06)模型,具有100万个标记的上下文窗口
- 对话式分析:全新功能!Claude和Gemini之间的AI对AI对话,用于迭代解决问题
- 执行流程跟踪:不仅理解函数调用,还能理解数据流和状态转换
- 跨系统影响分析:模拟更改如何在服务边界之间传播
- 性能建模:识别N + 1模式、内存泄漏和算法瓶颈
- 假设测试:通过基于证据的验证来测试关于代码行为的理论
- 长上下文支持:利用Gemini 2.5 Pro预览版的100万个标记上下文来分析大型代码库
💻 使用示例
基础用法
对话式分析示例
当Claude需要与Gemini进行深度迭代分析时:
const session = await start_conversation({
claude_context: {
attempted_approaches: ["Checked for N+1 queries", "Profiled database calls"],
partial_findings: [{ type: "performance", description: "Multiple DB queries in loop" }],
stuck_description: "Can't determine if queries are optimizable",
code_scope: { files: ["src/services/UserService.ts"] }
},
analysis_type: "performance",
initial_question: "Are these queries necessary or can they be batched?"
});
const response = await continue_conversation({
session_id: session.sessionId,
message: "The queries fetch user preferences. Could we use a join instead?",
include_code_snippets: true
});
const results = await finalize_conversation({
session_id: session.sessionId,
summary_format: "actionable"
});
高级用法
案例1:分布式跟踪分析
当故障签名跨越多个服务且包含GB级别的日志时:
案例2:性能回归排查
当性能下降但原因不明显时:
案例3:基于假设的调试
当你有理论但需要大量测试时:
📚 详细文档
可用工具
注意:工具参数使用蛇形命名法,并使用Zod模式进行验证。实际实现提供的类型安全比这些简化示例中显示的更详细。完整的TypeScript类型定义可在src/models/types.ts
中找到。
对话式分析工具
服务器现在包含AI对AI的对话式工具,使Claude和Gemini能够进行多轮对话以进行复杂分析:
start_conversation
启动Claude和Gemini之间的对话式分析会话。
{
claude_context: {
attempted_approaches: string[];
partial_findings: any[];
stuck_description: string;
code_scope: {
files: string[];
entry_points?: CodeLocation[];
service_names?: string[];
}
};
analysis_type: 'execution_trace' | 'cross_system' | 'performance' | 'hypothesis_test';
initial_question?: string;
}
continue_conversation
使用Claude的响应或后续问题继续进行活跃的对话。
{
session_id: string;
message: string;
include_code_snippets?: boolean;
}
finalize_conversation
完成对话并生成结构化的分析结果。
{
session_id: string;
summary_format: 'detailed' | 'concise' | 'actionable';
}
get_conversation_status
检查正在进行的对话的状态和进度。
{
session_id: string;
}
传统分析工具
escalate_analysis
将复杂分析从Claude Code转移到Gemini的主要工具。
{
claude_context: {
attempted_approaches: string[];
partial_findings: any[];
stuck_description: string;
code_scope: {
files: string[];
entry_points?: CodeLocation[];
service_names?: string[];
}
};
analysis_type: 'execution_trace' | 'cross_system' | 'performance' | 'hypothesis_test';
depth_level: 1-5;
time_budget_seconds?: number;
}
trace_execution_path
利用Gemini的语义理解进行深度执行分析。
{
entry_point: {
file: string;
line: number;
function_name?: string;
};
max_depth?: number;
include_data_flow?: boolean;
}
cross_system_impact
分析跨服务边界的影响。
{
change_scope: {
files: string[];
service_names?: string[];
};
impact_types?: ('breaking' | 'performance' | 'behavioral')[];
}
performance_bottleneck
进行超越简单性能分析的深度性能分析。
{
code_path: {
entry_point: {
file: string;
line: number;
function_name?: string;
};
suspected_issues?: string[];
};
profile_depth?: 1-5;
}
hypothesis_test
测试关于代码行为的特定理论。
{
hypothesis: string;
code_scope: {
files: string[];
entry_points?: CodeLocation[];
};
test_approach: string;
}
🔧 技术细节
工作原理
- Claude Code进行初步分析:利用其在多文件重构和测试驱动循环方面的优势。
- 必要时,Claude将任务升级到MCP服务器:特别是在以下情况下:
- 分析超过Claude上下文的巨大日志/跟踪转储
- 运行带有代码执行的迭代假设测试
- 关联多个微服务中的故障
- 服务器准备全面的上下文:包括代码、日志和跟踪信息。
- Gemini利用其100万个标记的上下文进行分析:并显示可见的“思考”痕迹。
- 结果返回给Claude Code:用于实施修复。
架构
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude Code │────▶│ MCP Server │────▶│ Gemini API │
│ (Fast, Local, │ │ (Router & │ │ (1M Context, │
│ CLI-Native) │◀────│ Orchestrator) │◀────│ Code Exec) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ Code + Logs + │
│ Traces + Tests │
└──────────────────┘
📄 许可证
本项目采用MIT许可证 - 有关详细信息,请参阅 LICENSE 文件。
开发
npm run dev
npm test
npm run lint
npm run typecheck
安全考虑
- API密钥:将你的Gemini API密钥安全地存储在环境变量中。
- 代码访问:服务器会读取本地文件,请确保设置了适当的文件权限。
- 数据隐私:代码会发送到谷歌的Gemini API,请查看他们的数据政策。
故障排除
"GEMINI_API_KEY未找到"
- 确保你已在
.env
文件或环境中设置了GEMINI_API_KEY
。
- 检查
.env
文件是否位于项目根目录。
"文件未找到"错误
- 验证传递给工具的文件路径是否为绝对路径。
- 检查文件权限。
Gemini API错误
- 验证你的API密钥是否有效且具有适当的权限。
- 检查API配额和速率限制。
- 确保你的谷歌云项目已启用Gemini API。
验证错误
- 服务器使用Zod进行参数验证。
- 确保提供了所有必需的参数。
- 检查参数名称是否使用蛇形命名法(例如,
claude_context
,而不是claudeContext
)。
- 查看错误消息以了解具体的验证要求。
多模型调试的最佳实践
使用此MCP服务器调试分布式系统时:
- 首先捕获时间线 - 使用带有请求ID的OpenTelemetry / Jaeger跟踪。
- 从Claude Code开始 - 让它进行初步调查和快速修复。
- 有策略地升级到Gemini:当你需要:
- 分析超过100MB的跟踪信息。
- 关联10个以上服务的信息。
- 运行带有代码执行的迭代假设测试。
- 结合传统工具:
- 使用
go test -race
、ThreadSanitizer进行竞争检测。
- 使用rr或JFR进行确定性重放。
- 使用TLA + 或Alloy进行形式验证。
贡献
- 分叉仓库。
- 创建功能分支。
- 进行更改。
- 为新功能添加测试。
- 提交拉取请求。
作者
Jonathan Haas - GitHub个人资料
致谢
- 为与Anthropic的Claude Code集成而构建。
- 由谷歌的Gemini AI提供支持。
- 使用模型上下文协议(MCP)进行通信。
支持
如果遇到任何问题或有疑问: