All tools

Gemini CLI MCP Config Validator

Paste your ~/.gemini/settings.json mcpServers section to validate the httpUrl/url/command precedence, timeout, and trust flag.

Your config never leaves your browser. No upload. No login.
Paste your settings.json
Your config never leaves your browser
0 chars

Paste your settings.json above to run deterministic checks.

Or click to see how it works.

What this validator checks

  • JSON syntax + line/column on errors
  • UTF-8 BOM, smart quotes, trailing commas
  • Top-level mcpServers object shape
  • Transport precedence: httpUrl > url > command
  • Multiple transports set (warn — ambiguous)
  • timeout must be a number
  • trust must be a boolean
  • Env-var values must be strings
  • Windows backslash escapes
  • Insecure HTTP for non-local URLs
  • API key / token leak detection
  • Duplicate / case-conflict server names

Why this exists

Gemini CLI's MCP support is documented in the gemini-cli repo with one notable divergence from the rest: a separate httpUrl field for Streamable HTTP transport, distinct from url (SSE).

The most common silent failure: copying a remote-MCP config from a Claude Desktop or Cursor tutorial (where url means Streamable HTTP) into Gemini CLI, where the same field is interpreted as SSE. The fix is renaming url to httpUrl. The validator surfaces when both are set.

Frequently asked

Where is Gemini CLI's settings.json?
User scope: ~/.gemini/settings.json. Project scope: .gemini/settings.json in your repo root. Unlike Claude Desktop, the mcpServers section is one of several keys inside settings.json (alongside other Gemini CLI settings like model preferences and tool config). The validator only checks the mcpServers section.
What's the difference between "httpUrl" and "url" in Gemini CLI?
They're different transports. `httpUrl` is for Streamable HTTP (the current MCP transport per the spec). `url` is for SSE (Server-Sent Events, the older transport). Per the official docs (github.com/google-gemini/gemini-cli), Gemini CLI prefers them in this order: httpUrl > url > command. If multiple are set, only the highest-precedence one is used.
Does Gemini CLI's mcpServers live inside settings.json?
Yes. Unlike Claude Desktop (where mcpServers IS the entire file's top-level structure), in Gemini CLI it's one key within a larger settings.json that holds many configurations. When you paste, paste just the contents of settings.json — the validator reads the mcpServers section.
How do I set a custom timeout for an MCP server in Gemini CLI?
Add `"timeout": 600000` (milliseconds) to the server entry. Default per Gemini CLI docs is 600,000ms (10 minutes). Useful for slow-starting MCPs (local LLM-based servers, large indexers). The validator checks that `timeout` is a number, not a string.
What's the "trust" flag for in Gemini CLI?
`"trust": true` allows the MCP server to skip Gemini CLI's per-tool approval prompt. Use sparingly — once trusted, all that server's tools execute without confirmation. Per the docs, defaults to false. The validator confirms `trust` is a boolean, not a string.
Does Gemini CLI support OAuth and Google Cloud auth?
Yes. The `oauth` block handles standard OAuth 2.1; `authProviderType` switches between provider modes; `targetAudience` and `targetServiceAccount` are Google-Cloud-specific for impersonation. See the official MCP server docs in the gemini-cli repo for the full schema. The validator checks structural shape; auth flow correctness is a runtime concern.
Is my config sent to your server?
No. The validator runs entirely in your browser as JavaScript. Your config — and any API keys it contains — never leaves your machine. Open DevTools → Network during validation to confirm zero outbound requests.

Spotted a check we should add?

Open an issue on the directory, or browse the 2,000+ MCP servers.