Skip to main content
Glama
wu55246842

GeminiCLI MCP Antigravity Server

by wu55246842

GeminiCLI MCP Antigravity Server

A local Model Context Protocol (MCP) server designed for code analysis and investigation without code modification. Supports connection via SSE, enabling seamless integration with Gemini CLI and Antigravity.

特性

  • 提供 5 组强大的 MCP Tools

    • repo_list: 枚举工作区根目录文件

    • code_search: 强大的基于 Ripgrep (支持回退 Node.js) 的全库内容检索

    • file_read: 精确读取指定文件的指定行以提供引用证据

    • symbol_hint: 基于正则探索常见源文件的符号(Class、Function、API Endpoints)

    • build_investigation_report: 生成事故排查标准的 Markdown 模板报告

  • 严格的安全沙盒:限制只能读取 WORKSPACE_ROOT 内的文件,原生支持 allowlist/denylist,忽略常见 build 目录。

  • 本地审计:自动日志记录至 data/audit.log 包含每次 Tool 调用的参数,不写回用户文件修改。

  • 专为 Windows 11 设计:开箱即跑的 Node.js/TypeScript 实现。

Related MCP server: MCP Code Intelligence

环境要求

  • Node.js: v18.x 或更高

  • OS: Windows 11 (也可兼容 Linux/macOS)

  • 可选依赖: Ripgrep (rg)(如未安装会自动降级为 Node 实现)

快速安装与启动

  1. 在项目目录执行依赖安装:

    npm install
  2. 复制环境变量示例:

    copy .env.example .env
  3. 编辑 .env 文件:

    # 服务运行的端口
    PORT=3001
    
    # 你期望分析的目标项目的绝对路径
    WORKSPACE_ROOT=D:/Your/Target/Project
    
    # 如果需要强制指定 ripgrep 路径(如果你有)
    # RG_PATH=C:/Program Files/ripgrep/rg.exe
  4. 编译并启动服务:

    npm run build
    npm start

    启动成功后,控制台会打印:Listening on http://127.0.0.1:3001


客户端配置示例(SSE 接入)

如何将同一 Server 同时接入 Gemini CLI 和 Antigravity?

你只需要把上述 npm start 开启的 Server 保持在后台独立运行,然后在 Gemini CLI 和 Antigravity 中都配置接入这个 http://127.0.0.1:3001/sse 节点即可。因为是基于 HTTP 的 SSE (Server-Sent Events) 长连接,同一个端口可以接受多个 Client 并发连接并响应调用。

1. Gemini CLI 接入 (~/.gemini/settings.json) 参见 examples/gemini-settings.json

{
  "mcp": {
    "servers": {
      "local_code_analysis": {
        "url": "http://127.0.0.1:3001/sse"
      }
    }
  }
}

2. Antigravity 接入 (mcp_config.json) 参见 examples/antigravity-mcp_config.json

{
  "mcpServers": {
    "geminiCLI-MCP": {
      "url": "http://127.0.0.1:3001/sse"
    }
  }
}

常见分析问题示例模板 (Sample Queries)

Q: “如何用它找一个 error code 在哪里抛出?” 给 AI 发送的 Prompt:

“请使用 code_search 检索 ERR_DB_TIMEOUT_001,找到它被抛出的具体文件和行号,并用 file_read 读取抛出位置的上下 20 行,告诉我触发超时错误前的业务逻辑。”

Q: “如何让它总结某个 API 的 data flow(入口->service->repo->SQL/topic)?” 给 AI 发送的 Prompt:

“首先用 symbol_hint 找出所有的 endpoint,告诉我处理 POST /api/v1/orders 的 Controller 是什么。发现是 OrderController.ts 后,请用 code_search 看看里面调用了哪个 Service。接着顺藤摸瓜检索该 Service 里的 Repository 调用,并总结从入口到 SQL 写入数据库的完整 data flow(仅输出 markdown 说明,禁止修改代码)。”


常见问题排查 (Troubleshooting in Windows 11)

  1. **端口被占用 (EADDRINUSE)** *问题*: 无法绑定 3001 端口。 *解决*: 在 .env中修改PORT=3002`,并同步修改各客户端配置的 URL。

  2. "Path access denied" 错误 问题: 你试图跨盘符或检索不在 WORKSPACE_ROOT 定义的文件夹。 解决: 检查你 code_searchfile_read 传入的是相对路径还是包含在 WorkSpace 下的真实绝对路径。

  3. 没有找到 Ripgrep 问题: 终端出现 Ripgrep search failed... falling back to nodefs search.解决: 纯提示信息,系统已自动平滑降级到 Node 原生搜索。如果项目非常大,推荐通过 winget install BurntSushi.ripgrep.MSVC 安装 rg 以获取百倍速度提升。

原理说明

在本项目(GeminiCLI_MCP_Antigravity)的语境下,Antigravity 是另一个可以接入该 MCP 服务的“客户端”,它与 Gemini CLI 的作用互补。

如果说 Gemini CLI 是你的“文字助手”,那么 Antigravity 通常被视为你的“图形化代码分析工作台”。

它的核心作用如下:

  1. 提供可视化交互界面 (GUI) Gemini CLI 运行在终端,交互以文字为主。而 Antigravity 通常提供一个更直观的界面,可以让你在侧边栏看到文件树,或者在更宽敞的窗口中阅读 AI 生成的代码分析报告、调用图等。

  2. 共享“后端”探针 这个项目的最大特色是“一服多用”。你运行的那个 npm start 开启的 SSE 服务器(3001 端口),可以同时被两个客户端连接:

  • Gemini CLI:负责快速的、基于命令行的即时问答。

  • Antigravity:负责更深度的、需要可视化展示的复杂项目排查。

  1. 专注“事故排查”与“代码调查” Antigravity 往往内置了更复杂的 Prompt 模板和工作流(Workflow)。例如,本项目中专门提供了一个工具叫 build_investigation_report:

  • 当你使用 Antigravity 时,它可以调用这个工具自动生成一份符合行业标准的 Markdown 事故排查报告。

  • 它擅长处理“顺藤摸瓜”式的逻辑推导,比如:入口 A -> 服务 B -> 数据库 C 的数据流向图,在 Antigravity 中展示会比在命令行中更易读。

  1. 离线/本地化优先 Antigravity 和该 MCP Server 的设计初衷都是为了隐私和性能。

  • 它不需要把你的整个 Java 项目(ib)上传到云端。

  • 它利用本地的 ripgrep (rg) 进行秒级搜索,然后只把 AI 关心的那一小段代码片段发送给大模型处理。

总结

  • MCP Server (本项目):是“眼睛和手”,负责去硬盘上读代码、搜关键字。

  • Gemini CLI:是“对讲机”,让你通过命令行指挥。

  • Antigravity:是“大屏幕监控室”,让你更全局、更直观地进行代码分析和问题定位。

1 MCP 服务端:通过 /sse 和 /message 路由,继续为 Gemini CLI 和 Antigravity 提供本地代码检索能力。 2 Web 助手服务端:通过 / 路由提供静态网页,通过 /api/chat 路由接收网页端发来的图片和文字,并在 Node.js 后台调用 Google 的 Gemini API 进行回答。

Related MCP Connectors

Related MCP Servers