llmledger-mcp
Ask Claude (or Cursor, ChatGPT desktop, any app that speaks MCP) which AI model to use and what it
costs, in the middle of your work. The answers come from llmledger:
LiteLLM's public price catalogue, Arena's ratings by task, and every price change since 2023 with how
likely a price is to change next. Rebuilt every day.
Install
Needs uv. Nothing to host and no keys: the plug-in runs on your computer
and reads the day's data from the llmledger page, cached for a day, with a bundled copy for offline use.
Claude Code:
Claude Desktop (Settings, Developer, Edit config) or Cursor (.cursor/mcp.json):
A LiteLLM proxy can offer it to a whole team through its MCP gateway, as a stdio server with the same
command.
The same answers also come as an Agent Skill, which takes far less of an agent's context until it is used
and needs only Python: the folder skills/llmledger in the repository,
https://github.com/pouriaetab/llmledger/tree/main/skills/llmledger
In Claude Code: /plugin marketplace add pouriaetab/llmledger, then /plugin install llmledger@llmledger.
What you can ask
Plus a resource, llmledger://snapshot (data dates and sources), and a prompt, pick_a_model.
Good to know
- Costs and ratings are estimates. Arena ratings say which answers people preferred, not what will work
best for you. Plan use (Claude, ChatGPT) assumes a plan runs down in step with API prices, because
plans do not publish per-model limits. Not financial or procurement advice.
- Effort levels come from LiteLLM; the suggested level is a rule of thumb. No open source measures
tokens per task at each effort level yet.
- Many price changes in the catalogue fix a wrong entry rather than change a price: in a labelled sample,
about 6 in 10 first price changes.
price_history says what each flag on a change means (a likely
correction, a unit fix, a change undone) and how often such changes were corrections.
- Every answer carries the date of its data. When the data is 3 or more days old, the answer says so.
price_my_usage prices other models at your own token counts; another model tokenises the same work a little
differently (usually within 10 to 20%) and may answer at another length. Models you used are compared on the
sessions each one got, which were not the same work, and the answer says so. A model with no cache price has cache
tokens counted at its input price, and the row says so.
- Times come only from your own runs (and the sample's own timed calls for
forecast_job), always as a
usual time and a slow day. How often a model was right is the share of a sample's checks it passed, with
a 95% range; with 20 tests the range is wide, and the answer says when two models cannot be told apart.
- What the plug-in reads: a prompt given to
suggest_for_project is only counted and matched against word
lists; a promptfoo results file (log_run, forecast_job) is read for numbers and names only (provider id,
latency, token counts, pass or fail), and the prompts, answers and grader text inside it are never passed on
or treated as instructions; a ccusage or codeburn export (price_my_usage) is read for model names, dates, session
ids and token counts only, never project paths or file names. Timed runs stay on your computer as numbers. The only network call is the daily
download of data.json.
- Set
LLMLEDGER_DATA to a local data.json or another address to use your own copy.
Data and licences
Prices: LiteLLM's model_prices_and_context_window.json (MIT). Ratings: the Arena leaderboard
(CC BY 4.0). Electricity: the U.S. Energy Information Administration's Electric Power Monthly
(public domain). Price history and outlook: llmledger (MIT).
Built with FastMCP (Apache-2.0). Independent; not affiliated
with BerriAI, LiteLLM or Arena.