tokens-saver-mcp
tokens-saver-mcp
A provider-agnostic MCP (Model Context Protocol) server that routes 7 narrow text-processing tools to budget models — local or cloud — to reduce main model token consumption.
Core idea: offload low-risk, structured, short-output sub-tasks (classification, extraction, summarization, rewriting, small code generation) to cheaper models, keeping complex reasoning and high-risk changes on Claude/GPT.
Tools
Tool | Purpose |
| Classify text into a given label set |
| Extract structured fields from long text |
| Compress long text to a short summary |
| Rewrite text in a different style (or translate zh↔en) |
| Generate small code snippets / function-level patches |
| Compress a git diff into a structured change summary |
| Extract actionable tasks from unstructured text |
All tools return both human-readable content and machine-consumable structuredContent.
Requirements
Node.js >= 20
A running provider (local model or cloud API with OpenAI-compatible endpoint)
Setup
npm install
npm run buildCreate ~/.tokens-saver-mcp/settings.json to configure providers (see below).
If the file does not exist, the server falls back to a built-in default pointing at http://127.0.0.1:1234 with zai-org/glm-4.7-flash.
Configuration
~/.tokens-saver-mcp/settings.json
{
"defaultProvider": "remote_budget_cn",
"providers": {
"local": {
"type": "openai_compatible",
"baseUrl": "http://127.0.0.1:11434/v1",
"apiKeyEnv": "",
"model": "qwen2.5:14b",
"timeoutMs": 15000,
"maxRetries": 1,
"temperature": 0.1
},
"remote_budget_cn": {
"type": "openai_compatible",
"baseUrl": "https://api.minimax.chat/compatible-mode/v1",
"apiKeyEnv": "MINIMAX_API_KEY",
"model": "MiniMax-M2.7",
"timeoutMs": 20000,
"maxRetries": 2,
"temperature": 0.2
}
},
"toolRouting": {
"tsm_classify": "local",
"tsm_extract_json": "remote_budget_cn",
"tsm_summarize": "remote_budget_cn",
"tsm_rewrite": "remote_budget_cn",
"tsm_codegen_small_patch": "remote_budget_cn",
"tsm_diff_digest": "remote_budget_cn",
"tsm_task_extract": "local"
}
}Key rules:
API keys are never stored in the config file. Set
apiKeyEnvto the environment variable name that holds the key.For local providers with no auth, set
apiKeyEnvto"".toolRoutingis optional — unrouted tools fall back todefaultProvider.
Usage
# Run as MCP server (stdio transport)
npm startClaude Code integration
{
"mcpServers": {
"tokens-saver": {
"command": "node",
"args": ["/path/to/tokens-saver-mcp/dist/server.js"]
}
}
}Development
npm test # Run 61 tests
npm run typecheck # Type check only
npm run build # Compile TypeScript