Skip to main content
Glama

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

tsm_classify

Classify text into a given label set

tsm_extract_json

Extract structured fields from long text

tsm_summarize

Compress long text to a short summary

tsm_rewrite

Rewrite text in a different style (or translate zh↔en)

tsm_codegen_small_patch

Generate small code snippets / function-level patches

tsm_diff_digest

Compress a git diff into a structured change summary

tsm_task_extract

Extract actionable tasks from unstructured text

All tools return both human-readable content and machine-consumable structuredContent.

Related MCP server: ai-workers-mcp

Requirements

  • Node.js >= 20

  • A running provider (local model or cloud API with OpenAI-compatible endpoint)

Setup

npm install
npm run build

Create ~/.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 apiKeyEnv to the environment variable name that holds the key.

  • For local providers with no auth, set apiKeyEnv to "".

  • toolRouting is optional — unrouted tools fall back to defaultProvider.

Usage

# Run as MCP server (stdio transport)
npm start

Claude 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

Available Tools

7 tools
tsm_classifyA

Classify text into one of the provided labels using a budget model. Returns label, confidence score, and a brief reason. Useful for intent classification, routing decisions, and tagging.

Inputs: text (required), labels (required), instructions.

tsm_codegen_small_patchA

Generate small code snippets or function-level patches using a budget model. Scoped to single functions, regex, SQL, scripts, or unit test samples. NOT for multi-file or architectural designs.

Inputs: task (required), language, constraints, existing_code.

tsm_diff_digestA

Compress a git diff into a structured summary of changed areas, behavior changes, risks, and a one-paragraph overview. Helps the main model quickly understand large diffs.

Inputs: diff_text (required), focus.

tsm_extract_jsonA

Extract structured fields from long text according to a schema description. Returns a JSON object with extracted data and a list of missing fields. Useful for parsing documents, issues, logs.

Inputs: text (required), extraction_goal (required), schema_description (required).

tsm_rewriteA

Rewrite text in a different style (concise, formal, technical, friendly, or translate between Chinese and English) without changing the core facts.

Inputs: text (required), style (required), constraints.

tsm_summarizeB

Compress long text into a concise summary with bullet points and risk flags. Useful for compressing long conversations, logs, documents, or diff context before passing to the main model.

Inputs: text (required), summary_style (required), max_points.

tsm_task_extractB

Extract an actionable task list from unstructured text (meeting notes, daily reports, requirements). Returns tasks with optional owner, due date, status, and notes.

Inputs: text (required), task_granularity (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a distinct, non-overlapping purpose: classification, code patch generation, diff summarization, JSON extraction, rewriting, text summarization, and task extraction. No ambiguity between tools.

    Naming Consistency4/5

    All tools use the 'tsm_' prefix and snake_case. Most follow a verb_noun pattern (classify, summarize, rewrite), though 'tsm_codegen_small_patch' is slightly less consistent with its compound noun. Overall, naming is clear and predictable.

    Tool Count5/5

    With 7 tools, the server is well-scoped for a utility focused on token-saving and text processing. Each tool addresses a common need without being excessive or insufficient.

    Completeness4/5

    The tool set covers major text operations: classification, extraction, transformation, and summarization. Minor gaps exist (e.g., no data masking or bulk processing), but the core functionality for offloading to budget models is complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers