Skip to main content
Glama

Wick MCP — Claude token tracker for Desktop & Code

A local MCP server that meters Claude Desktop, Claude Code, and the CLI the same way the Wick Chrome extension meters claude.ai. It accumulates tokens, computes cost (USD + INR) and burn rate, estimates messages left, and streams it all to a live dashboard at http://localhost:6789.

Everything runs locally. No API keys, no accounts, no data leaves your machine.

How Wick MCP works

Wick tracks usage in two ways, so you pick effort vs. coverage:

Client

How it tracks

Effort

Accuracy

Claude Code / CLI

Automatic. Wick reads the usage logs Claude Code already writes (~/.claude/projects/**/*.jsonl) and ingests the real per-turn token counts.

Zero — install once, nothing else

Exact (real API numbers, incl. cache)

Claude Desktop

Claude calls the wick_track tool after each response (Desktop doesn't expose parseable logs).

Paste a one-time custom-instruction

Approximate (model self-reports tokens)

Either way the numbers land in the same session, the same dashboard, and the same wick_status / wick_summary tools. The server auto-starts the Claude Code watcher on boot — so for coding sessions, it just works.

Related MCP server: nikhilnt

Install in 30 seconds

One command — installs from npm and patches your Claude Desktop config automatically:

npx usewick-mcp install

Then restart Claude Desktop.

git clone https://github.com/pranshuguptaa/wick-mcp
cd wick-mcp
npm install
npm run install-desktop

Verify it's working

Open Claude Desktop and type:

"Call wick_status"

You should see your session stats in a boxed panel.

Add to Claude Code (one command)

claude mcp add wick node /absolute/path/to/wick-mcp/server.js

That's the whole setup. Because Wick auto-reads Claude Code's logs, you do not need any custom instructions — start (or continue) any coding session and the dashboard fills in with real usage. Prefer a config file? Add the same block to .claude/settings.json:

{
  "mcpServers": {
    "wick": { "command": "node", "args": ["/absolute/path/to/wick-mcp/server.js"] }
  }
}

Make Claude Desktop track automatically

Claude Desktop has no readable usage log, so it reports via the wick_track tool. Paste this once into Settings → Custom Instructions:

After every response, silently call wick_track with:

  • model: the model you used

  • input_tokens: your input token count

  • output_tokens: your output token count

  • cache_read_tokens: cache read tokens if any

Do this without mentioning it.

(Claude Code users can skip this entirely — the log watcher covers it.)

Feed data manually (demos / other clients)

Any tool can push a turn over HTTP — handy for screenshots or wiring up a client Wick doesn't natively watch:

curl -X POST http://localhost:6789/api/track -H 'content-type: application/json' \
  -d '{"model":"claude-sonnet-4-6","input_tokens":1200,"output_tokens":400,"cache_read_tokens":0}'

Dashboard

Visit http://localhost:6789 while Wick is running (Claude Desktop launches the server automatically once installed). It shows:

  • Messages left, session cost (₹ + $), and tokens as live stat cards

  • Two arc gauges — session usage (amber) and daily-budget spend (purple)

  • A live turn-history table (last 20 turns), updated over WebSocket

A ● LIVE amber dot shows when the dashboard is connected; it auto-reconnects every 3 seconds if the server restarts.

Tools available

Tool

What it does

wick_track

Track tokens for this response

wick_status

See current session stats

wick_reset

Start a fresh session

wick_export

Export data as CSV / JSON / Markdown

wick_summary

All-time usage totals

Ports & storage

  • 6789 — HTTP dashboard + GET /api/status, GET /api/summary, POST /api/track

  • 6790 — WebSocket live updates

  • ~/.wick/history.json — persisted session history (drives wick_summary)

  • CSV exports are written to ~/wick-export-<timestamp>.csv

  • Reads (never writes) ~/.claude/projects/**/*.jsonl for the Code watcher

Environment overrides: WICK_HTTP_PORT, WICK_WS_PORT, WICK_NO_WATCH=1 (disable the Code watcher), WICK_CLAUDE_PROJECTS (custom log path).

How cost is computed

Prices are per million tokens (see models.js). Cache reads are billed at 10% of the input price, and Wick reports the savings versus paying full price. INR is USD × 84.

Model

Input $/M

Output $/M

Burn

Opus 4.8 / 4.7 / 4.6

15

75

5.0

Sonnet 4.6

3

15

2.0

Haiku 4.5

0.8

4

1.0

Messages-left estimate: Haiku ≈ 50 messages per 5-hour window, scaled down by the burn multiplier (Sonnet ≈ 25, Opus ≈ 10), minus messages already used.

Troubleshooting

  • wick_status says the tool isn't found — fully quit and reopen Claude Desktop (MCP servers only load at startup).

  • Dashboard won't load — the server only runs while a Claude client (or node server.js) is running. Check that ports 6789/6790 are free.

  • Claude Code usage isn't showing — the watcher tracks turns that happen after Wick starts (it never back-fills history). Send one message and it appears. Confirm ~/.claude/projects/ exists and isn't overridden.

  • Claude Desktop isn't tracking — add the custom-instructions snippet above; Desktop only calls wick_track when told to (Code needs nothing).

Available Tools

5 tools
wick_exportA

Export your session data as JSON, CSV, or a Markdown table.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. However, 'export' implies a read-only operation, and the description does not mention any side effects or additional behaviors. It adds no explicit safety or auth context, which is acceptable for a simple export but still leaves ambiguity about the exact behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the action and resource, then lists formats, achieving high information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and no output schema. The description adequately covers what the tool does and the formats available. It lacks details about the return mechanism or any caveats, but given the simplicity, it's close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one optional parameter 'format' with enum values, but the schema description coverage is 0%. The description compensates by explicitly listing 'JSON, CSV, or a Markdown table', which restates the enum in natural language and clarifies the meaning. It adds value beyond the raw schema, though it doesn't detail each format's nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Export' and resource 'session data', listing three concrete output formats. This clearly distinguishes it from sibling tools like wick_track or wick_status, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a user needs to export session data, but it does not provide explicit guidance on when to choose this tool over alternatives or mention any exclusions. Sibling tools are not referenced, so the agent must infer the appropriate context based on the tool name and purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wick_resetA

Reset the session counter. Use when starting a new task or after a rate limit reset.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the core action ('Reset the session counter') and one behavioral trigger (rate limit reset), but does not disclose side effects, reversibility, or what exactly 'reset' entails beyond the name. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and contains no redundant wording. Every sentence earns its place: the first states the action, the second gives usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with zero parameters, no annotations, and no output schema, the description adequately covers the essential aspects: what it does and when to use it. It could be slightly richer (e.g., clarifying that it resets to zero or any side effects), but it is sufficient for a simple reset operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so per the baseline rule for 0 params, a score of 4 is appropriate. The description does not need to explain parameter semantics since there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Reset the session counter.' It is a specific verb+resource pairing. However, it does not explicitly differentiate from sibling tools like wick_track or wick_status, though the reset action is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: 'Use when starting a new task or after a rate limit reset.' This provides clear guidance on when to invoke the tool, but it does not mention alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wick_statusA

Get your current Claude session stats — tokens used, cost in USD and INR, burn rate, and messages left estimate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full burden of behavioral disclosure. It discloses the type of information returned (tokens, cost, burn rate, messages left) but does not explicitly state that the operation is read-only or side-effect-free, nor does it mention any potential implications like cost or rate limits. The verb 'Get' implies retrieval, but an explicit statement would be clearer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence. It front-loads the core purpose ('Get your current Claude session stats') and then efficiently lists the included data points. Every word adds value, with no redundancy or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description sufficiently covers the necessary context. It clearly states what the tool returns, including specific cost currencies and the messages-left estimate, which is enough for an agent to understand the tool's function and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema is an empty object with 100% coverage. According to the rubric, a 0-parameter tool gets a baseline of 4. The description adds no parameter-specific information because there are none, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and a clear resource ('your current Claude session stats'), explicitly listing the metrics returned (tokens used, cost in USD and INR, burn rate, messages left estimate). This clearly distinguishes it from siblings like wick_summary (which likely provides summaries) and wick_track (which may track history).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking current session statistics, and the word 'current' provides some context. However, it does not explicitly state when to use this tool versus alternatives like wick_summary or wick_track, nor does it mention exclusions. This is a clear context but lacks explicit usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wick_summaryB

All-time usage summary across every Wick session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral transparency. The term 'summary' implies a read-only aggregate, but the description does not disclose what data is included, how it is computed, or whether the operation might be expensive. It also doesn't indicate what happens if no sessions exist or what output shape to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence of seven words: 'All-time usage summary across every Wick session.' It is front-loaded with the core purpose and contains no filler, redundant phrases, or irrelevant details. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no parameters, no output schema), but the description remains vague about what the summary includes. It mentions 'usage' and 'every Wick session' but does not specify metrics (e.g., hours, events, categories) or whether the output is a single number, a breakdown, or a report. This is a notable gap for a tool that could benefit from a sentence clarifying its output structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is an empty object with zero parameters, so there are no parameter semantics to clarify. Per the scoring guidelines, a description with no parameters receives a baseline of 4, and the description does not need to compensate for any undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an 'All-time usage summary across every Wick session,' indicating it aggregates usage data from all sessions. It lacks an explicit verb like 'get' or 'retrieve,' but the noun phrase 'summary' implies a read operation. It distinguishes from siblings like wick_status or wick_track by emphasizing 'all-time' and 'every session.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like wick_status or wick_export. It does not mention use cases, prerequisites, or exclusions. For example, it doesn't clarify whether wick_summary is the right choice for checking current status versus a historical overview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wick_trackA

Track token usage for this response. Call this after EVERY Claude response automatically. Wick uses this to compute your live burn rate, session cost, and estimated messages remaining.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel ID e.g. claude-sonnet-4-6
input_tokensYesInput tokens used this turn
output_tokensYesOutput tokens generated this turn
cache_read_tokensNoCache read tokens
cache_creation_tokensNoCache creation tokens

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining behavior. It states what the tool does and its downstream effect (computing burn rate, session cost, estimated messages remaining), which is useful. However, it does not disclose side effects, idempotency, or error behavior, leaving some gaps for a tool that likely records data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core action, and each sentence adds value: purpose, when to call, and why it matters. There is no redundancy or fluff, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tracking tool with no output schema, the description covers the what, when, and why effectively. It explains the tool's role in the broader lifecycle (after every response) and the metrics it powers, which is sufficient for an agent to invoke it correctly. Minor omissions like error handling or exact return values are not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds minimal extra meaning beyond linking the parameters to 'this response', which is implicit. Baseline 3 is correct since the description does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Track token usage for this response' with a specific verb and resource, and it explicitly scopes the action to the current response. It effectively distinguishes this from sibling tools like wick_status and wick_reset by focusing on per-response token tracking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'Call this after EVERY Claude response automatically.' This is a clear when-to-use instruction. It does not mention alternatives or exclusions, but the mandatory nature of the call is unambiguous, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.1
    • First observedwick_export
    • First observedwick_reset
    • First observedwick_status
    • First observedwick_summary
    • First observedwick_track

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: track records usage, status shows current session stats, reset clears the counter, export outputs data, and summary provides all-time totals. There is no ambiguity between them as the descriptions are explicitly differentiated.

Naming Consistency4/5

All tool names follow a consistent 'wick_' prefix and use lowercase single-word names. However, the second part mixes verbs (track, reset, export) with nouns (status, summary), deviating slightly from a verb_noun pattern, but the overall style is uniform and predictable.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of token usage tracking. Each tool serves a necessary function without redundancy, and the count is within the ideal 3-15 range.

Completeness5/5

The tool set covers the full lifecycle of usage tracking: recording (track), viewing current status (status), resetting sessions (reset), exporting data (export), and summarizing all-time usage (summary). There are no obvious gaps for this domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first dashboard + MCP server that parses Claude Code and Codex JSONL files into a SQLite cost / token tracker. Per-MCP and per-tool breakdown, session drill-down, dedup by request_id; never talks to vendor APIs
    5
    100
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pranshuguptaa/wick-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server