关于 gemini-researcher
Gemini Researcher 是无状态、只读的 MCP 服务,将代码库研究请求交给 Gemini CLI。它面向需要分析本地代码的开发者 Agent,并帮助减少调用 Agent 的上下文和模型用量。
主要功能
- 01快速和深入的代码库查询
- 02目录结构分析
- 03只读安全策略
- 04结构化 JSON 结果
- 05健康状态和路径检查
- 06分块结果读取
适用场景
- 01跨多个文件审查架构
- 02审计身份验证代码的安全性
- 03梳理陌生代码库
- 04解释特定文件或代码段
MCP 相关
提供代码库查询、目录分析、路径验证、健康检查和分块结果读取工具。MCP 客户端通过该服务将研究请求交给 Gemini CLI。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y gemini-researcherGEMINI_API_KEY密钥Gemini API key (optional if you already authenticated Gemini CLI via "gemini" login)PROJECT_ROOTOverride the project root directory used for path validation (defaults to current working directory)RESPONSE_CHUNK_SIZE_KBChunk size threshold (KB) for large responses (default: 10)CACHE_TTL_MSChunk cache TTL in milliseconds (default: 3600000 / 1 hour)DEBUGEnable debug logging (set to "true" or "1")GOOGLE_APPLICATION_CREDENTIALS密钥Vertex AI / Google auth: path to a service account JSON credentials fileGOOGLE_CLOUD_PROJECTVertex AI / Google auth: GCP project ID (used by some auth configurations)VERTEX_AI_PROJECTVertex AI / Google auth: Vertex AI project identifier (used by some auth configurations)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gemini Researcher
一款轻量、无状态的 MCP(模型上下文协议)服务,可让开发者 Agent(Claude Code、GitHub Copilot)将深度代码仓库分析交由 Gemini CLI 处理。该服务为只读模式,以文本形式返回结构化 JSON,旨在减少调用方 Agent 的上下文和模型用量。
状态:v1 已完成。核心功能稳定,但项目仍处于早期阶段。欢迎反馈!
如果它帮你节省了令牌, ⭐ 请考虑点个星!:)
主要目标:
- 让 Gemini CLI 在本地读取大型代码库并自行研究,从而减少 Agent 的上下文用量
- 将繁重的分析工作交给 Gemini,从而减少调用方 Agent 的模型用量
- 保持服务无状态且只读,以确保安全
为什么要使用它?
无需将整个文件复制到 Agent 的上下文中(浪费令牌并让对话变得杂乱),此服务可让 Gemini CLI 直接读取项目中的文件。你的 Agent 发送研究查询,Gemini 利用其大型上下文窗口读取并综合信息,然后返回结构化结果。这样既能节省令牌,也能让 Agent 保持专注,并让复杂的代码库分析变得切实可行。
已验证的客户端: Claude Code、Cursor、VS Code(GitHub Copilot)
说明
它肯定也能与其他客户端配合使用,但我还没有亲自测试过。如果你在其他客户端上试用,请提交 issue!
目录
概览
Gemini Researcher 接收 AI Agent 的查询,并使用 Gemini CLI 分析本地代码文件。结果将以格式化的 JSON 返回,供 Agent 使用。
运行时安全
该服务在启用安全限制的情况下运行 Gemini CLI。完整的技术细节请参阅 docs/runtime-contract.md。
默认调用模式:
gemini [ -m <model> ] --output-format json --approval-mode default [--admin-policy <path>] -p "<prompt>"
主要安全要点:
- 使用
--approval-mode default(而非 yolo 模式)进行受控执行 - 默认强制执行只读策略,以防止文件更改
- 策略会阻止
write_file、replace、run_shell_command等会修改内容的工具 - 可通过
GEMINI_RESEARCHER_ENFORCE_ADMIN_POLICY=0禁用严格强制(不推荐)
身份验证和运行状况检查
运行 health_check 并设置 includeDiagnostics: true,即可查看身份验证状态和服务运行状况。
| authStatus | 含义 | 影响 |
|---|---|---|
configured | Gemini CLI 已通过身份验证 | 服务已准备就绪 |
unauthenticated | 未找到有效的身份验证 | 服务标记为降级状态 |
unknown | 无法验证身份验证状态 | 服务标记为降级状态 |
health_check.status 的取值:
ok:Gemini CLI 可用、身份验证正常,且安全策略已启用degraded:设置不完整、身份验证状态不明确,或安全策略已禁用
前提条件
- 已安装 Node.js 18+
- 已安装 Gemini CLI:
npm install -g @google/gemini-cli - Gemini CLI 已通过身份验证(推荐:运行
gemini→ 使用 Google 登录),或设置GEMINI_API_KEY
快速检查:
node --version
gemini --version
快速开始
步骤 1:验证环境
运行设置向导,确认 Gemini CLI 已安装并通过身份验证:
npx gemini-researcher init
步骤 2:配置 MCP 客户端
标准配置适用于大多数工具:
{
"mcpServers": {
"gemini-researcher": {
"command": "npx",
"args": [
"gemini-researcher"
]
}
}
}
说明
在原生 Windows 上,某些 MCP 主机使用不带 shell 的进程启动方式,可能无法可靠地解析 npm 命令 shim(
npx、gemini)。 如果启动时出现错误(spawn ... ENOENT/GEMINI_CLI_LAUNCH_FAILED,但在 PowerShell 中运行正常),建议使用 Docker 或 WSL,以确保立即可靠运行。 请参阅docs/platforms/windows.md中的完整解决方案。
VS Code
添加到 VS Code MCP 设置中(如有需要,请创建 .vscode/mcp.json):
{
"servers": {
"gemini-researcher": {
"command": "npx",
"args": [
"gemini-researcher"
]
}
}
}
Claude Code
选项 1:命令行(推荐)
本地(用户范围)作用域
# Add the MCP server via CLI
claude mcp add --transport stdio gemini-researcher -- npx gemini-researcher
# Verify it was added
claude mcp list
项目作用域
导航到项目目录,然后运行:
# Add the MCP server via CLI
claude mcp add --scope project --transport stdio gemini-researcher -- npx gemini-researcher
# Verify it was added
claude mcp list
选项 2:手动配置
将以下内容添加到项目根目录中的 .mcp.json(项目作用域):
{
"mcpServers": {
"gemini-researcher": {
"command": "npx",
"args": [
"gemini-researcher"
]
}
}
}
或者,将其添加到 ~/.claude/settings.json,以用于本地作用域。
添加服务后,重启 Claude Code 并使用 /mcp 验证连接。
Cursor
前往 Cursor Settings -> Tools & MCP -> Add a Custom MCP Server。添加以下配置:
{
"mcpServers": {
"gemini-researcher": {
"type": "stdio",
"command": "npx",
"args": [
"gemini-researcher"
]
}
}
}
说明
服务会自动将 IDE 打开工作区时所在的目录或终端当前目录用作项目根目录。若要分析其他目录,可选择设置
PROJECT_ROOT:
示例
{
"mcpServers": {
"gemini-researcher": {
"command": "npx",
"args": [
"gemini-researcher"
],
"env": {
"PROJECT_ROOT": "/path/to/your/project"
}
}
}
}
步骤 3:重启 MCP 客户端
步骤 4:测试
向 Agent 提问:“使用 gemini-researcher 分析该项目。”
工具
所有工具都返回结构化 JSON(作为 MCP 文本内容)。大型响应会分块(每块约 10KB),并缓存 1 小时。
| 工具 | 用途 | 适用场景 |
|---|---|---|
quick_query | 使用 flash 模型进行快速分析 | 针对特定文件或小段代码的快速提问 |
deep_research | 使用 pro 模型进行深入分析 | 复杂的多文件分析、架构评审、安全审计 |
analyze_directory | 绘制目录结构 | 了解陌生代码库、生成项目概览 |
validate_paths | 预先检查文件路径 | 在运行耗时查询前验证文件是否存在 |
health_check | 诊断 | 排查服务/Gemini CLI 问题 |
fetch_chunk | 获取分块响应 | 检索大型响应的剩余部分 |
查询工具的回退链会根据模型系列选择:
quick_query:flash -> flash_lite -> autodeep_research:pro -> flash -> flash_lite -> autoanalyze_directory:flash -> flash_lite -> auto
使用 API 密钥身份验证时,回退机制也会处理模型不可用/不受支持错误(而不只是配额/容量错误)。
示例工作流
了解安全漏洞:
Agent: Use deep_research to analyze authentication flow across @src/auth and @src/middleware, focusing on security
快速解释代码:
Agent: Use quick_query to explain the login flow in @src/auth.ts, be concise
绘制陌生代码库的结构:
Agent: Use analyze_directory on src/ with depth 3 to understand the project structure
完整工具架构(供参考)
quick_query
{
"prompt": "Explain @src/auth.ts login flow",
"focus": "security",
"responseStyle": "concise"
}
deep_research
{
"prompt": "Analyze authentication across @src/auth and @src/middleware",
"focus": "architecture",
"citationMode": "paths_only"
}
analyze_directory
{
"path": "src",
"depth": 3,
"maxFiles": 200
}
validate_paths
{
"paths": ["src/auth.ts", "README.md"]
}
health_check
{
"includeDiagnostics": true
}
fetch_chunk
{
"cacheKey": "cache_abc123",
"chunkIndex": 2
}
Docker
可在 Docker Hub 获取预构建的多平台 Docker 镜像:
# Pull the image (works on Intel/AMD and Apple Silicon)
docker pull capybearista/gemini-researcher:latest
# Run the server (mount your project and provide API key)
docker run -i --rm \
-e GEMINI_API_KEY="your-api-key" \
-v /path/to/your/project:/workspace \
capybearista/gemini-researcher:latest
使用 Docker 配置 MCP 客户端:
{
"mcpServers": {
"gemini-researcher": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "GEMINI_API_KEY",
"-v", "/path/to/your/project:/workspace",
"capybearista/gemini-researcher:latest"
],
"env": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}
说明
- stdio 传输需要
-i标志- 容器会将你的项目挂载到
/workspace(项目根目录)- 将
/path/to/your/project替换为实际项目路径- 将
your-api-key替换为实际的 Gemini API 密钥(使用 Docker 时必需)
平台指南
- Windows 原生启动模式与修复方法:
docs/platforms/windows.md
故障排除(常见问题)
- 修复决策树:
| 错误 / 信号 | 首先运行此检查 | 接下来更改此配置 |
|---|---|---|
GEMINI_CLI_LAUNCH_FAILED 或 spawn ... ENOENT | 在 MCP 宿主使用的同一终端配置文件中运行 gemini --help 和 npx --version | 优先使用 Docker 或 WSL 配置。如果坚持使用原生模式,请将宿主命令指向稳定的 shim / 二进制文件路径,然后重启宿主。 |
health_check 警告:“仅通过 cmd /c 回退解析” | 使用 includeDiagnostics: true 运行 health_check,并检查 diagnostics.resolution | 更新宿主配置,直接启动报告的 .cmd shim,而不是依赖 cmd /c 回退。 |
MCP 宿主无法通过 npx 启动服务 | npx --version | 将宿主服务命令从 npx gemini-researcher 改为已安装的二进制文件路径(或 Docker 传输方式)。 |
ADMIN_POLICY_UNSUPPORTED / 不支持输出格式 | gemini --help,并确认支持 --admin-policy、json、stream-json | 将 Gemini CLI 升级至 v0.36.0+ |
AUTH_MISSING / AUTH_UNKNOWN | 交互式登录 gemini,然后重新运行 health_check | 对 Gemini CLI 进行身份验证,或设置 GEMINI_API_KEY |
GEMINI_CLI_NOT_FOUND:安装 Gemini CLI:npm install -g @google/gemini-cliGEMINI_CLI_LAUNCH_FAILED:这是启动路径问题,而非身份验证 / 功能问题。在 Windows 上,命令 shim 在无 shell 的启动上下文中可能会失败。以交互方式验证gemini --help和npx --version,然后在宿主启动模式严格时优先使用 Docker 或 WSL。GEMINI_RESEARCHER_GEMINI_COMMAND:覆盖服务使用的 Gemini 命令名称 / 路径(用于包装器或固定的二进制文件位置)。GEMINI_RESEARCHER_GEMINI_ARGS_PREFIX:为每次调用添加 Gemini 参数前缀(例如--config <file>)。health_check诊断信息会对已配置参数前缀输出中的敏感令牌类值进行脱敏。AUTH_MISSING:运行gemini,然后进行身份验证或设置GEMINI_API_KEYAUTH_UNKNOWN:无法确认身份验证状态(通常是网络 / CLI 探测失败)。如果存在启动错误,请先修复启动路径;否则,请验证gemini能否以交互方式正常运行,然后重试。ADMIN_POLICY_MISSING:重新安装软件包,或确认已安装的软件包中存在policies/read-only-enforcement.toml。ADMIN_POLICY_UNSUPPORTED:将 Gemini CLI 升级至 v0.36.0+(gemini --help应包含--admin-policy)。- 只有在成功探测
gemini --help后,才应解读功能错误(ADMIN_POLICY_UNSUPPORTED、不支持输出格式)。如果探测启动失败,应先将其视为启动路径故障。 GEMINI_RESEARCHER_ENFORCE_ADMIN_POLICY=0:禁用严格启动策略检查。这会降低安全保障。.gitignore阻止访问文件:Gemini 默认遵循.gitignore;如果你确实希望包含被忽略的文件,请在gemini /settings中切换fileFiltering.respectGitIgnore(注意:这会全局改变 Gemini 的行为)PATH_NOT_ALLOWED:所有@path引用都必须解析到已配置的项目根目录内(默认是process.cwd())。使用validate_paths预先检查路径。QUOTA_EXCEEDED:服务会重试备用模型;如果所有选项都已用尽,请缩小范围(使用quick_query)或等待配额重置。
参与贡献
阅读贡献指南以开始参与。
快速链接:
许可证
为 AI 辅助开发社区倾心打造 ♡
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。