Skip to main content
Glama
README.md
# claude-usage-mcp

An MCP server that reports your real Claude subscription usage — 5-hour
session window, weekly limit, and per-model limits — pulled from the same
endpoint Claude Code's `/usage` command uses.

## Requirements

- macOS or Linux
- Node.js 20+
- Claude Code logged in on a Pro, Max, or Team plan

This server reads Claude Code's own OAuth access token (from the macOS
Keychain, or `~/.claude/.credentials.json` as a fallback). It never asks for
or stores credentials itself.

## Install / configure

Add to your `.mcp.json`.

Local build:

```json
{
  "mcpServers": {
    "claude-usage": {
      "command": "node",
      "args": ["/path/to/claude-usage-mcp/dist/index.js"]
    }
  }
}
```

Or via npx:

```json
{
  "mcpServers": {
    "claude-usage": {
      "command": "npx",
      "args": ["-y", "@anatoly314/claude-usage-mcp"]
    }
  }
}
```

## Tool

### `get_usage`

Takes no arguments. Returns the current usage snapshot as JSON.

```json
{
  "session_5h": { "utilization_percent": 42, "resets_at": "2026-09-01T18:00:00Z" },
  "weekly_7d": { "utilization_percent": 61, "resets_at": "2026-09-05T00:00:00Z" },
  "model_limits": [
    {
      "model": "Opus",
      "kind": "weekly_scoped",
      "utilization_percent": 51,
      "resets_at": "2026-09-05T00:00:00Z",
      "is_active": true
    }
  ],
  "fetched_at": "2026-09-01T15:04:00Z",
  "stale": false
}
```

If a fetch fails, the last successful response is served instead with
`stale: true` and `stale_age_seconds` set.

## Notes

- This uses an undocumented Anthropic endpoint. It may change or break
  without notice.
- Responses are cached for 120 seconds; after a failed fetch, further
  requests back off for 60 seconds before retrying, to avoid hammering the
  API.
- Everything stays local — no data leaves your machine except the request to
  Anthropic's usage endpoint.

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The single get_usage tool has a clearly defined purpose and no competitors.

Naming Consistency5/5

The tool name get_usage follows the standard verb_noun convention. With a single tool there are no mixed conventions or inconsistent styles.

Tool Count5/5

The server's purpose is narrowly scoped to reporting Claude subscription usage. One tool fully covers this function without unnecessary bloat, making the count appropriate.

Completeness5/5

For a read-only usage reporting server, get_usage provides all necessary information (session window, weekly limit, model limits, reset timestamps). No create, update, or delete operations are relevant to the domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues