Use geo-score as an MCP server
geo-score-mcp is a local MCP server that speaks stdio and uses the Python standard library only. It gives an agent the same three levels as the CLI: score a site for free, ask the AI engines one question, and track a question set week over week. Only the two tools that call AI providers can spend money, and only with keys you give the server.
How do I add geo-score to Claude Code?
claude mcp add --scope user geo-score -- uvx geo-score@1.8.3 mcp
This runs release 1.8.3 from PyPI with uvx, which needs only uv. claude mcp list shows whether the server connected, and /mcp in a session lists its tools. For a server that cannot spend, add --read-only after mcp.
How do I add it to other clients?
Any client that reads an mcpServers file takes the standard config, with no keys in the file:
{
"mcpServers": {
"geo-score": {
"command": "uvx",
"args": ["geo-score@1.8.3", "mcp"]
}
}
}
Claude Desktop does not read your shell's PATH, so put the full path that which uvx prints in command. Setup for each client (Claude Code, Claude Desktop, Codex, Cursor, VS Code, Gemini CLI, Devin Desktop and Zed), the Claude Code plugin, the Claude Desktop extension and Docker is in guide/mcp.md.
Which tools does the server offer?
| Tool | Level | Cost | What it does |
|---|---|---|---|
score_site | 1 | Free | Score a URL 0–100 against the rubric. Connects only to public addresses. |
ask | 2 | Your keys | Ask one question of each engine you have a key for and report whom the answers cite. |
run | 3 | Your keys; dry_run is free | Run the tracked question set and save the run next to the config. |
list_runs | 3 | Free | List saved runs. |
report | 3 | Free | Report one run, or pool the runs since a date. |
diff | 3 | Free | Compare two runs, calling a change a change only when a paired test says so. |
status | — | Free | Say what can run right now, without spending anything. |
The server also offers the rubric as a resource, geo-score://rubric/v1.1, and five prompts: audit_site, check_citations, weekly_watch, compare_runs and explain_check.
How do I keep the server from spending money?
Start it with --read-only: ask and run are removed, and nothing the server offers can spend. Without it, ask and run read the provider keys (OPENAI_API_KEY, PERPLEXITY_API_KEY, GEMINI_API_KEY, ANTHROPIC_API_KEY, OPENROUTER_API_KEY) from the server's own environment, which is not your terminal's. An agent can only tighten the caps in your watch config, never loosen them.
What can I ask my agent?
- "Score https://acme.com for AI-search readiness and list the 3 checks with the most points to gain." The agent calls
score_site. - "Dry-run my tracked questions and tell me the planned calls and caps." The agent calls
runwithdry_run, which costs nothing. - "Compare my last two watch runs: which engines changed, and is any change outside the noise?" The agent calls
diff.