
quota-mcp
io.github.limitcool由 GitHub 账号 limitcool 发布v0.3.2更新于 Oct 24, 2026
Usage & quota tracker for AI subscription accounts (StepFun, Command Code)
概览
本地只读 MCP 服务器,汇总 StepFun 与 Command Code 订阅账户的用量与额度,回答还剩多少额度。
- 可以做什么
- 列出账户的套餐、到期时间、剩余额度以及脱敏后的会话或密钥状态,并给出各平台正常、受限、失效或需重新登录的汇总和用于定时摘要的报告数据。对单个账户或全部账户向上游厂商实时探测并刷新缓存数据。检查已触发的告警:额度偏低、即将到期、会话失效、密钥被拒和速率窗口超限。账户录入、续期和删除不在 MCP 中提供,只存在于服务器单独的 REST 管理接口。
- 适用场景
- 当你持有 StepFun 或 Command Code 订阅,希望助手直接回答额度问题、提示余额不足或套餐即将到期,或定期生成用量摘要而无需逐个打开厂商控制台时适用。
- 运行要求
- 以本地进程运行(二进制或已发布的容器镜像),SQLite 数据库路径由 QUOTA_MCP_DB 指定。生产环境需设置 QUOTA_MCP_MASTER_KEY(64 位十六进制字符)以加密存储的凭据。账户须先通过 REST 接口录入厂商凭据:StepFun 的浏览器会话 Cookie 或套餐密钥,或 Command Code 的 API 密钥或会话 Cookie。探测需要访问厂商接口的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 quota-mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
English | 简体中文
quota-mcp
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:
Highlights:
- Encrypted at rest: credentials are AES-256-GCM encrypted into SQLite (pure-Go driver, no CGO); every endpoint returns masked views only
- StepFun session auto-renewal: a background goroutine checks every 60 s and renews any session whose TTL drops below 20 min. Renewing an expired session gets you a degraded device token — there is a guard that detects this and refuses to persist it
- Dual auth planes: StepFun's plan key (permanent) and console session (quota data) are managed and probed separately; the verdict is driven by the permanent plane
- MCP is read-only: the query surface (list / probe / summarize) is safe to hand to agents; enrol / renew / delete live on the REST side only
- Single binary, zero external services
Quick start
After startup:
http://127.0.0.1:8780/healthzhealth checkhttp://127.0.0.1:8780/api/stepfun/accountsREST listhttp://127.0.0.1:8780/mcpMCP endpoint
Enrolling accounts
Command Code (two credential planes)
The alpha/API-key plane is the easy one — a permanent Bearer key:
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:
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.
StepFun (browser session)
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:
Protocol findings from real-world testing (all handled in code):
- The
.aiOasis-Tokencookie value is two JWTs concatenated (8 segments); the console only accepts the whole value — a single segment gets youtoken is illegal - Timestamp units differ per site:
.aireturns second-level strings,.comreturns milliseconds; the code infers by magnitude .comdevice tokens live only 30 minutes and its RefreshToken returns a degraded token —.comsessions need periodic re-import- Renewing after expiry yields a device token (
mode 1, data plane alwaystoken is illegal), so renewal must happen before expiry; a degradation guard refuses to store such tokens
REST API
MCP surface (for agents)
Two ways to connect — pick either:
1. Streamable HTTP (served on /mcp) — for always-on deployments:
2. stdio — for clients that spawn the server themselves (Claude Code, containers, mcp-publisher-style registry installs):
Works the same way from Claude Code or any other MCP client.
All tools are read-only:
Alerts, expiry warnings & scheduled digest
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:
1. Threshold & expiry alerts (event-driven, push)
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).
Payload pushed on each transition:
No webhook? No problem — hermes (or anything) can poll instead:
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.
2. Scheduled digest (cron)
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.
3. Environment variables
Example (quota_status output — what an agent would read to answer "how much quota is left?"):
Project layout
Security boundary
- Ciphertext goes to the DB only — never to logs, never to responses; every endpoint returns masks
- The REST surface contains writes: bind it to loopback or a private network. To expose it publicly, front it with a reverse proxy + auth and only publish the MCP path
- Losing the master key means every stored credential becomes unreadable — back up
QUOTA_MCP_MASTER_KEY
Releases
Binaries for Linux / macOS / Windows (amd64 + arm64) are attached to each GitHub Release. Grab the latest:
Docker
Image is published to ghcr.io/limitcool/quota-mcp (amd64 + arm64) on every main push (:main) and tag (:v1.0.0, :latest).
Or with the bundled compose file (QUOTA_MCP_MASTER_KEY is required, put it in .env):
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.
License
MIT
来源:README.md,提交 4f8bc4f
工具
0版本历史
2- v0.3.2最新Sep 22, 2026
- v0.2.1Sep 21, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分