> usage numbers for claude code

Easy Personal

The Easy Kit plug-in about you, not a repo: it turns your local Claude Code activity into usage numbers, warnings and an improvement plan, and manages your personal tool connectors.

Everything runs on your machine. It reads metadata only: token counts, model, time, project folder and tool names. It never stores message text. A kit part is one of the Easy Kit tools that leave files for it to read: the kernel, easy-verifier, easy-ui or easy-context.

Install
git clone https://github.com/thunderkds/easy-personal-mcp.git
cd easy-personal-mcp
npm --prefix web ci && npm --prefix web run build
uv tool install --reinstall --no-cache .
  • 12MCP tools
  • 5connector providers
  • 9dashboard views

Quick start in four steps

  1. Install

    After the build in the box above, install the tool.

    uv tool install --reinstall --no-cache .
  2. Ingest

    Copy your session metadata into the local store.

    easy-personal ingest
  3. Register with Claude Code

    Restart Claude Code. Claude can then read your numbers.

    claude mcp add --scope user easy-personal -- easy-personal mcp
  4. Open the dashboard

    A page on 127.0.0.1 opens. Ctrl-C stops it.

    easy-personal dashboard

Schedule, connectors, upgrade and rollback: the full install and deploy guide.

The flow

There are two lanes. The first lane reads your activity. To ingest is to copy metadata into the store. The second lane connects a tool to Claude Code. A connector is a provider, such as Slack, set up for Claude Code with its secrets kept in the OS keychain. The launcher is the small command that Claude Code starts for a connector.

How easy-personal works: read your usage, connect a tool Two lanes inside a dashed boundary called your machine. In the read lane, Claude Code transcripts and kit reports flow into ingest, which keeps metadata only and drops message text, into a local SQLite store, and out to three outputs: MCP tools, the CLI and a dashboard on 127.0.0.1, which reach you and Claude. In the connect lane, a catalog form saves secrets to the OS keychain, claude mcp add-json registers the launcher in Claude Code, and the launcher reads the keychain and starts the provider server, which is the only part outside your machine. your machine · your files, the store and your secrets stay here READ · your activity becomes numbers 1 your files Claude Code sessions easy-memory easy-verifier easy-ui easy-context git history 2 ingest metadata only text is dropped 3 local store one SQLite file on your disk MCP toolsfor Claude Code CLIin your terminal dashboard127.0.0.1 only 4 you + Claude ask in chat or open the page CONNECT · a tool joins Claude Code 1 catalog form pick a provider, fill in its fields 2 OS keychain secrets saved once, never in a file 3 claude mcp add-json registers the launcher in Claude Code 4 launcher injects secrets at start the launcher reads the keychain off your machine provider server e.g. Slack

The diagram is hidden on a narrow screen. The numbered steps below tell the same flow.

Read

Files are only read, never changed. Nothing leaves your machine.

  1. transcripts + kit reportsClaude Code session files and the files that kit parts leave behind.
  2. ingestCopy metadata into the store. Message text is dropped.
  3. local storeOne SQLite file on your disk. It keeps history after Claude Code deletes old sessions.
  4. MCP · CLI · dashboardThree ways to read the same numbers. The dashboard listens on 127.0.0.1 only.

Connect

A secret goes to the keychain once. It is never in a config file or a command line.

  1. catalog formPick a provider and fill in its fields, in the dashboard or the CLI.
  2. OS keychainThe secrets are saved in the keychain of your operating system.
  3. claude mcp add-jsonThe official Claude Code command registers easy-personal-launch exec <id>.
  4. launcherIt reads the keychain and passes the secrets to the provider server as environment variables.

The dashboard

Run easy-personal dashboard to open it. These screenshots use test fixtures, not real usage. The projects demo-app and notes-site are made up.

What the dashboard does

  • Live: It shows one session row for each active session: bars for tokens, cost and tool calls, and a chip for its kit stage, such as Stage 4 · code-review. A row opens in place to its tool feed, which labels each call, and the list stays complete after a restart or with two dashboards open.
  • Kit by workspace: For each workspace it shows the easy-verifier scores (repos scored, lowest score, mean, newest report) and the easy-ui use (sessions, calls, last call). The easy-ui check results stay overall, not split by workspace.
  • Report folders: Under each workspace row, Kit by workspace lists the report folders of its repos, as a reference: any folder in a repo root with report in its name. A folder opens to its files and a file opens in a new tab, with its own CSS and embedded screenshots, but a script in a report does not run.
  • Scratch and unassigned repos: Usage opens its Scratch row to list the throwaway folders in it. The Workspaces page lists the repos that are in no workspace, each with an Add to control.
  • Saved reports: The investigate prompt in Claude Code can save its report with save_report, and the server adds its own numbers for every rule. The Warnings & plan page lists the saved reports, and an opened one shows each rule as before and now.
Usage view of the dashboard for the last 7 days: total tokens, messages, API-equivalent cost in dollars and cache hit ratio, a bar chart of tokens per day, and breakdowns by model and by project for two fixture projects, with a cache reuse ring on the right
Usage: totals, cost, and breakdowns by day, model and project.
Warnings and plan view reading all clear with nothing to fix in the last 7 days, and a collapsed list of rules that were not checked
Warnings and plan: a rule that fires shows its measured value. Here none fired.
Kit view with two project cards, demo-app and notes-site, each saying no kit data yet, a details button, and an easy-ui checks section with no data
Kit: what each kit part left for each project.
Workspaces view listing the built-in orphan workspace and two workspaces named demo and notes, each with one repo, no connectors and an open button
Workspaces: the list of workspaces, with repos and connectors for each.

Install and deploy

You need Python 3.11 or newer, uv and Node.js. The dashboard page is built from web/ and is not in git, so build it before you install. It runs natively on Linux.

Install

git clone https://github.com/thunderkds/easy-personal-mcp.git
cd easy-personal-mcp
npm --prefix web ci && npm --prefix web run build
uv tool install --reinstall --no-cache .

Check the install:

easy-personal --version
easy-personal ping

First run

Claude Code deletes old transcripts after 30 days, so ingest often.

easy-personal ingest
easy-personal usage
easy-personal warnings
easy-personal plan

Register the MCP server

Then restart Claude Code. The server speaks stdio by default.

claude mcp add --scope user easy-personal -- easy-personal mcp

Open the dashboard

It runs an ingest, then starts the page on 127.0.0.1 with a new token each time. Press Ctrl-C to stop.

easy-personal dashboard

Schedule

A systemd user timer runs ingest every day.

easy-personal schedule install
easy-personal schedule remove

Connectors

Needs the claude CLI on PATH and a keychain backend. Restart Claude Code after a change.

easy-personal connector list
easy-personal connector add slack --workspace company
easy-personal connector remove slack
easy-personal doctor

Upgrade

Always use --reinstall --no-cache. Without it, uv can reuse an old build of the same version.

git pull
npm --prefix web ci && npm --prefix web run build
uv tool install --reinstall --no-cache .

Roll back

Back up the store before an upgrade:

cp -p ~/.easy-personal/store.sqlite ~/.easy-personal/store.sqlite.backup

To roll back, remove your connectors and the timer, uninstall the tool and restore the store:

easy-personal connector remove slack
easy-personal schedule remove
uv tool uninstall easy-personal-mcp
cp -p ~/.easy-personal/store.sqlite.backup ~/.easy-personal/store.sqlite

The full deploy, health check and rollback steps, and the common failures, are in the runbook.

Twelve MCP tools

None of them writes config or returns a secret.

toolwhat it does
pingCheck that the server is up.
usage_summarySessions, messages and tokens for a period.
usage_breakdownTokens grouped by day, model, project or tool.
session_outliersSessions with very many tool calls or a very long context.
warningsRules that fired, each with its measured value.
improvement_planThe fired rules by priority, each with a fix line.
kit_summaryWhat the Easy Kit did in each project.
kit_findingsWhich Easy Kit servers are linked to cheaper or better sessions.
connector_catalogThe provider catalog. Never a secret value.
connector_statusWhether each connector is set up, as yes or no.
connector_suggestionsProviders your usage points to, with the counts behind each.
save_reportSaves an investigate report, with the server's own numbers, to the store.

Connector catalog

The catalog has five providers. Yes means Claude.ai has an official connector too. Use the launcher only if you want it instead.

Email

  • Gmailclaude.ai connector: yes
  • SendGridclaude.ai connector: no

Messaging

  • Discordclaude.ai connector: no
  • Slackclaude.ai connector: yes
  • Teamsclaude.ai connector: yes