Local MCP server for deep code indexing with symbol search, call graphs, git intelligence, and semantic search via embeddings.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Srclight.
Deep code indexing for AI agents. SQLite FTS5 + tree-sitter + embeddings + MCP.
Srclight builds a rich, searchable index of your codebase that AI coding agents can query instantly โ replacing dozens of grep/glob calls with precise, structured lookups. It is the most comprehensive code intelligence MCP server available: 42 tools covering symbol search, relationship graphs, community detection, impact analysis, git change intelligence, semantic search, build system awareness, and document extraction โ capabilities no other single MCP server combines. Fully local and private: your code never leaves your machine.
AI coding agents (Claude Code, Cursor, etc.) spend 40-60% of their tokens on orientation โ searching for files, reading code to understand structure, hunting for callers and callees. Srclight eliminates this waste.
| Without Srclight | With Srclight |
|---|---|
| 8-12 grep rounds to find callers | get_callers("lookup") โ one call |
| Read 5 files to understand module | codebase_map() โ instant overview |
| "Find code that does X" โ 20 greps | semantic_search("dictionary lookup") โ one call |
| Edit a function, break 47 callers | detect_changes() โ shows blast radius before you commit |
| 15-25 tool calls per bug fix | 5-8 tool calls per bug fix |
Srclight's MCP server refuses unknown tool arguments instead of silently dropping them โ a
mistyped filter like projects= (for project=) is rejected with an error, never answered as if
the constraint were applied. Every tool advertises additionalProperties: false. The guard is the
shared mcpkit policy, vendored as one hash-verified file
(src/srclight/_mcpkit.py).
AI agents: if a call returns unknown argument(s): โฆ running older code than you think โฆ reconnect, the running server predates the argument you sent (a long-lived daemon serves the code
it launched with). Nothing ran โ check the reported revision and reconnect the MCP; don't retry the
same call.
Every symbol/graph result carries index_freshness: the short string
"verified-fresh" when the files behind the answer are byte-identical to what
was indexed, or a bounded object naming which files are stale, missing, or
not indexed. check_freshness(paths?) probes any paths โ or the whole index โ
on demand (unchanged files cost one stat each; never writes), and
index_status reports whole-index checked/stale_count.
AI agents: a result stamped stale describes the code as indexed, not as
it is now โ reindex (srclight index) or read the live file before acting on
line numbers or bodies from it. "verified-fresh" is the affirmative signal;
its absence on a workspace-mode result means freshness was not checkable for
that result, never that it is fresh.
Reference edges are built by name matching plus ranked evidence, and every
caller/callee edge carries a resolution label saying how its target was
chosen: same_file (the caller's own file defines the name), unique_file
(all same-named candidates live in one file), import (the caller's imports
single out one file), same_dir, or name_only. Names appearing only in
comments or strings never become edges.
AI agents: name_only means a ranked candidate list across same-named
symbols โ read it as "one of these", not a confirmed link; verify with
get_symbol or a reference search before acting on it. The stronger labels
are safe to treat as resolved.
apt install poppler-utils / brew install popplerNote:
srclight indexautomatically adds.srclight/to your.gitignore. Index databases and embedding files can be large and should never be committed.
Srclight supports embedding-based semantic search for natural language queries like "find code that handles authentication" or "where is the database connection pool".
symbol_embeddings table (SQLite).npy sidecar snapshot is built and loaded to GPU VRAM (cupy) or CPU RAM (numpy) for fast searchsemantic_search(query) embeds the query and runs cosine similarity against the GPU-resident matrix (~3ms for 27K vectors on a modern GPU)hybrid_search(query) combines FTS5 keyword results + embedding results via Reciprocal Rank Fusion (RRF)| Provider | Model | Quality | Local? | Notes |
|---|---|---|---|---|
| Ollama (default) | qwen3-embedding | Best local | Yes | Needs ~6GB VRAM |
| Ollama | nomic-embed-text | Good | Yes | Lighter, works on 8GB VRAM |
| Voyage AI (API) | voyage-code-3 | Best overall | No | Requires VOYAGE_API_KEY |
Embeddings are stored in symbol_embeddings table in .srclight/index.db. After indexing, a .npy sidecar snapshot is built for fast GPU loading:
| File | Purpose |
|---|---|
index.db | Write path โ per-symbol CRUD during indexing |
embeddings.npy | Read path โ contiguous float32 matrix for GPU/CPU search |
embeddings_norms.npy | Pre-computed row norms (avoids recomputation per query) |
embeddings_meta.json | Symbol ID mapping, model info, version for cache invalidation |
For ~27K symbols at 4096 dims (qwen3-embedding), that's ~428 MB on disk, ~450 MB in VRAM. Incremental: only re-embeds symbols whose content changed; sidecar rebuilt after each indexing run.
Search across multiple repos simultaneously. Each repo keeps its own .srclight/index.db; at query time, srclight ATTACHes them all and UNIONs across schemas.
Git submodules are not indexed automatically โ git ls-files does not recurse into them. To index a submodule, clone it separately and add it as its own workspace project. See docs/usage-guide.md for details.
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/srclight-srclight)<a href="https://allmcps.com/mcp/srclight-srclight"><img src="https://allmcps.com/api/badge/srclight-srclight?style=directory" alt="Srclight on AllMCPs" /></a>