Context7
Up-to-date docs for AI agents
作者提供的说明(英文原文)
Live LLM pricing, context windows and model ids, read from each vendor's own page every 3 hours.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"statlyte": {
"command": "npx",
"args": [
"-y",
"statlyte"
]
}
}
}在终端中运行这条命令
claude mcp add statlyte -- npx -y statlyte粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"statlyte": {
"command": "npx",
"args": [
"-y",
"statlyte"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"statlyte": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"statlyte"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 richardwilkinson9 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.1)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Context7, Codebase Memory, Exa
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Live pricing, context windows and identifiers for every major LLM API — so you can stop hardcoding a model table that goes stale.
Every app that touches an LLM ends up with something like this pasted into it:
const PRICES = {
'gpt-4o': { input: 2.5, output: 10 }, 'claude-3-5-sonnet': { input: 3, output: 15 }, // …written once, wrong within a month };
Then a model is retired, a new one lands, an introductory rate expires, and your cost dashboard is quietly lying to you. This package fetches the current numbers instead.
npm i statlyte
import { getModel, costOf, rankByCost, scheduledChanges } from 'statlyte';
// What does this actually cost me? await costOf('claude-sonnet-5', { input: 12_000, output: 800 }); // => 0.032
// Look up by statlyte id or the vendor's own API id const m = await getModel('gpt-5-mini'); m.contextWindow; // 400000 m.prices.input; // 0.25 (USD per million tokens) m.prices.cache_read; // 0.025
// Cheapest model for a real monthly workload const ranked = await rankByCost({ inputPerMonth: 620e6, outputPerMonth: 210e6 }); ranked[0].name; // cheapest first ranked[0].monthlyCost; // USD/month
// Price rises vendors have already announced await scheduledChanges(); // [{ name: 'Claude Sonnet 5', effectiveOn: '2026-09-01', // from: { input: 2, output: 10 }, to: { input: 3, output: 15 }, // reason: 'Introductory pricing ends' }]
Everything is cached in-process for six hours. Pass { offline: true } to any call to use only the bundled snapshot and never touch the network.
Audio/transcription models (Deepgram, OpenAI Whisper/TTS) aren't priced per token — they carry m.nonTokenPrice ({ unit: 'per_minute' | 'per_million_characters', amount }) instead, and m.prices is {}. costOf() throws a clear error rather than silently returning 0 if you call it on one of these; check m.nonTokenPrice first, or filter on m.prices.input != null.
The genuinely useful trick. scheduledChanges() returns increases vendors have announced but not yet applied — so you can find out at build time rather than on the invoice:
// scripts/check-model-costs.mjs
import { scheduledChanges } from 'statlyte';
const MODELS_WE_USE = ['anthropic/claude-sonnet-5', 'openai/gpt-5-mini']; const soon = (await scheduledChanges()) .filter((c) => MODELS_WE_USE.includes(c.id)) .filter((c) => new Date(c.effectiveOn) - Date.now() < 60 * 86400_000);
if (soon.length) { console.error('Price change coming:'); for (const c of soon) { console.error( ${c.name} on ${c.effectiveOn}: + in $${c.from.input}→$${c.to.input}, out $${c.from.output}→$${c.to.output} per MTok); } process.exit(1); }
An assistant's training data goes stale on prices within weeks, and a guessed number is worse than no number. This gives your agent the current figures:
claude mcp add statlyte -- npx -y statlyte
Other MCP clients
{
"mcpServers": { "statlyte": { "command": "npx", "args": ["-y", "statlyte"] } } }
</details>
Tools: list_models, get_model_pricing, estimate_cost, cheapest_for_workload, scheduled_price_changes.
Also listed in the official MCP Registry as io.github.richardwilkinson9/statlyte.
No install, no key, CORS open:
https://statlyte.com/api/v1/models
https://statlyte.com/api/v1/models/anthropic/claude-opus-5 https://statlyte.com/api/v1/changes
The raw dataset also lives in this repo as models.json and changes.json, updated by commit — so you can diff it, pin it, or vendor it.
A job re-reads each provider's published pricing page every three hours. When a figure differs from the last one on file it writes a new observation with a timestamp and the URL it was read from. Nothing is inferred and nothing is estimated: if a price isn't published, it isn't listed.
Two honest caveats:
rankByCost will happily tell you an 8B model is cheaper than a frontier one. That is arithmetic, not advice.Found a figure that disagrees with a vendor's page? The vendor is right and we're wrong — open an issue and it gets fixed on the next run.
statlyte.com has the human-facing side: a change log, a calculator that puts two models head to head at your own volume, and a calendar of announced changes. Free, no account.
MIT licensed. Attribution appreciated, not required.