Local MCP server for token-capped code search, navigation, diagnostics, and symbol-level edits.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Vs Token Safer.
search_symbolFind a symbol declaration by name/substring (semantic, not text).
find_referencesEvery call site of a symbol. Takes the **name directly** (`symbol="FooBar"`) β the one to reach for when you change a function/type and must touch every use. `detail=file`/`dir` β a **blast-radius summary** (dependents grouped + ranked) instead of the per-line list. `direction=callers`/`callees` swβ¦
read_symbolReturn the **source of one named declaration** (its span) β not the whole file. The read-side twin of `replace_symbol_body`: skip Read-ing a 700-line file to see one function. `signatureOnly` trims to the head.
goto_definitionJump to the definition at a position. `kind=` also does `type_definition` / `implementation` (concrete impls of an interface/virtual) / `declaration`.
hoverType/signature at a position.
document_symbolsOutline a file (classes/functions/types as `file:line`). `scope=directory` β a **signatures-only repo skeleton** of every code file under a dir (the shape of a module without Reading each file).
English Β· νκ΅μ΄
A token-saving code layer for Claude Code, for any codebase. TypeScript, JavaScript, and Python work with zero setup; C# and C++ add a language server; and 30+ more languages come in on the built-in tree-sitter tier. Proven up to a 26k-translation-unit Unreal Engine monorepo β so your web, backend, or data repo is the easy case.
Your coding agent has a small context window. Your repo is large. vs-token-safer sits in between.
Ask where something is, what calls it, or even "how does the auth flow work?" when the name escapes you β and instead of pasting a wall of source into the chat, it replies with a short
file:linelist.
- Builds normally? The answers are exact β it reads the same code index your editor relies on.
- No toolchain set up? It still locates your functions and classes.
- Forgot the name, only remember what it does? It finds it from the vocabulary your own code already uses β no AI model, nothing uploaded.
- Markdown or a config file? Jump straight to one section by its heading instead of opening the whole file.
A companion plugin does the same for giant editor and build logs. None of it leaves your machine.
Same flow on TypeScript, Python, C#, C++, Go and more (clangd Β· Roslyn Β· tsserver Β· pyright Β· tree-sitter). VTS_REWRITE=0 blocks instead of rewriting.

The built-in dashboard (vts serve) β your indexed repo as a live 3D graph, all on 127.0.0.1. Three modes: include graph (clangd), call graph (live LSP call hierarchy by symbol), and symbol graph β a tree-sitter map of files + import edges that needs no language server, so it renders on any of the 17 tree-sitter languages with zero setup.
grep on a large repo β a TypeScript/Python monorepo, a C#/.NET solution, even a 26k-TU Unreal C++ tree β floods the context. The language-server index stays token-capped β ~97β99% smaller (benchmarks).grep. The hook doesn't just block it β it rewrites the command to the indexed query in place, so the search still runs and the flow never breaks.detect_changes maps a git diff to the symbols it changed, walks each one's callers, and scores the risk LOW/MED/HIGH β from the blast radius, the caller-cascade depth, and which historically co-changed files this diff left out. A review starts from "what does this actually touch," capped to file:line, nothing uploaded. It's the code-review-context idea done the vs-token-safer way: the official language server for the blast radius and your own git history for the coupling β no persistent graph database, no embeddings.vts discover reads your recent sessions and reports exactly which searches bypassed the index and what they cost.Then restart the Claude Code session (the vs-search MCP server only starts on a fresh session).
Verify the tools appear and that grep src/**/*.cpp is rerouted to the index. Prerequisites: Node β₯ 18
and a language server β clangd (C/C++) / Roslyn (C#) you install; JS/TS + Python auto-install. Details in
Prerequisites below.
Want only the log analyzer?
/plugin install gamedev-log-analyzer@vs-token-safer.
vs-token-safer isn't a search box β it's a precision ladder. You ask where something is, what calls it, or "how does the auth flow work?" when the name escapes you, and it answers at the highest precision it can reach, then tells you which rung the answer came from:
The rungs aren't a one-time pick β they connect, and vts switches between them as it learns more. Start
on FUZZY when you only know the intent; the moment concept_search surfaces a real name, vts climbs to
EXACT to confirm it against the semantic index (and an exact search that misses drops back down to FUZZY).
The hooks steer that hand-off in both directions, so "I don't know the name" turns into a precise,
semantically-verified file:line instead of a dead end.
Graceful degradation β a locate never hard-errors on a cold or missing toolchain. When clangd is
missing, cold, or still indexing, a locate degrades to the SYNTACTIC (tree-sitter) tier with a one-line
advisory instead of erroring or blocking, then climbs to EXACT once clangd warms. If a committed
.vts-index has drifted from the source, the answer is still served but labeled SYNTACTIC Β· STALE (with a
climb: vts index hint). And on a cold locate over a large tree, vts auto-builds the .vts-index/ in the
background so the next query (or the same session, once the build finishes) is instant β you never wait on
it. So vts index below is best thought of as auto-built in the background; commit it to share, not a
manual step you have to remember.
Every answer comes back capped to file:line (never source bodies) and carries a one-line completeness
certificate naming the rung β so the model always knows whether it got the semantic truth or a fallback.
On a 3-language, 150-file benchmark that's 87% fewer tokens than grep (~138Γ on a real Unreal Engine 5
tree). Underneath, four mechanisms make Claude actually use the ladder instead of reaching for grep:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/jsungmin-vs-token-safer)<a href="https://allmcps.com/mcp/jsungmin-vs-token-safer"><img src="https://allmcps.com/api/badge/jsungmin-vs-token-safer?style=directory" alt="Vs Token Safer on AllMCPs" /></a>