Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Usage & quota tracker for AI subscription accounts (StepFun, Command Code)
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
QUOTA_MCP_MASTER_KEY, QUOTA_MCP_DBLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"quota": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"QUOTA_MCP_MASTER_KEY",
"-e",
"QUOTA_MCP_DB",
"ghcr.io/limitcool/quota-mcp:0.3.2"
],
"env": {
"QUOTA_MCP_MASTER_KEY": "your-value",
"QUOTA_MCP_DB": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add quota --env QUOTA_MCP_MASTER_KEY=your-value --env QUOTA_MCP_DB=your-value -- docker run -i --rm -e QUOTA_MCP_MASTER_KEY -e QUOTA_MCP_DB ghcr.io/limitcool/quota-mcp:0.3.2Completa los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"quota": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"QUOTA_MCP_MASTER_KEY",
"-e",
"QUOTA_MCP_DB",
"ghcr.io/limitcool/quota-mcp:0.3.2"
],
"env": {
"QUOTA_MCP_MASTER_KEY": "your-value",
"QUOTA_MCP_DB": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"quota": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"QUOTA_MCP_MASTER_KEY",
"-e",
"QUOTA_MCP_DB",
"ghcr.io/limitcool/quota-mcp:0.3.2"
],
"env": {
"QUOTA_MCP_MASTER_KEY": "your-value",
"QUOTA_MCP_DB": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
QUOTA_MCP_DB envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub limitcool, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: QUOTA_MCP_MASTER_KEY
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.3.2) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Signoff
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
English | 简体中文
A usage & quota tracker for AI subscription accounts. It pulls the balances, subscription expiry dates and rate-limit windows that are scattered across vendor dashboards into one place, and exposes them through both a REST management API and an MCP query surface — point your agent (Hermes, Claude Code, …) at it with one config line and it can answer "how much quota do I have left?" on its own.
Two platforms supported today:
| Platform | Data source | Credential | What you can see |
|---|---|---|---|
StepFun (阶跃星辰, .ai intl / .com China) | platform.stepfun.{ai,com} console Connect RPC | Browser session (Oasis-Token, ~2 h, auto-renewed) + optional plan key | Plan & expiry, 5-hour / weekly / subscription credit windows, access keys under the account, session health |
| Command Code (commandcode.ai) | Undocumented /alpha/* endpoints on api.commandcode.ai | A single Bearer API key | Plan (GOAT/Pro/Max/…), 5-hour / weekly / monthly windows, balances, billing-period request stats |
Highlights:
go build -o quota-mcp ./cmd/quota-mcp
export QUOTA_MCP_MASTER_KEY=$(openssl rand -hex 32)
./quota-mcp -db data/quota-mcp.db -listen 127.0.0.1:8780
After startup:
http://127.0.0.1:8780/healthz health checkhttp://127.0.0.1:8780/api/stepfun/accounts REST listhttp://127.0.0.1:8780/mcp MCP endpointThe alpha/API-key plane is the easy one — a permanent Bearer key:
curl -X POST http://127.0.0.1:8780/api/commandcode/accounts \
-H 'Content-Type: application/json' \ -d '{"service":"cc-myname","api_key":"user_xxx","label":"primary"}'
Get the key from commandcode.ai/settings/keys (shown once at creation). The server validates it with whoami first and refuses to store a rejected key.
The internal/session plane mirrors the browser: pass session_text (the whole Cookie: header, a document.cookie dump, or the bare __Secure-commandcode_prod_.session_token value). It is validated against billing/credits and never stored unless it passes. Sessions expire, so refresh them from CookieCloud or by copying the cookie again from DevTools:
curl -X POST http://127.0.0.1:8780/api/commandcode/accounts \
-H 'Content-Type: application/json' \ -d '{"service":"cc-myname","session_text":"__Secure-commandcode_prod_.session_token=eyJ..."}'
When both are stored the API key wins. Each enrol overwrites the credential planes it was given — re-enrolling with only api_key clears any stored session, and vice-versa, so a rotation is never silently skipped.
Oasis-Token is an HttpOnly cookie, so document.cookie cannot read it — copy it from a request header in DevTools. Paste the whole Cookie: header (or the bare token) to the server:
curl -X POST http://127.0.0.1:8780/api/stepfun/accounts \
-H 'Content-Type: application/json' \ -d '{"service":"ai-412848664332275712","region":"ai","session_text":"Oasis-Token=eyJ...; Oasis-Webid=...","email":"me@example.com"}'
Protocol findings from real-world testing (all handled in code):
.ai Oasis-Token cookie value is two JWTs concatenated (8 segments); the console only accepts the whole value — a single segment gets you token is illegal.ai returns second-level strings, .com returns milliseconds; the code infers by magnitude.com device tokens live only 30 minutes and its RefreshToken returns a degraded token — .com sessions need periodic re-importmode 1, data plane always token is illegal), so renewal must happen before expiry; a degradation guard refuses to store such tokensGET /api/stepfun/accounts List (masked view)
POST /api/stepfun/accounts Enrol/update (stored only if at least one plane probes OK) POST /api/stepfun/accounts/{service}/probe Probe (auto-renews once on console auth failure) POST /api/stepfun/accounts/{service}/renew Force-renew the console session POST /api/stepfun/accounts/{service}/register?region=ai Register an anonymous device slot (self-test) DELETE /api/stepfun/accounts/{service} Delete POST /api/stepfun/probe Probe all (cron-friendly)
GET /api/commandcode/accounts List (masked view) POST /api/commandcode/accounts Enrol/update (api_key or session_text; stored only if it probes OK) POST /api/commandcode/accounts/{service}/probe Probe DELETE /api/commandcode/accounts/{service} Delete POST /api/commandcode/probe Probe all
Two ways to connect — pick either:
1. Streamable HTTP (served on /mcp) — for always-on deployments:
mcp_servers:
quota: url: http:// :8780/mcp
2. stdio — for clients that spawn the server themselves (Claude Code, containers, mcp-publisher-style registry installs):
# local binary
quota-mcp -stdio
docker run -i --rm -v quota-mcp-data:/data ghcr.io/limitcool/quota-mcp:latest
Works the same way from Claude Code or any other MCP client.
All tools are read-only:
| Tool | Description |
|---|---|
quota_list_accounts | List every account: plan, expiry, remaining quota, session/key status (masked) |
quota_probe_account | Live-probe one account (hits upstream, takes a few seconds) |
quota_probe_all | Serially probe all accounts and refresh the cache |
quota_status | Summary: per-platform counts of serving / limited / invalid / needs-relogin, plus a one-line status per account |
quota_check_alerts | Firing alerts: low quota, upcoming expiry, dead session, rejected key, window exceeded |
quota_report | The scheduled-digest payload: all account numbers + current alerts |
quota-mcp owns condition detection (it holds the data and runs a 60 s background loop); scheduling and delivery belong to your agent platform. A hermes-style wiring:
A background evaluator refreshes stale probe data (>5 min), evaluates rules, keeps a firing/resolved state machine in SQLite (alert_events), and POSTs only the transitions to a webhook — the same alert never repeats until it clears and fires again.
Rules: credit_low (remaining share below threshold), expiring_soon (subscription/billing period ending within N days), session_dead (StepFun console session needs re-import), key_rejected (Command Code key got 401/403), window_limited (rate window exceeded).
QUOTA_MCP_ALERT_WEBHOOK_URL=http://<hermes>:8642/webhooks/quota \
QUOTA_MCP_ALERT_CREDIT_PCT=0.2 \ QUOTA_MCP_ALERT_EXPIRY_DAYS=7 \ ./quota-mcp -listen 0.0.0.0:8780
Payload pushed on each transition:
{
"source": "quota-mcp", "at": "2026-09-21T15:52:30Z", "fired": [{"kind":"credit_low","provider":"stepfun","service":"ai-…","severity":"warn","title":"订阅额度即将耗尽","detail":"剩余 13%(阈值 20%),2026-10-20 重置"}], "resolved": [] }
No webhook? No problem — hermes (or anything) can poll instead:
# hermes mcp_servers
mcp_servers: quota: url: http:// :8780/mcp
then have a hermes cron every 15–30 min call quota_check_alerts and hermes send anything new. Same for GET /api/alerts?history=20.
quota_report (or GET /api/report) returns a stable, agent-friendly payload: every account's plan / expiry / remaining quota / session state / window usage / request stats, plus current alerts. Point hermes's existing 09:30 cron at it: one turn calls the tool, composes the message, and delivers via hermes send. No scheduler is duplicated inside quota-mcp.
| Variable | Default | Meaning |
|---|---|---|
QUOTA_MCP_ALERT_CREDIT_PCT | 0.2 | Fires when remaining share drops below this |
QUOTA_MCP_ALERT_EXPIRY_DAYS | 7 | Fires when subscription/billing period ends within N days |
QUOTA_MCP_ALERT_WEBHOOK_URL | — | POST target for alert transitions; empty = record only (pull mode) |
Example (quota_status output — what an agent would read to answer "how much quota is left?"):
{
"stepfun": { "total": 2, "healthy": 2, "attention": 0, "accounts": ["ai-4128…: ok (10 models)", "com-3766…: ok (0 models)"] }, "commandcode": { "total": 1, "serving": 1, "limited": 0, "key_rejected": 0, "accounts": ["cc-limitcool: serving GOAT"] } }
cmd/quota-mcp/ Entrypoint (flags/env config, one port serving both surfaces)
internal/store/ SQLite + AES-256-GCM encryption + schema internal/stepfun/ StepFun protocol client + account registry + background renewer internal/commandcode/ Command Code protocol client + account registry internal/api/ REST management surface (net/http, no framework) internal/mcpsrv/ MCP query surface (modelcontextprotocol/go-sdk) internal/alerts/ Alert rules + firing/resolved state machine + webhook push internal/digest/ Scheduled-digest payload for cron consumers
QUOTA_MCP_MASTER_KEYBinaries for Linux / macOS / Windows (amd64 + arm64) are attached to each GitHub Release. Grab the latest:
# example: linux amd64
curl -LO https://github.com/limitcool/quota-mcp/releases/latest/download/quota-mcp_linux_amd64 chmod +x quota-mcp_linux_amd64
Image is published to ghcr.io/limitcool/quota-mcp (amd64 + arm64) on every main push (:main) and tag (:v1.0.0, :latest).
docker run -d --name quota-mcp \
-p 8780:8780 \ -v quota-mcp-data:/data \ -e QUOTA_MCP_MASTER_KEY=$(openssl rand -hex 32) \ ghcr.io/limitcool/quota-mcp:latest
Or with the bundled compose file (QUOTA_MCP_MASTER_KEY is required, put it in .env):
echo "QUOTA_MCP_MASTER_KEY=$(openssl rand -hex 32)" > .env
docker compose up -d
The database lives in the /data volume (QUOTA_MCP_DB=/data/quota-mcp.db). Back up the master key — losing it makes every stored credential unreadable.
MIT