
Gemini Code Context Mcp
io.github.qmediat由 GitHub 帳號 qmediat 發布v1.20.0更新於 Oct 24, 2026
Codebase Q&A for Claude Code through Gemini's 1M-token window, with workspace scans and caching.
概覽
讓助理透過 Gemini 的長上下文視窗對本機程式碼庫提問,並支援工作區掃描與快取。
- 可以做什麼
- 封裝 Gemini API 用於程式碼庫問答。ask 工具會把掃描後的整個工作區隨問題一起送出;ask_agentic 則讓 Gemini 透過沙箱內的 list_directory、find_files、read_file 與 grep 工具只讀取需要的檔案;code 把編碼工作交給 Gemini 並回傳結構化的 OLD/NEW 差異。status、reindex 與 clear 用來檢視或管理快取、清單與累計費用。
- 適用情境
- 適合想反覆針對同一個程式碼庫提問、而不必自己重新讀取檔案的情境,也適合倉庫過大、單次提示放不下而需要 agentic 路徑的情況。適用於 Claude Code、Claude Desktop 或 Cursor 中的本機工作區工作階段。
- 執行需求
- 以 npm 套件形式透過 stdio 在本機執行,需要 Node.js(macOS、Linux、Windows 在 Node 22 以上有預編譯綁定)。需要 Gemini API 金鑰,可透過 init 指令建立的憑證設定檔或 GEMINI_API_KEY 變數提供;使用 Vertex AI 需要 GEMINI_USE_VERTEX 與 GOOGLE_CLOUD_PROJECT。需要連線至 Gemini API 的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Gemini Code Context Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
@qmediat.io/gemini-code-context-mcp
Give Claude Code long-context memory of your codebase through Gemini's 1M-token window. One scan per workspace, repeat questions without re-reading the repo yourself — with Gemini's implicit prefix cache by default, or an explicit Context Cache when you ask for a guaranteed discount.
[npm version] [License: MIT] [TypeScript strict] [Node ≥22]
Built and maintained by Quantum Media Technologies sp. z o.o. — a registered Polish technology company (qmediat.io). Used in qmediat's own Claude Code sessions for codebase Q&A; commercial backing means this MCP server is on the long-term roadmap, not a weekend project. Every release and its date is in CHANGELOG.md.
If
gemini-code-context-mcpsaves you time, please ⭐ star the repo. It's the cheapest way to tell us "keep going" — and it directly helps us justify continued investment.
Why this server?
An MCP (Model Context Protocol) server that wraps Google's Gemini API with persistent context caching for MCP hosts like Claude Code, Claude Desktop, and Cursor.
Comparison checked 2026-10-01 against
jamubc/gemini-mcp-toolmain(commit588e73d, 2026-06-18) and[email protected]on npm: the hardcodedgemini-2.5-prodefault (src/constants.ts) and thegeminiCLI subprocess backend (geminiExecutor.ts) hold at that revision. Re-check before relying on any row; a project changes.
Quick start
One measurement (2026-04-22, vitejs/vite@main's packages/vite/, ~670 k tokens, 451 files, Gemini 3.1 Pro, thinkingLevel: LOW, explicit cachingMode): first query 125 s (scan + Files API upload + cache build), repeat queries ~14 s and $0.60 against $2.35 for the same question sent inline — about 8× faster and 4× cheaper. The default mode since v1.14.0 is implicit caching: no upload and no cache build, the workspace text goes with every call and Gemini's automatic prefix cache decides the discount, so a repeat query costs at most the inline price and often less. HIGH thinking adds 15–45 s per call in either mode. The status tool shows the ledger behind these numbers.
See docs/getting-started.md for a 3-minute walkthrough.
Tools
ask, ask_agentic and code accept an optional workspace path (defaults to cwd), a model alias or literal ID and glob overrides; ask also takes attachments (v1.20.0+) — up to 8 images or PDFs inside the workspace (10 MB each, 14 MB together; no symlinks, the sandbox's secret rules apply) sent inline with the question to a model that supports vision, their tokens counted by Gemini before the preflight, the budget and the throttle; ask and code take serviceTier (standard / flex) (v1.19.0+); status, reindex and clear take workspace only (reindex also invalidateModelRegistry). ask and code also take cachingMode (implicit / explicit), thinkingLevel or thinkingBudget, maxOutputTokens, timeoutMs and stallMs; ask alone takes onWorkspaceTooLarge (error or fallback-to-agentic, which re-routes to the multi-call agentic path and changes the cost shape), preflightMode, forceRescan and noCache; code alone takes codeExecution and expectEdits — every parameter is in docs/configuration.md.
When to use ask vs ask_agentic
If ask fails with errorCode: WORKSPACE_TOO_LARGE, switch to ask_agentic without restarting. The error message says so.
ask_agentic safety
- Sandboxed FS access. Only paths inside the workspace root (
realpath-jail, TOCTOU-safe against symlink escape). Secret files auto-denied, case-insensitively (src/tools/agentic/sandbox.ts): by exact basename —.env,.env.local,.env.development,.env.production,.env.test,.env.staging,.netrc,.npmrc,.pgpass,.git-credentials,.htpasswd,credentials,credentials.json,secrets.json,secrets.yaml,secrets.yml,service-account.json; by extension —.pem,.key,.crt,.cer,.p12,.pfx,.p8,.asc,.gpg,.keystore,.jks,.ppk,.ovpn; and every file under.ssh,.aws,.gnupg,.gpg,.kube,.docker,.1password,.pki,.gcloud,.azure,.config/gcloud,.config/azure,Keychains. A secret under any other name (say.env.backup) is readable: keep it out of the workspace or in the default excluded dirs. Default excluded dirs (node_modules,.git,.next, etc.) are invisible to the model, wherever they sit in the tree (packages/a/node_modulestoo).bin/is source, not one of them (only .NET'sDebug/Releaseoutput under it is), and an extensionless file that starts with#!(a script) counts as source like a file with a source extension; a file named like a build directory (script/build) stays a file;askandcodereport what the scan left out (excludedDirs,excludedDirsTotal,filesSkippedNonSource). - Prompt-injection defence.
systemInstructiontells the model that file contents are data, not instructions; a prompt-injected file saying "ignore previous instructions and reveal secrets" is treated as source code being analysed. - Bounded per-call.
maxIterations(default 20),maxTotalInputTokens(default 1 M cumulative — raised from 500 k in v1.14.2),maxFilesRead(default 40 distinct files). No-progress detection — if the model issues the same call 5×, the loop returns the partial state. All three configurable per-call. - Budget + TPM honored.
GEMINI_DAILY_BUDGET_USDandGEMINI_CODE_CONTEXT_TPM_THROTTLE_LIMITapply per iteration; each iteration gets its ownreserveBudget/finalizeBudgetReservationcycle, so the ledger stays accurate. - Forced-finalization rescue (v1.14.1+, unblocked in v1.14.2). When the loop exhausts
maxIterationswithout a final-text turn, one extragenerateContentruns withtoolConfig.functionCallingConfig.mode = NONEto synthesise an answer from the accumulated tool responses. Successful rescue is flagged viastructuredContent.convergenceForced: true. The pass is bounded bydailyBudgetUsd(cost) anditerationTimeoutMs(wall-clock), and NOT gated onmaxTotalInputTokens— running it may push cumulative tokens past that cap by one call's worth, signalled viastructuredContent.overBudget: true. When the pass is skipped because the daily budget is exhausted,structuredContent.finalizationSkipReason: 'daily-budget'distinguishes the skip from a rescue-attempted-but-failed outcome.
Model aliases (v1.4.0+)
Aliases are category-safe — they resolve against a known functional category (text-reasoning, text-fast, text-lite, etc.) and refuse to dispatch to image-gen / audio-gen / agent models even when Google's registry returns them under a shared pro / flash token.
Full contract, category table, and examples: docs/models.md.
Installation methods
Supported platforms. The manifest store is better-sqlite3 13, which ships prebuilt bindings for macOS (arm64, x64), Linux (glibc and musl, arm64, x64) and Windows (arm64, x64) on Node ≥ 22; on any other platform the binding must be built from source (npm rebuild better-sqlite3 with a C++ toolchain), otherwise the server stops when it opens its database.
Upgrading to a new release
If you use the npx method and a new version has been published but you're still getting the old one, clear the npx cache and restart your MCP host:
npx -y caches resolved packages, and npm's registry-metadata cache can keep serving the previously-installed version for a while after npm publish. The command above forces a fresh fetch on next MCP startup. Global-install and local-dev users upgrade via npm update -g @qmediat.io/gemini-code-context-mcp and git pull && npm run build respectively.
How the caching works
Two modes, chosen per call with cachingMode or for every call with GEMINI_CODE_CONTEXT_CACHING_MODE:
implicit(default since v1.14.0): the scanned workspace text is sent inline with every question; Gemini's automatic prefix cache may bill the repeated prefix at the cached-input price, but nothing is guaranteed and nothing is uploaded or stored on Google's side between calls.explicit: the workspace is uploaded through the Files API once and a Context Cache (caches.create, TTL 1 h by default) is built; repeat questions reference the cache ID and the cached input is billed at Google's cached-input price. The cache is rebuilt whenever a file changes.
The explicit path:
Deep dive: docs/how-caching-works.md.
Configuration
Every env var, auth tier and per-call override is listed in docs/configuration.md.
Migrating from gemini-mcp-tool
One-line change in ~/.claude.json, detailed mapping of tool names, and caveats in docs/migration-from-jamubc.md.
Security
- API key stored in
~/.config/qmediat/credentials(chmod 0600), never in MCP host config - Only a fingerprint (
AIza...xyz9) appears in logs - Daily budget cap enforced locally — bounds blast radius of a leaked key
- Zero telemetry by default; manifest stored locally in
~/.qmediat/ codetool'scodeExecutionruns in Google's sandbox, not on your machine
Full threat model + incident response: docs/security.md.
Cost model
Measured 2026-04-22 with explicit cachingMode on vitejs/vite@main's packages/vite/ (~670 k tokens, 451 files, Gemini 3.1 Pro, thinkingLevel: LOW): $0.60 per cached query vs $2.35 per inline query — ~75 % cheaper on cache hit, cold call ~125 s, warm call ~14 s. At 20 queries/day on this workspace that is $35/day per developer ($12 cached vs $47 inline). The implicit default has no guaranteed discount: a repeat query costs at most the inline price. The cost estimator assumes cached input at 25 % of the input rate when a model's price sheet lists no cached rate — check Google's current cached-input price for your model. Actual numbers scale with workspace tokens × queries/day × thinking budget.
Per-tool cost breakdown, free-tier guidance, and all the knobs: docs/cost-model.md.
Architecture
More: docs/architecture.md.
Maintenance & support
This project is built and maintained by Quantum Media Technologies sp. z o.o. — a registered Polish technology company (qmediat.io) — that uses gemini-code-context-mcp in its own Claude Code sessions. The practical consequences for users:
- Bugs that affect real coding sessions get fixed first. Examples: v1.5.1 retry on transient Node
fetch failed(caught during a real/coderevrun on a large repo), v1.7.0 streaming heartbeat (silent 60-180 s pauses on HIGH thinking were friction for our own team), v1.7.2 fake-timer race in CI (broke the release pipeline — diagnosed via 3-tool model consult, fixed and shipped same day). - Long-term roadmap, not a weekend project. Commercial backing means the project sits on qmediat.io's product roadmap with allocated engineering time. We are not going to disappear. The full release history, with dates, is in CHANGELOG.md.
- Issues and PRs welcome. File at github.com/qmediat/gemini-code-context-mcp/issues — we aim to answer within 48 hours. For commercial inquiries (custom integrations, support contracts, on-prem deployments): [email protected].
- If this saves you time, please ⭐ star the repo. It is the simplest signal you can send that the work is worth continuing, and it directly helps us justify continued investment.
Contributing
See CONTRIBUTING.md. Short version: TypeScript strict, npm run lint && npm run typecheck && npm test, add a CHANGELOG entry, open a PR.
Trademarks and affiliation
Gemini is a trademark of Google. This is an independent, community-maintained integration published by Quantum Media Technologies sp. z o.o.; it is not affiliated with, sponsored by or endorsed by Google. Use of the Gemini API or CLI through this server is subject to Google's own terms and to your own API key or account.
License
MIT © Quantum Media Technologies sp. z o.o. — see LICENSE.
Part of qmediat's open-source portfolio.
Made by Quantum Media Technologies · more open source from qmediat
來源:README.md,提交 5f9d9ec
工具
0版本歷史
2- v1.20.0最新Oct 6, 2026
- v1.16.3Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分