arcscope
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arcscopefind the definition of AppComponent"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
arcscope
A fully-local MCP server that gives an AI coding agent three stacked views of an unfamiliar codebase — symbols, the module/dependency graph, and a repo-declared architecture vocabulary answered live against current code — so it stops re-deriving structure with grep every session.
Status: early preview (v0.0.1). The v1 slice — all three layers — works end-to-end. TS / JS / TSX.
npm i -D arcscope
npx arcscope init # index the repo, write an offline .mcp.json, update .gitignore
# restart your MCP client (e.g. Claude Code) — it reads .mcp.json and connectsEverything runs on your machine: no network at query time or at server spawn, no telemetry, no embeddings. Parsing is tree-sitter (WASM grammars bundled offline), and every result carries a precision tier so the agent never mistakes a heuristic for a compiler-accurate answer.
Tools
tool | answers |
| where a symbol is defined, with its signature |
| who references it — follows tsconfig path aliases + barrel re-exports, so it beats grep on same-named symbols |
| the file/module dependency graph: hubs, a file's neighborhood, or circular dependencies |
| the repo's named architecture concepts (its committed vocabulary) |
| resolve one concept to its live code locations, with drift detection |
Related MCP server: agent-workspace-mcp
The architecture vocabulary — the differentiator
Where other tools keep project knowledge as static prose that silently rots, arcscope binds each named concept to an executable locator recomputed on every query. Declare your architecture in a committed .arcscope/vocab.yaml:
concepts:
repository-tokens:
title: Repository-token pattern (I{Name}Repository)
locators:
- { kind: symbol, query: "interface I*Repository", in: "libs/data-access/**" }
- { kind: symbol, query: "const *_REPOSITORY = InjectionToken", in: "libs/**/tokens/**" }
- { kind: path, glob: "apps/**/firestore-*.repository.ts" }arch_query repository-tokens resolves this against the current tree and flags drift when the resolved set diverges from its accepted baseline — so a stale concept is a signal, not a surprise. Locators resolve through arcscope's own engine; a committed manifest can never run a shell command.
How it works
Three layers in one local Node process speaking MCP over stdio:
Engine — web-tree-sitter parses each file (lazy WASM grammars) into symbols + import edges. The always-on breadth substrate.
Graph — a derived view over those import edges (dependency graph, cycles), grouped by directory + import-clustering — never a build tool's project model (
nx.json, BUILD files).Knowledge — the live architecture vocabulary above. The net-new, defensible layer.
See the full design, roadmap, and the reasoning behind every constraint: docs/arcscope-spec.html.
Building with Claude Code? Start at
CLAUDE.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iliedanila/arcscope'
If you have feedback or need assistance with the MCP directory API, please join our Discord server