code-context
Click on "Deploy 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., "@code-contextfind all references to the User model"
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.

code-context is the retrieval layer under your coding agent: one local index over the whole repo (keyword, semantic, hybrid, and SQL), reached through an MCP server and a CLI, with the index living in plain files inside your repo. Your agent answers questions about the codebase without reading it file by file.
The rule of thumb: the more a question spans the repo, the more this saves, because the answer comes from a ranked index instead of pulling source into context one file at a time.
On your own codebase, ~30-40% fewer tokens and ~50% fewer tool calls (so answers land faster too - aggregation questions run about 2× quicker). The harness is in the repo, so you can reproduce it on your own code.
Try it live (early preview): ask questions about any public GitHub repo at lantern.infino.ai, a demo agent that runs on code-context.
🔎 Find code by words or meaning. One ranked pass fuses exact keyword matching with semantic similarity, and every hit carries the code with
path:linecitations.📊 Ask questions grep can't answer. Search works as a SQL table function, so "which files have the most code about X" is one query: ranked by relevance, tallied by
GROUP BY.⚡ Searching in seconds, fresh forever. The keyword index commits before the embedding model even finishes downloading, vectors backfill in the background, and edits re-sync incrementally: only changed files re-chunk and re-embed.
🔒 Nothing leaves your machine. No accounts, no API keys, no database server, no telemetry. Embedding is a small local model, downloaded once; after that everything works offline.
Built on infino, a fast retrieval engine that runs SQL, full-text search, and vector search over a single copy of your data. Text and numeric data is stored as spec-compliant Parquet, and the same engine handles logs, docs, and agent memory.

Claude Code answering questions about a repo through code-context: index it, then ask, and it reaches for search and SQL on its own.
Quick start
Install the Claude Code plugin - nothing to paste into a config:
/plugin marketplace add infino-ai/code-context
/plugin install code-context@infino-aiIt registers code-context's three tools with alwaysLoad already set, so the
agent keeps them in view and reaches for the index directly instead of falling
back to plain file search.
Not on Claude Code, or prefer a one-line command? Add it as an MCP server:
claude mcp add-json code-context -s user '{"command":"npx","args":["-y","@infino-ai/code-context","mcp"],"alwaysLoad":true}'The alwaysLoad flag pins this small tool set so that in a setup with many MCP
servers - where clients defer tool definitions behind a tool-search step - the
agent doesn't miss the index and fall back to plain file search. (Use either
the plugin or this command, not both.)
Then just ask a question about the code. The first search or sql on an
unindexed repo builds the index inline and answers on the same call: keyword
search is live in seconds, and vectors backfill in the background. (Prefer to
kick it off yourself? The reindex tool does the same build on demand.)
CI-tested on Linux x64 (glibc) and macOS arm64; linux-arm64, musl, and Windows-via-WSL are expected to work through the engine's prebuilt bindings but are not CI-covered.
Related MCP server: mcplens
Evaluation
Real agent runs over a codebase-Q&A suite (claude-sonnet-4-6, the same minimal prompt for both lanes), on a repo the model has not memorized - infino, the engine this is built on - because that is the realistic case for your private code. Baseline is stock file tools including Bash; the code-context lane is the same tools plus the MCP server. Measured on three axes:

Category | Tokens | Tool calls | Wall time |
Aggregation ("most code about X") | -43% | -71% | -48% |
Comprehension ("how does X work") | -29% | -27% | -13% |
Blended | -32% | -53% | -32% |
Aggregation is the structural win - ranked search composed with GROUP BY,
which file tools cannot express at any budget - and it roughly halves
end-to-end time. These numbers are on a strong model; weaker, cheaper models
explore less efficiently, so the savings tend to be larger there. On
pinpoint symbol lookup, where a single grep is already cheap, an index
matches file tools rather than beating them.
Full methodology and per-question tables are in
docs/benchmark.md, with the harness in
bench/ so you can run the same lanes on your own repo.
What you get
One index and a deliberately small tool surface for agents:
Tool | What it does | When agents use it |
| One ranked pass fusing exact keyword matching (BM25) with semantic similarity (reciprocal-rank fusion). Hits carry the chunk content, so answers come straight from results. | A strong default for finding and understanding code: how a subsystem works, code by meaning or exact term, context before a change, similar implementations - exact identifiers and paraphrases in the same call. |
| Read-only SQL over the index, with the ranked search functions ( | Counts, rankings, aggregates over the whole repo in one query. |
| Incremental sync (the server also auto-syncs in the background). | After significant edits. |
Three tools is a deliberate design: one way to find, one way to count, one way to stay fresh. Every additional near-duplicate retrieval tool worsens an agent's tool selection, and hybrid search's keyword half already ranks exact identifier terms highly, so a separate lexical tool has no job left.
The SQL move
Search-as-a-table composes with aggregation. Ranked by relevance, tallied by SQL, one engine pass:
SELECT path, SUM(end_line - start_line + 1) AS lines, COUNT(*) AS chunks
FROM bm25_search('chunks', 'content', 'vector index quantization', 300)
GROUP BY path ORDER BY lines DESC LIMIT 15hybrid_search(...) and vector_search(...) work the same way. The CLI and
MCP server embed {{name}} placeholders server-side, so agents never handle
raw vectors.
Staged readiness
cx index commits the keyword (BM25) index first. On a ~3,000-chunk repo
that takes under a second, so search works before any embedding model even
exists on the machine. Vectors backfill in the background with a local model
(downloaded once, no key; about two minutes for that same repo), and
hybrid/semantic ranking unlocks automatically when they land. If the vector
stage fails, keyword search stays live and the index says so honestly.
The default model optimizes quality-per-minute. See docs/embedder-eval.md for how it was chosen.
Your index is just files
Everything lives in .infino/ in your repo root (added to your
.gitignore automatically on first index): plain files you can copy,
cache in CI, or put on object storage. It's a live index the engine queries in place, not a snapshot you
export and pass around.
Setup for agents
code-context is an MCP server over stdio, so any MCP client works. Register
it once and the tools (search, sql, reindex) become available to the
agent.
Install as a plugin - alwaysLoad already set, nothing to paste into a
config:
/plugin marketplace add infino-ai/code-context
/plugin install code-context@infino-aiOr register it as an MCP server directly:
claude mcp add-json code-context -s user '{"command":"npx","args":["-y","@infino-ai/code-context","mcp"],"alwaysLoad":true}'alwaysLoad: true pins code-context's tools into context so the agent reaches
for the index directly. In sessions with many MCP servers Claude Code defers
tool definitions behind a tool-search step; without alwaysLoad the agent can
miss code-context and fall back to grep/read. It's a small, always-loaded set
(three tools). Omit it (or use the shorter claude mcp add code-context -- npx -y @infino-ai/code-context mcp) if you'd rather leave the tools deferred.
Use either the plugin or the add-json command, not both. They register the
same code-context server, so running both just collides.
For a team, commit a project-scoped .mcp.json at the repo root so
everyone gets it (after the one-time project-server approval):
{ "mcpServers": { "code-context": { "command": "npx", "args": ["-y", "@infino-ai/code-context", "mcp"], "alwaysLoad": true } } }Add to .cursor/mcp.json:
{ "mcpServers": { "code-context": { "command": "npx", "args": ["-y", "@infino-ai/code-context", "mcp"] } } }In ~/.codex/config.toml (note the key is mcp_servers):
[mcp_servers.code-context]
command = "npx"
args = ["-y", "@infino-ai/code-context", "mcp"]In ~/.gemini/settings.json:
{ "mcpServers": { "code-context": { "command": "npx", "args": ["-y", "@infino-ai/code-context", "mcp"] } } }Standard stdio MCP config:
{ "mcpServers": { "code-context": { "command": "npx", "args": ["-y", "@infino-ai/code-context", "mcp"] } } }Point the server at a repo explicitly with env: { "CX_ROOT": "/path/to/repo" }
when the client's working directory is not the repo.
Tools: search, sql, reindex (incremental sync: an unchanged repo is
a fast no-op, and the server also auto-syncs in the background as queries
arrive, so results track your edits without anyone asking).
Multiple repos in one session. Each tool takes an optional path (an
absolute repo root). Omit it and the server uses its startup root; set it to
target a specific repo when a session spans more than one. One server
instance serves them all, each with its own index in its own .infino/ -
no restart, no per-repo config.
Configuration
Variable | Default | Purpose |
|
| where the index lives |
| 10 | default number of hits |
| 20000 / 1MB | indexing caps (files over the file cap are left out; |
| current directory | default repo root for the MCP server / CLI when not run from the repo (each tool call can override it with a |
| on |
|
| on |
|
| 30 | auto-sync debounce between staleness checks |
| off | keyword-only mode for the MCP server (skip the vector stage) |
| off |
|
Every search / sql result carries a usage receipt - a terse, local line
showing the tokens it returned, the files it spanned, and a running session
total (e.g. returned ~1.2k tokens | 4 chunks / 3 files | session ~8.4k over 7 queries). Every figure is a ~ estimate, computed in-process - nothing about
your queries or code leaves the machine.
CLI
The same index is reachable from the terminal too, for scripting, CI, or inspecting results yourself. Install the binary, then run any command inside a repo:
npm install -g @infino-ai/code-contextcx index [path] sync the index (incremental; --full rebuilds, --watch follows edits)
cx search <query> exact terms + meaning, one ranked pass (-k hits)
cx sql <statement> read-only SQL; --embed q="text" fills {{q}}
cx status what the index holds, how fresh, vector readiness
cx usage ledger of queries run and what each returned (-n, --all, --clear, --json)
cx mcp serve the MCP tools over stdiocx usage reads the local ledger at .infino/usage.jsonl - every search /
sql (from the CLI or the MCP server) appends one line recording the query and
a compact summary of what came back (paths and line ranges for search, row
count for sql), plus the token figures from the receipt. It's a deterministic,
model-independent view of what went through the index - no running server or
agent needed to read it back. CX_NO_RECEIPT=1 turns off both the inline
receipt and this ledger.
How often does the agent actually reach for it?
cx usage can also show, per session, in how many of your prompts code-context
was used - e.g. code-context used in 2 of 3 prompts (2 calls). The MCP server
can only count its own calls, not your prompts, so this ratio comes from two
Claude Code hooks that keep a local tally (nothing is sent anywhere). Add them
to your Claude Code settings (~/.claude/settings.json or a project
.claude/settings.json):
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [{ "type": "command", "command": "cx usage --hook" }] }
],
"PostToolUse": [
{ "matcher": "mcp__code-context.*", "hooks": [{ "type": "command", "command": "cx usage --hook" }] }
]
}
}cx usage --hook reads the event on stdin, updates .infino/prompt-stats.json,
and prints nothing. If you run code-context via npx, use
npx -y @infino-ai/code-context usage --hook as the command.
What it is, and what it isn't
code-context's lane is ranked content retrieval and content-relevance
aggregation: find code by words or meaning, rank whole files by how much
they're about a topic, always with path:line receipts. It deliberately
does not do structural code intelligence (call-graph tracing, dead-code
detection, type resolution). Tools that do are complementary: MCP servers
stack, so run both.
Architecture

Chunking: tree-sitter (WASM, no native compiles) cuts at definition boundaries for TypeScript/JS, Python, Rust, Go, Java, C/C++, Ruby, C#, PHP; Markdown splits at headings; everything else falls back to fixed windows. Every chunk carries
path, start_line, end_line, lang, content.Index: infino tables in
.infino/: BM25 (FTS) and IVF vector indexes over a single copy of the data, queried in-process through the Node binding. No server.Embeddings: always local. A small model (chosen by a measured eval) downloaded once; no key, no per-query network, code never leaves the machine. Queries embed with the same model the index was built with, and a mismatch is a clear error, not silently wrong results.
Freshness: incremental by design. A per-file state map (size/mtime prefilter, then content hash) means a sync re-chunks and re-embeds only the files that changed: on a ~3,000-chunk repo an unchanged tree checks in ~20ms and a one-file edit syncs in ~0.7s with vectors kept current (larger-repo numbers in the benchmark). The MCP server auto-syncs in the background as queries arrive (never blocking a query),
cx indexis incremental by default (--fullto rebuild), andcx index --watchsyncs on file events.
Learn more
Code search for coding agents - the crawl-vs-retrieve model and when an index saves tokens.
FAQ - what it is, when to use it, local-only guarantees, freshness.
Tradeoffs - the honest limits.
Benchmark - measured results, with a harness to reproduce them on your own repo.
License
Apache-2.0
Available Tools
3 toolsreindexSync the code indexA
Bring the index up to date with the working tree. Incremental by default: only files that changed since the last index are re-chunked and re-embedded, and an unchanged tree is a fast no-op, so call this freely after edits. The server also auto-syncs in the background as queries arrive. On a repo that has never been indexed this builds the index from scratch, replying as soon as keyword search is live (seconds) while vectors backfill behind it. Pass full=true to force a rebuild from scratch. Returns what changed plus index status.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Force a full rebuild instead of an incremental sync. | |
| path | No | Absolute path to the repository root to index. Defaults to the server's configured root; set it to target a specific repo when a session spans more than one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so admirably. It states that the operation is incremental by default, only changed files are re-chunked/re-embedded, an unchanged tree is a fast no-op, and auto-sync already occurs in the background. It also covers cold-start behavior (build from scratch, keyword search live in seconds, vectors backfill) and what a full=true does. This is rich, honest behavioral context with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense, with each sentence contributing distinct behavioral or usage detail. It front-loads the core purpose in the first clause, then systematically covers incremental behavior, auto-sync, cold-start, the full flag, and return value. There is no filler or repetition, making it an efficiently structured paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers all the essential aspects a calling agent needs: default behavior, when to call, how to force a rebuild, cold-start timing, return information, and the path parameter's role is covered by the schema. It is complete for a synchronization tool and leaves no significant ambiguity about invocation or expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters (full and path) are described in the input schema. The description adds a bit by saying 'Pass full=true to force a rebuild from scratch,' but that essentially restates the schema's 'Force a full rebuild instead of an incremental sync.' Since the schema already documents meaning, the description adds marginal value beyond it, keeping the score at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Bring the index up to date with the working tree.' It immediately distinguishes itself from sibling tools (search, sql) by focusing on index synchronization. The description also explains the core behavior (incremental by default, full rebuild option) and makes it unmistakable what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'call this freely after edits' and notes that the server auto-syncs in the background 'as queries arrive.' This tells the agent when to invoke the tool, though it doesn't explicitly name alternatives or state when not to call it. The guidance is strong enough that an agent knows to use this after modifications, and it gets a 4 rather than a 5 because it lacks explicit 'use X instead' exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchCode search (exact terms + meaning)A
Semantic + keyword code search over the indexed repository - a strong default for finding and understanding code. Use it to: understand how a subsystem or feature works, find code by meaning when you don't know the exact name, locate the code behind a behaviour or bug, gather context before making a change, review existing implementations and patterns, find everything a refactor would touch, understand the architecture for feature work, or spot similar/duplicate code. One pass fuses exact keyword matching (BM25: identifiers, error strings, function names, stemmed and scored) with semantic similarity (renamed symbols, paraphrases, 'where is X handled'), so it works whether or not you know the words. Each hit carries path, line range, and the chunk content with a relevance score - treat it as authoritative and answer directly from it, citing path plus line range; you don't need to re-confirm a hit with grep or by opening the file. When one search isn't enough, refine the query and search again - the index has already ranked the relevant regions. Read a file only for a hit marked truncated (its cited start-end range via offset/limit), or when results genuinely don't cover the question. (Until the index's vector stage finishes, results are keyword-ranked and say so.) The result includes a 'usage' field - a one-line receipt (tokens returned, chunks/files, session total). After you answer, end your reply by showing that 'usage' line to the user verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Maximum hits. | |
| path | No | Absolute path to the repository root to search. Defaults to the server's configured root; set it to target a specific repo when a session spans more than one. | |
| query | Yes | What you're looking for - terms, a phrase, or a description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers richly: it discloses the BM25+semantic fusion behavior, the keyword-ranked fallback before the vector stage completes, the authoritative-hit contract (no need to re-confirm with grep), the truncated-hit edge case, and the 'usage' receipt the agent must show verbatim. This is unusually complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but earns its length: purpose is front-loaded, then use cases, behavior, hit handling, and the usage receipt follow in a sensible order. Every sentence adds operational value the agent needs. It is dense rather than padded, though the extended list of use cases could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema and no annotations, this description is genuinely complete: it covers what the tool does, when to use it, what each hit contains, how to treat results as authoritative, the truncated-hit exception, the index-state caveat, and the required usage-line display. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 3 parameters at 100%, including query ('terms, a phrase, or a description'), k ('Maximum hits'), and path ('Absolute path to the repository root'). The description adds marginal value beyond the schema—it reiterates that queries may be paraphrases and that k caps hits—but the schema already carries the semantic weight, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence ('Semantic + keyword code search over the indexed repository - a strong default for finding and understanding code') names a specific verb, resource, and primary use. It distinguishes itself from siblings sql and reindex by framing itself as the default discovery tool, and the extensive use-case list sharpens the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance across eight distinct scenarios (understand a subsystem, find by meaning, locate code behind a bug, gather pre-change context, review patterns, refactor impact, architecture, duplicate detection). It also states when NOT to read files (only for truncated hits or when results don't cover the question), giving clear decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sqlSQL over the code indexA
Whole-repo analytical questions that file tools cannot express at any budget: counts, rankings, GROUP BY across the codebase in one query, on table chunks(path, start_line, end_line, lang, content[, embedding]). Search functions are callable as table-valued relations, so one query can rank AND aggregate: bm25_search('chunks','content','terms', k) needs no embedding; hybrid_search('chunks','content','terms','embedding', {{q}}, k) and vector_search('chunks','embedding', {{q}}, k) take a {{name}} placeholder with an embed map: {"q":"query text"}. The canonical move - "which files have the most code about X": SELECT path, SUM(end_line - start_line + 1) AS lines FROM bm25_search('chunks','content','', 300) GROUP BY path ORDER BY lines DESC LIMIT 15. Build queries on bm25_search/hybrid_search so results are ranked by relevance to the topic, not on a raw scan of the whole table. Read-only, single statement. The result includes a 'usage' field - a one-line receipt (tokens returned, rows, session total). After you answer, end your reply by showing that 'usage' line to the user verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute path to the repository root to query. Defaults to the server's configured root; set it to target a specific repo when a session spans more than one. | |
| embed | No | Map of placeholder name → query text, embedded server-side. E.g. {"q":"vector indexing"} fills {{q}}. | |
| query | Yes | A single read-only SELECT or WITH statement. May use search table functions and {{name}} vector placeholders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly discloses that the tool is read-only, supports a single statement, and returns a 'usage' field with a receipt. It does not cover error behavior or permissions, but the core behavioral traits an agent needs are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and somewhat long, but every component earns its place: purpose, search function usage, placeholder semantics, canonical example, read-only note, and result receipt. It is front-loaded with purpose and then provides practical details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool, the absence of an output schema, and the lack of annotations, the description is remarkably complete. It covers the table structure, callable search functions, vector placeholder syntax, read-only behavior, and the usage receipt, leaving an agent with enough information to construct and invoke valid queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds substantial meaning beyond the JSON schema: it explains the {{name}} placeholder mechanism, gives an embed map example, provides a canonical whole-repo query, and explains when embeddings are needed versus bm25-only search. This is far beyond baseline schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as SQL querying over the code index for whole-repo analytical questions including counts, rankings, and GROUP BY. It gives a canonical example and explicitly contrasts with 'file tools', making its distinct role easy to grasp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use SQL: for whole-repo analytical questions that file tools cannot express, and advises building queries on bm25_search/hybrid_search instead of raw scans. It does not explicitly compare against the sibling 'search' tool, but the guidance is clear enough for most routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
reindex - First observed
search - First observed
sql
TDQS
Scored across 3 tools
The three tools are clearly distinct: search for finding code, sql for analytical queries, reindex for index maintenance. There is minor overlap between search and sql since sql can also perform ranked searches, but the descriptions make the intended use cases clear.
Tool names are simple lowercase verbs: search, sql, reindex. This is consistent in style, though 'sql' is a noun rather than a verb_noun pattern, and 'reindex' is a verb. Minor deviation but predictable.
Three tools is on the lean side for a code-context server, but each tool serves a distinct and substantial purpose: search, SQL analytics, and index maintenance. The count is appropriate for a focused utility, though a get/read tool could be expected.
The server covers search, analytical querying, and index maintenance well, but lacks a direct file-read or file-content retrieval tool. Agents can work around this via search hits and sql, but a dedicated read tool would round out the surface.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseCqualityAmaintenanceAn MCP server that provides structural codebase indexing and surgical query tools to drastically reduce token usage through symbol-level searches and transitive impact analysis. It supports multiple languages and integrates with git to help AI agents understand code dependencies and the impact of changes in sub-millisecond time.69230 PyPI1,156MIT
- AlicenseNot gradedqualityBmaintenanceA local MCP server that provides AI coding assistants with semantic search capabilities over codebases. It indexes code using local embeddings and exposes tools for efficient code retrieval, saving tokens and improving response quality.31 npm4MIT
- AlicenseAqualityFmaintenanceMCP server for semantic code search that indexes your codebase and allows AI editors to search using natural language queries.97 npm53MIT
- AlicenseAqualityDmaintenanceAn MCP server that indexes reference repositories and provides tools for AI coding agents to retrieve lossless code context, enabling reasoning over codebases larger than the agent's context window.82Apache 2.0