Prepare the server locally
Run this once before adding it to Claude Code.
git clone https://github.com/mvacaporale/claude-usage-mcp.git
cd claude-usage-mcp
uv sync
uv run playwright install chromiumRegister it in Claude Code
claude mcp add claude-usage -- uv run --directory /path/to/claude-usage-mcp python server.pyReplace any placeholder paths in the command with the real path on your machine.
Make your agent remember this setup
claude-usage's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Fetches session and weekly usage limits from Claude.ai
- Automated daily usage tracking via launchd
- Persistent session management with Cloudflare bypass
- Deduplication of usage records to ensure one entry per day
- Direct integration with Claude Code
Tools 3
get_claude_usageFetch usage data from the Claude dashboardclaude_loginOpen browser window for authenticationcheck_claude_authCheck if current session is authenticatedTry it
Original README from mvacaporale/claude-usage-mcp
Claude Usage MCP Server
An MCP (Model Context Protocol) server that fetches your Claude usage data from the claude.ai dashboard, with automated daily tracking.
Features
- Authenticate with Claude via browser login
- Fetch session and weekly usage limits from the settings page
- Persistent session with Cloudflare bypass
- Automated daily usage tracking via launchd
- Deduplication - one record per day, always up to date
- Integrates directly with Claude Code
Installation
# Clone the repo
git clone https://github.com/mvacaporale/claude-usage-mcp.git
cd claude-usage-mcp
# Install dependencies
uv sync
# Install Playwright browsers
uv run playwright install chromium
Configuration
Add to your Claude Code MCP settings (~/.claude/settings.json):
{
"mcpServers": {
"claude-usage": {
"command": "uv",
"args": ["run", "--directory", "/path/to/claude-usage-mcp", "python", "server.py"]
}
}
}
Usage
First Time Setup
- In Claude Code, run the
claude_logintool - A browser window will open - complete Cloudflare verification and log in to Claude
- After login, the session is saved automatically
Fetching Usage
There are multiple ways to fetch your usage:
1. Via MCP Tool (in Claude Code)
Simply ask Claude to check your usage, or use the get_claude_usage tool directly.
2. Via launchctl (manual trigger)
launchctl start com.claude.usage-fetcher
3. Via script directly
cd /path/to/claude-usage-mcp
.venv/bin/python fetch_usage.py
Automated Daily Tracking
A launchd job automatically fetches usage:
- Daily at 11:00 PM
- On login/wake (catches up if Mac was asleep)
Multiple runs in a day update the same record - you'll always have exactly one entry per day.
Setup Automation
# Copy the plist to LaunchAgents (if not already there)
cp com.claude.usage-fetcher.plist ~/Library/LaunchAgents/
# Load the job
launchctl load ~/Library/LaunchAgents/com.claude.usage-fetcher.plist
Manage Automation
# Check if job is loaded
launchctl list | grep claude
# Trigger manually
launchctl start com.claude.usage-fetcher
# Disable
launchctl unload ~/Library/LaunchAgents/com.claude.usage-fetcher.plist
# Re-enable
launchctl load ~/Library/LaunchAgents/com.claude.usage-fetcher.plist
# View logs
tail -f usage-fetcher.log
Tools
| Tool | Description |
|---|---|
get_claude_usage |
Fetch usage data from the Claude dashboard |
claude_login |
Open browser window for authentication |
check_claude_auth |
Check if current session is authenticated |
Data Format
Usage history is stored in usage-history.json:
[
{
"success": true,
"timestamp": "2026-01-25T23:00:00.000000",
"session_percent": 19,
"session_resets_in": "2 hr 15 min",
"weekly_all_models_percent": 10,
"weekly_resets": "Thu 10:00 AM",
"weekly_sonnet_percent": 0
}
]
How It Works
- Uses Playwright with a persistent Chrome profile
- Bypasses Cloudflare by running in headed mode (positioned offscreen)
- Stores browser data in
browser-data/directory - Scrapes the usage page and returns structured data
Security
- Browser data stored locally (never committed to git)
- No credentials stored - uses browser session cookies
- Login happens in your own browser window
- All sensitive files are gitignored
Troubleshooting
Cloudflare blocking: Run claude_login to re-authenticate manually.
Browser data locked: If you see lock errors, restart Claude Code (/mcp to reconnect).
Stale session: Delete browser-data/ and browser-data-scheduled/ directories, then run claude_login again.