quota-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
quota-mcp
How much of each AI subscription is left, and which provider should this agent use right now.
If you have ever woken up to an agent that burned the whole Claude weekly window overnight, or watched a batch job hammer a rate-limited provider for hours — this is for you. quota-mcp is a local-first MCP server and CLI that tracks subscription quota (the 5h/daily/weekly windows of your plans), not API spend. Cost meters tell you what you paid; quota-mcp tells you what you have left and whether to keep going.
How it trusts data (the important part)
Remote "usage APIs" for subscription plans are undocumented, unofficial, and they break. This project is built around that fact instead of pretending otherwise:
The core is local-only. Tokens come from the OpenCode database on your disk. Limits come from a file you calibrate with real measured values (
null= track only — numbers are never invented). No network, no credentials, works offline.Observed events beat estimates. When a provider actually rate-limits you, record it (
observe). An observedrate_limit/balance/key_limitevent always vetoes the provider — an estimate never does.Remote scrapers are community plugins. Each one is a registry entry with a status (
core/community/broken). When a provider changes something and a scraper breaks, the community fixes it or flips it tobroken— the core keeps working either way.Fail-open. A missing sensor (no DB, no calibrated limit) yields "use" with a warning. A gate never blocks because a sensor is absent.
Related MCP server: genpark-agent-rate-limit-token-bucket-regulator-skill
Quickstart
uv tool install quota-mcp # or: uvx --from quota-mcp quota-mcp
quota-mcp status # tokens per provider, windows 5h/day/week
quota-mcp serve # MCP stdio serverMCP client configuration
Claude Code:
claude mcp add quota -- uvx --from quota-mcp quota-mcp serveCursor / OpenCode / any stdio MCP client:
{
"mcpServers": {
"quota": { "command": "uvx", "args": ["--from", "quota-mcp", "quota-mcp", "serve"] }
}
}Tools exposed: get_all_usage, get_provider_usage, get_recommendation, observe.
CLI for orchestrators
The exit-code contract is stable and scriptable:
quota-mcp recommend --provider opencode # exit 0 = use, 1 = wait, 4 = exhausted
MODEL=$(quota-mcp pick --tiers "free-model openrouter/deepseek/x claude:opus")
quota-mcp observe --kind rate_limit --model-ref "$MODEL" # real event -> veto
quota-mcp limits --set opencode 5h 4000000 # calibrate with a MEASURED valuepick walks the list in order and prints the first viable ref: it skips providers with a recently observed block event and providers above their calibrated limit. With QUOTA_MCP_MODEL_REGISTRY set, it also vetoes refs absent from your model registry and refs with a dead id_status.
Collectors
Collector | Status | Auth (env) | Description | Maintainer | Last verified |
| core | none | Tokens per provider from the local OpenCode database (~/.local/share/opencode/opencode.db), windows 5h/day/week. No network. | @carl0sfelipe | 2026-08-13 |
| community |
| Key limit and usage from the official OpenRouter /key endpoint. Reads OPENROUTER_API_KEY or the OpenCode auth store. | @carl0sfelipe | 2026-08-13 |
| community | none | Claude Pro/Max subscription windows from Anthropic's oauth usage endpoint. Reuses the token Claude Code keeps fresh - never refreshes it (refresh is blocked by Cloudflare; the cache layer serves stale data on 429). | @carl0sfelipe | 2026-08-13 |
The table above is generated from registry.yaml — the registry is the source of truth. A scraper marked broken is skipped by the loader (force with allow_broken: true) until someone fixes it. See CONTRIBUTING.md to add or fix a collector; it is one module plus one registry entry plus one fixture test.
Configuration
Optional file at ~/.config/quota-mcp/config.yaml (or $QUOTA_MCP_CONFIG):
providers:
opencode:
collector: opencode_db
enabled: true
claude_pro:
collector: claude_pro
enabled: true
openrouter:
collector: openrouter
enabled: true
engine:
wait_pct: 85 # recommend "wait" above this percent
obs_lookback_min: 15 # how long an observed event vetoes a providerEnvironment overrides: QUOTA_MCP_OPENCODE_DB, QUOTA_MCP_LIMITS, QUOTA_MCP_OBS, QUOTA_MCP_MODEL_REGISTRY, QUOTA_MCP_WAIT_PCT, QUOTA_MCP_OBS_LOOKBACK_MIN.
Data lives in ~/.local/share/quota-mcp/ (limits.json, observations.jsonl, cache.db).
Development
uv sync
uv run pytest # the whole suite runs with sockets disabled - no network, no keysCI runs on Linux and macOS, blocks network access in tests, and refuses commits containing machine paths, third-party e-mails or phone numbers (scripts/check_public.sh).
License
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
LLM provider intelligence: recommendations, pricing, and status
AI coding plan limits (Claude Code, Codex, Cursor, Copilot): router, picker, status, budget check
Live health of 65 agent APIs/MCPs plus a 15-min LLM leaderboard; recommend(task) picks a provider.
Meter, cap, and block AI agent spend before the provider is charged.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRoutes subagent tasks across Claude and OpenAI lanes by task kind and quota state, deciding whether to spawn a single model, run a duel of both vendors, or run both and ship the merge. It records duels with attested proof-of-run session ids, grades sides blind with one judge per vendor, and tracks per-kind standings and lane pacing.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents and multi-agent frameworks to throttle outbound LLM API calls with multi-provider token-bucket and sliding-window limiting, plus predictive token-consumption budgeting to avoid TPM/RPM throttling. It runs deterministically over MCP with zero dependencies, returning rate-limit decisions and telemetry for any client such as Claude Desktop or Cursor.7-
- AlicenseNot gradedqualityBmaintenanceLets a coding agent inspect its own account's subscription limit windows, usage, and cost history, and decide whether to pause and sleep until a limit resets rather than failing mid-task. Supports multiple accounts and providers such as Claude Code and Codex.180 npmMIT
- AlicenseAqualityCmaintenanceLets an AI agent check its own Claude and Codex usage limits — used percentages and exact reset times for session and weekly windows — so it can plan long-running work around resets instead of dying mid-task. It reads local, credential-free sources by default, always reports which source answered, and ships a hook that pushes quota state into context automatically.1MIT