toke-local
A local, zero-dependency MCP server that cuts coding-agent round-trips by aggregating search, read, edit, exec, git, and savings tools into single, validated calls, with cost tracking and no data leaving the machine.
README
toke-local
A local, zero-dependency MCP server that cuts the round-trips, re-reads and log floods out of coding agents — the same tool-aggregation model published by the commercial Tokeasy (tokeasy.net), implemented from scratch, auditable, and fully local.
12 calls → glob → grep → read → read → read → edit ✕ → re-read → retry → verify…
2 calls → agent_search → agent_edit
Every savings number is labeled counted / measured / estimated and every pricing assumption is a named constant in source.
Features
| Tool | What it does | Saves |
|---|---|---|
agent_search |
glob + grep + read + import graph in one ranked call: matches with score, context lines, per-file imports and reverse imported_by |
4–5 calls → 1 |
agent_read |
structure-aware truncation: imports/types/interfaces/signatures kept, long bodies stubbed ([body omitted: N lines]); mode:"full" for the whole file |
full-file dumps → ~10–20% of bytes |
agent_edit |
batched, multi-file edits; fuzzy match tolerates whitespace and quote drift; TS/JSON/YAML/Python validated before any write; invalid output rejected, ambiguous hunks refused | failed-edit re-read + retry loops |
agent_exec |
accepted command → failure-preserving digest: exit code, all failure lines, per-line ~200-char cap, receipt stored for exact fetch-back; wait_ms and until:regex; timeout kills |
100 KB log → ~2 KB digest |
agent_git |
branch, upstream, remote, ahead/behind, dirty, files changed, diffstat, recent commits, stash, merge state in one call | 5+ git calls → 1 |
agent_savings |
persistent ledger with labeled totals (counted/measured/estimated), estimate, receipts, reset | transparency (measure, don't guess) |
[now: … UTC] |
every response stamps the clock, so the agent stops wasting a call asking the date | 1 call per session |
Plus safety: edits are applied snapshot-safe (immutable blob + 3-way merge + atomic write via the sibling snapedit project), path traversal (../) and symlink escapes are blocked with out_of_scope, and no code ever leaves your machine.
Benchmark
npm run bench reproduces the site's five benchmark categories (VR physics, worker provisioning, security audit, financial research, mobile refactor) with real tool outputs measured end-to-end and the session-transcript economics modeled with named constants:
| Task | Vanilla | toke-local | Δ |
|---|---|---|---|
| VR physics simulation game | $3.00 | $0.08 | −97.4% |
| SaaS worker provisioning | $1.99 | $0.07 | −96.2% |
| SaaS security audit | $1.46 | $0.07 | −94.9% |
| Financial deep research | $2.40 | $0.07 | −96.9% |
| Mobile app multi-day refactor | $2.46 | $0.07 | −97.0% |
| Whole suite | $11.32 | $0.38 | −96.6% |
Honest caveat: this is a modeled benchmark (local measured tool outputs + published list-price constants), not a billed agent session. Real-world savings depend on how read/retry-heavy the workload is — the same mechanisms the commercial product documents as ~20% on its own suite. The happy-path claim is: architecturally the identical cost drivers are removed, measured locally rather than published by a committee. See docs/BENCHMARK.md.
Install
Requires Node ≥ 18. No runtime dependencies.
git clone https://github.com/rianprei/toke-local
cd toke-local
Connect to any MCP client
The server speaks JSON‑RPC 2.0 over stdio. Point Claude Code, Codex, opencode, Cursor, Copilot or Windsurf at:
node bin/toke-local mcp
Claude Code example:
claude mcp add toke-local -- npx -y github:rianprei/toke-local -- mcp # or: node /abs/path/bin/toke-local mcp
CLI
toke-local mcp | search | read | edit | exec | git | savings [json-args]
Example:
node bin/toke-local search '{"query":"renderInvoice","root":".","context_lines":2}'
node bin/toke-local read '{"file":"src/invoice.ts"}'
node bin/toke-local edit '{"cwd":".","edits":[{"path":"src/invoice.ts","old_text":"…","new_text":"…"}]}'
Tests
npm test # 25/25 pass (node:test, zero deps)
npm run bench # the benchmark above
Repository layout
bench/bench.js benchmark harness (5 tasks, vanilla vs toke, named constants)
bin/toke-local executable entry point
src/server.js MCP JSON‑RPC server (initialize, tools/list, tools/call)
src/cli.js CLI dispatch
src/tools/ the six tools
src/ledger.js savings ledger (labeled) with named constants
src/syntax.js validators (TS/JS/JSON/YAML/Python)
src/util.js tsHeader + small helpers
test/toke-local.test.js 25 tests
docs/ architecture, benchmark methodology, runbook
License
MIT © 2026 rianprei — see LICENSE. Built to be the open, local, auditable alternative to a closed commercial MCP kit. Code never leaves your machine.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.