The groundings array is the whole point: each answer carries the pages behind it, so a claim can be opened and checked instead of trusted. Two knobs decide cost and latency — the thinking level, settable per call, and the token cap — and every HTTP setting can come from the environment, so no secret has to sit in config.yml.
A Go server that turns Gemini's grounded search into a single MCP tool. The response is not just text — it carries the source titles, domains and URLs the answer was built from, so a claim can be checked rather than taken on faith.
- `search` takes a natural-language `question` and returns generated text plus a `groundings` list of title, domain and URL
- `max_token` caps the response size for one call and `thinking_level` overrides the reasoning depth per call
- Two transports: stdio for Claude Desktop and Claude Code, and Streamable HTTP via the `httpserver` subcommand
- In HTTP mode, `/health` is unauthenticated for liveness checks while the MCP endpoint requires a bearer token
A Gemini API key in `GEMINI_API_KEY`. Docker is the recommended path: `docker pull cnosuke/mcp-gemini-grounded-search:latest` and run it with `server` as the argument. To build from source you need Go 1.24 or later. `GEMINI_MODEL_NAME` defaults to gemini-3.6-flash, `GEMINI_MAX_TOKENS` to 5000, and `GEMINI_THINKING_LEVEL` accepts MINIMAL, LOW, MEDIUM or HIGH. For HTTP mode, `HTTP_AUTH_TOKEN` is the bearer token, `HTTP_PORT` defaults to 8080 and `HTTP_ENDPOINT_PATH` to /mcp.
One command plus a key — docker pull cnosuke/mcp-gemini-grounded-search:latest, then supply credentials
