A local-first MCP server that answers, from real data on your machine: How many tokens have I used, from which client, model and session — and what did it cost?
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add ai-usage-mcp -- npx -y ai-usage-mcp{
"mcpServers": {
"ai-usage-mcp": {
"command": "npx",
"args": ["-y", "ai-usage-mcp"]
}
}
}MCP Servers overview
# ai-usage-mcp
<!-- mcp-name: io.github.MohitBansal321/ai-usage-mcp -->
[](https://www.npmjs.com/package/ai-usage-mcp)
[](https://github.com/MohitBansal321/ai-usage-mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/ai-usage-mcp)
[](https://nodejs.org)
[](LICENSE)
**Whatever is telling you what your coding agent costs is probably inflating it.** Claude Code
writes one JSONL line _per content block_, and every line repeats the same `usage` object with a
cumulative `output_tokens`. Summing those lines — the obvious thing to do, and what naive tools
do — inflated every figure by **2.15× to 3.05×** on the development machine: 1.79B cache-read
tokens claimed where the truth was 800M.
Cache tokens are also where the money actually is. Cache-read outweighed input by roughly
**33,000×** (800,839,432 vs 24,381), so any tool that blends token classes into a single "total"
has told you nothing you can act on.
This one reads the same files, deduplicates on `requestId` + `message.id`, and then **proves
it**: `ai-usage verify` re-reads both sources with a _second, independent implementation_ that
shares no reduction code with the collectors, and diffs the result against its own database.
```text
$ ai-usage verify
== claude-code ==
MATCH claude JSONL, deduped by stop_reason line (independent rule)
INFO claude JSONL, naive sum of every usage line (NOT used -- shows the double count)
delta: cache-read 990,824,820 ...
RESULT: every client reconciles exactly against at least one independent read of its source.
```
So the question it answers, from real data on your machine:
> How many tokens have I used, from which client, model and session — and what did it cost?
Phase 1 supports two coding agents: **Claude Code** and **OpenCode**. It reads the data those
clients already wrote to disk, normalises it into one schema, stores it in a local SQLite
database, and exposes seven MCP tools -- plus resources, prompts and a debug CLI.
**It never fabricates a number.** If a source does not record something, it is reported as
unavailable — not as zero.
<details>
<summary><b>What the output looks like</b> (sample data)</summary>
```text
$ ai-usage stats --today
Usage summary -- today (local time)
Subagent/sidechain turns: INCLUDED (3 main + 1 subagent turns).
Records: 4 Sessions: 2
Tokens (all clients):
Input: 1,871
Output: 16,909 (16.9K)
Cache read: 2,452,000 (2.45M)
Cache write: 37,300 (37.3K)
Reasoning: 2,600
Total: 2,508,080 (2.51M)
Cost (reported by client, exact): $0.41 [1 records]
Cost (estimated, API-equivalent): $1.50 [3 records]
By client:
claude-code -- 3 records, 1 sessions
Cache read: 2,238,000 (2.24M)
Total: 2,280,001 (2.28M)
Cost (estimated, API-equivalent): $1.50 [3 records]
opencode -- 1 records, 1 sessions
Cache read: 214,000 (214.0K)
Total: 228,079 (228.1K)
Cost (reported by client, exact): $0.41 [1 records]
```
The two cost lines are never added together, and never will be — see
[How cost is reported](#how-cost-is-reported).
</details>
---
## Install
Requires **Node.js 22.13+**. No compiler, build tools or particular npm version needed:
storage uses Node's built-in `node:sqlite`, which is unflagged from 22.13.0 onward. There is
no mandatory native dependency.
<sub>`better-sqlite3` remains an <em>optional</em> fallback for hosts whose Node predates
that. It is never required — if it cannot be built, npm skips it and the server still runs.</sub>
### Claude Code
**As a plugin — recommended.** Run these two inside Claude Code:
```text
/plugin marketplace add MohitBansal321/ai-usage-mcp
/plugin install ai-usage@ai-usage-mcp
```
That wires up the MCP server _and_ installs the three prompts as real slash commands —
`/ai-usage:daily-review`, `/ai-usage:why-was-today-expensive`, `/ai-usage:project-cost` — which
most clients never surface from MCP prompts alone. If the install summary says
`Run /reload-plugins to activate.`, run that. The equivalent from your shell is
`claude plugin marketplace add MohitBansal321/ai-usage-mcp`.
<sub>The plugin declares `npx -y ai-usage-mcp` as its server, so the server itself still comes
from npm and re-resolves on each cold start. Updating the plugin and updating the server are
therefore independent — see <a href="#updating">Updating</a>.</sub>
**Or as a plain MCP server**, if you would rather not add a marketplace. Nothing to install
first — `npx` fetches it on demand:
```bash
claude mcp add ai-usage -s user -- npx -y ai-usage-mcp
```
On **native Windows** (not WSL), wrap it in `cmd /c` instead:
```bash
claude mcp add ai-usage -s user -- cmd /c npx -y ai-usage-mcp
```
<sub>Why: on Windows `npx` is `npx.cmd`, and the MCP TypeScript SDK spawns servers with
<code>shell: false</code>. Node cannot execute a <code>.cmd</code> file that way — its docs say
such files "can be invoked using <code>child_process.spawn()</code> with the shell option set …
or by spawning <code>cmd.exe</code> and passing the <code>.bat</code> or <code>.cmd</code> file
as an argument". <code>cmd /c</code> is that second form. This applies to every SDK-based
client below, not just Claude Code.</sub>
`-s user` makes it available in every project. Drop it to add the server to the current
project only. Then run `/mcp` inside Claude Code to confirm it connected.
<details>
<summary><b>No <code>claude</code> command? (VS Code / JetBrains extension users)</b></summary>
The extension reads the same configuration as the CLI, so you can add the server by editing a
file — no CLI needed. Pick whichever scope you want:
**For one project** — create `.mcp.json` in the project root:
```json
{
"mcpServers": {
"ai-usage": {
"command": "npx",
"args": ["-y", "ai-usage-mcp"]
}
}
}
```
Claude Code asks you to approve a project-scoped server the first time it loads it. This file
is safe to commit if you want your team to get it too.
**For all your projects** — add the same `mcpServers` block at the top level of
`~/.claude.json` (`%USERPROFILE%\.claude.json` on Windows):
```json
{
"mcpServers": {
"ai-usage": {
"command": "npx",
"args": ["-y", "ai-usage-mcp"]
}
}
}
```
That file already exists and holds other settings — add the `mcpServers` key alongside them
rather than replacing the file.
Then reload the window (**Developer: Reload Window** in VS Code) and run `/mcp`. Configuration
is read when a session starts, so an already-open session will not pick it up.
</details>
### OpenCode
```bash
opencode mcp add ai-usage # choose a local server, command: ai-usage-mcp
```
Or add it to `~/.config/opencode/opencode.jsonc`:
```jsonc
{
"mcp": {
"ai-usage": {
"type": "local",
"command": ["npx", "-y", "ai-usage-mcp"],
},
},
}
```
Confirm with `opencode mcp list`.
### Other MCP clients
**The client you ask from does not have to be a client you measure.** This server reports on the
Claude Code and OpenCode data already on your disk no matter who asks for it — so if you spend
your day in Cursor but your tokens go through Claude Code, ask Cursor and you still get the real
numbers.
**Cursor**, **Google Antigravity**, **Windsurf** and **Claude Desktop** all take the same block.
Only the file path changes:
```json
{
"mcpServers": {
"ai-usage": {
"command": "npx",
"args": ["-y", "ai-usage-mcp"]
}
}
}
```
| Client | File to put it in |
| ---------------------- | ---------------------------------------------------------------------- |
| **Cursor** | `~/.cursor/mcp.json` (all projects), or `.cursor/mcp.json` in one repo |
| **Google Antigravity** | `~/.gemini/antigravity/mcp_config.json` |
| **Windsurf** | `~/.codeium/windsurf/mcp_config.json` |
| **Claude Desktop** | **Settings → Developer → Edit Config** — see the paths below |
For **Claude Desktop**, that button creates the file if it does not exist and opens it either
way, which is more reliable than editing by hand:
| Platform | Path |
| -------- | ----------------------------------------------------------------- |
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
Claude Desktop on Linux is in beta and Anthropic publishes no config path for it, so use the
**Edit Config** button rather than guessing one. Fully quit and relaunch afterwards — the file is
read at startup.
Two clients need a different shape:
**Codex** uses TOML, not JSON. Easiest is the CLI:
```bash
codex mcp add ai-usage -- npx -y ai-usage-mcp
```
Or add the table by hand to `~/.codex/config.toml` (or a project-scoped `.codex/config.toml`):
```toml
[mcp_servers.ai-usage]
command = "npx"
args = ["-y", "ai-usage-mcp"]
```
Confirm with `codex mcp list`.
**GitHub Copilot CLI** uses `~/.copilot/mcp-config.json`, where the top-level key is `servers`,
**not** `mcpServers`:
```json
{
"servers": {
"ai-usage": {
"command": "npx",
"args": ["-y", "ai-usage-mcp"]
}
}
}
```
On native Windows, use the `cmd /c` form in any of these — `"command": "cmd"` with
`"args": ["/c", "npx", "-y", "ai-usage-mcp"]`, or `command = "cmd"` with
`args = ["/c", "npx", "-y", "ai-usage-mcp"]` for Codex. See the note under
[Claude Code](#claude-code) foWhat people ask about ai-usage-mcp
What is MohitBansal321/ai-usage-mcp?
+
MohitBansal321/ai-usage-mcp is mcp servers for the Claude AI ecosystem. A local-first MCP server that answers, from real data on your machine: How many tokens have I used, from which client, model and session — and what did it cost? It has 1 GitHub stars and its last recorded update is dated 2026-09-10.
How do I install ai-usage-mcp?
+
You can install ai-usage-mcp by cloning the repository (https://github.com/MohitBansal321/ai-usage-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is MohitBansal321/ai-usage-mcp safe to use?
+
Our security agent has analyzed MohitBansal321/ai-usage-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains MohitBansal321/ai-usage-mcp?
+
MohitBansal321/ai-usage-mcp is maintained by MohitBansal321. The last recorded GitHub activity is dated 2026-09-10, with 1 open issues.
Are there alternatives to ai-usage-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy ai-usage-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/mohitbansal321-ai-usage-mcp)<a href="https://claudewave.com/repo/mohitbansal321-ai-usage-mcp"><img src="https://claudewave.com/api/badge/mohitbansal321-ai-usage-mcp" alt="Featured on ClaudeWave: MohitBansal321/ai-usage-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!