Codeix MCP server
Provides AI agents with fast semantic code search to find symbols, references, and callers across codebases using a portable index format.
Also known as montanetech/codeix
- Stars
- 9
- Tools
- 7
- Downloads, 30 days
- 69
- Latest version
- 0.5.0
- Last commit
- Feb 21, 2026
- License
- Apache-2.0
What is Codeix MCP?
Codeix provides AI agents with fast semantic code search to find symbols, references, and callers across codebases using a portable index format. It exposes 7 tools, such as explore, search, get_file_symbols.
Summary generated from the project's README
About Codeix MCP server
Finding specific functions or classes in large codebases is what Codeix enables for AI coding agents. Instead of forcing an agent to spend tokens grepping through raw text, this server provides a pre-built map of your project using a portable .codeindex format. This allows agents to instantly locate symbols, signatures, and parent relationships across multiple repositories or monorepos.
Developers use this tool locally by running the codeix command to build an index and then serving it via MCP. It requires no API keys or network access, making it suitable for air-gapped environments. The server uses Rust and tree-sitter to create structured data that includes symbol kinds and line ranges. Because the index is a set of JSONL files, it can be committed to Git, allowing team members and CI runners to use the same pre-built index without re-parsing the source code.
Through seven specific tools like get_callers and search, agents can navigate complex dependency trees. The server even supports prose search to target docstrings and comments specifically, ensuring that an agent can find a TODO or an error message without being distracted by matching code patterns.
What you can do with it
- 1Locate function definitions and signaturesAn AI agent can find the exact line range and signature of a specific function to understand how to call it.
- 2Trace code dependencies and referencesA developer can ask an agent to identify every location in a codebase that calls a specific method.
- 3Search through documentation and commentsAn agent can search specifically for text within docstrings or comments to find implementation notes or TODOs.
- 4Navigate monorepos and dependenciesAn agent can query across different packages in a monorepo or even navigate through the APIs of installed dependencies.
Written from the project's README. Every use case is checked against a quote from it.
How to install Codeix MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Codeix MCP in Claude Code
$ claude mcp add codeix -- npx -y codeixInstall Codeix MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"codeix": {
"command": "npx",
"args": [
"-y",
"codeix"
]
}
}
}Install Codeix MCP in VS Code
.vscode/mcp.json
{
"servers": {
"codeix": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"codeix"
]
}
}
}Install Codeix MCP in VS Code CLI
$ code --add-mcp '{"name":"codeix","type":"stdio","command":"npx","args":["-y","codeix"]}'Install Codeix MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"codeix": {
"command": "npx",
"args": [
"-y",
"codeix"
]
}
}
}Install Codeix MCP in Codex
$ codex mcp add codeix -- npx -y codeixInstall Codeix MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.codeix] command = "npx" args = ["-y", "codeix"]
Install Codeix MCP in Gemini CLI
$ gemini mcp add -s user codeix npx -- -y codeixInstall Codeix MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"codeix": {
"command": "npx",
"args": [
"-y",
"codeix"
]
}
}
}Codeix MCP tools 7
Detected from the READMEexploresearchget_file_symbolsget_childrenget_callersget_calleesflush_index
| explore | — | |
| search | — | |
| get_file_symbols | — | |
| get_children | — | |
| get_callers | — | |
| get_callees | — | |
| flush_index | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablemontanetech/codeix is public and reachablegithub.com/montanetech/codeix ↗Pass
- Package names this repository as its sourcecodeix, codeix name montanetech/codeix as sourcenpmjs.com/package/codeix ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for codeix, codeixnpmjs.com/package/codeix/v/0.5.0#provenance ↗Pass
- Open source license (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-02-21github.com/montanetech/codeix ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packagecodeix looks like @claude-flow/codexFinding
- No critical advisory in the package or its dependencies1 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubcodeix
codeix.dev · Fast semantic code search for AI agents — find symbols, references, and callers across any codebase.
codeix # start MCP server, watch for changes
codeix build # parse source files, write .codeindex
codeix -r ~/project build # build from a specific directory
Why
AI coding agents spend most of their token budget finding code before they can work on it. They grep, read files, grep again, backtrack. On a large codebase the agent might burn thousands of tokens just locating the right function — or worse, miss it entirely and hallucinate.
Codeix gives the agent a pre-built map of your codebase. One structured query returns the symbol name, file, line range, signature, and parent — no scanning, no guessing.
What existing tools get wrong
| Problem | What happens today |
|---|---|
| No structure | grep finds text matches, not symbols. The agent can't distinguish a function definition from a comment mentioning it. |
| Slow re-parsing | Python-based indexers re-parse everything on startup. On large codebases, you wait. |
| Not shareable | Indexes are local caches — ephemeral, per-machine. A new developer or CI runner starts from scratch. |
| No composition | Monorepo with 10 packages? Dependencies with useful APIs? No way to query across boundaries. |
| Prose is invisible | TODOs, docstrings, error messages — searchable by grep but not selectively. You can't search only comments without also matching code. |
What codeix does differently
- Committed to git — the index is a
.codeindexdirectory you commit with your code. Clone the repo, the index is already there. No re-indexing. - Shareable — library authors can ship
.codeindexin their npm/PyPI/crates.io package. Consumers get instant navigation of dependencies. - Composable — the MCP server auto-discovers dependency indexes and mounts them. Query your code and your dependencies in one place.
- Structured for LLMs — symbols have kinds, signatures, parent relationships, and line ranges. The agent gets exactly what it needs in one tool call instead of piecing it together from raw text.
- Prose search —
search --scope texttargets comments, docstrings, and string literals specifically. Find TODOs, find the error message a user reported, find what a function's docstring says — without noise from code. - Fast — builds in seconds, queries in milliseconds. Rust + tree-sitter + in-memory SQLite FTS5 under the hood.
The .codeindex format
An open, portable format for structured code indexing. Plain JSONL files you commit alongside your code — git-friendly diffs, human-readable with grep and jq, no binary blobs.
.codeindex/
index.json # manifest: version, name, languages
files.jsonl # one line per source file (path, lang, hash, line count)
symbols.jsonl # one line per symbol (functions, classes, imports, with signatures)
texts.jsonl # one line per comment, docstring, string literal
Any tool that can parse JSON can consume a .codeindex. Codeix builds it using tree-sitter, and AI agents query it through MCP (Model Context Protocol).
Example — symbols.jsonl:
{"file":"src/main.py","name":"os","kind":"import","line":[1,1]}
{"file":"src/main.py","name":"Config","kind":"class","line":[22,45]}
{"file":"src/main.py","name":"Config.__init__","kind":"method","line":[23,30],"parent":"Config","sig":"def __init__(self, path: str, debug: bool = False)"}
{"file":"src/main.py","name":"main","kind":"function","line":[48,60],"sig":"def main(args: list[str]) -> int"}
Ship your index with your package
Include .codeindex in your package and every developer who depends on you gets instant navigation of your API — no setup, no re-indexing.
Works with Git repos, npm, PyPI, and crates.io.
MCP tools
Seven tools, zero setup. The agent queries immediately — no init, no config, no refresh.
| Tool | What it does |
|---|---|
explore |
Explore project structure: metadata, subprojects, files grouped by directory |
search |
Unified full-text search across symbols, files, and texts (FTS5, BM25-ranked) with scope/kind/path/project filters |
get_file_symbols |
List all symbols in a file |
get_children |
Get children of a class/module |
get_callers |
Find all places that call or reference a symbol |
get_callees |
Find all symbols that a function/method calls |
flush_index |
Flush pending index changes to disk |
Project discovery
Launch codeix from any directory. It walks downward and treats every directory containing .git/ as a separate project — each gets its own .codeindex.
Works uniformly for single repos, monorepos, sibling repos, and git submodules. No config needed.
Languages
Tree-sitter grammars, feature-gated at compile time:
| Language | Feature flag | Default | Extensions |
|---|---|---|---|
| Python | lang-python |
yes | .py .pyi .pyw |
| Rust | lang-rust |
yes | .rs |
| JavaScript | lang-javascript |
yes | .js .mjs .cjs .jsx |
| TypeScript | lang-typescript |
yes | .ts .mts .cts .tsx |
| Go | lang-go |
yes | .go |
| Java | lang-java |
yes | .java |
| C | lang-c |
yes | .c .h |
| C++ | lang-cpp |
yes | .cpp .cc .cxx .hpp .hxx |
| Ruby | lang-ruby |
yes | .rb .rake .gemspec |
| C# | lang-csharp |
yes | .cs |
| Markdown | lang-markdown |
yes | .md .markdown |
Markdown support
Markdown files are parsed for headings (both ATX # and Setext underline styles) which are indexed as section symbols with hierarchical parent-child relationships — enabling TOC extraction and document structure navigation.
Fenced code blocks are extracted as code text entries, parented to their containing section.
Embedded scripts
HTML, Vue, Svelte, and Astro files are preprocessed to extract embedded <script> blocks, which are then parsed with the JavaScript or TypeScript grammar:
| Format | Extensions | Script detection |
|---|---|---|
| HTML | .html .htm |
<script> tags, with optional lang="ts" |
| Vue | .vue |
<script> and <script setup>, with optional lang="ts" |
| Svelte | .svelte |
<script>, with optional lang="ts" |
| Astro | .astro |
--- frontmatter (always TypeScript) + optional <script> tags |
Line numbers in the index point to the original file, not the extracted script block.
Install
# npm / npx — run without installing
npx codeix
# pip / uvx — run without installing
uvx codeix
# Rust
cargo install codeix
# Homebrew
brew install codeix
# Or build from source
git clone https://github.com/montanetech/codeix.git
cd codeix
cargo build --release
All channels install the same single binary. No runtime dependencies.
Usage
# Build the index for the current project
codeix build
# Build from a specific directory (discovers all git repos below)
codeix -r ~/projects build
# Start MCP server (default command, watches for changes)
codeix
# Or explicitly
codeix serve
codeix serve --no-watch
# Serve from a specific directory
codeix -r ~/projects serve
MCP client configuration
Add to your MCP client config (e.g. Claude Desktop, Cursor):
{
"mcpServers": {
"codeix": {
"command": "codeix"
}
}
}
Design principles
- Local only — no network, no API keys, works offline and air-gapped
- Deterministic — same source always produces the same index (clean diffs)
- Composable — dependency indexes are auto-discovered and mounted at query time
- Minimal surface — 7 query tools, zero management plumbing
Architecture
See docs/architecture.md for the full set of architecture decision records.
License
MIT OR Apache-2.0
Codeix MCP questions
How do I add Codeix MCP to Claude Code?
Run claude mcp add codeix -- npx -y codeix in your terminal. Add --scope user to make it available in every project.
How do I add Codeix MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does Codeix MCP provide?
It exposes 7 tools, including explore, search, get_file_symbols, get_children, get_callers.
How does Codeix help AI coding agents?
It provides a pre-built map of the codebase, allowing agents to find symbols, signatures, and parent relationships in one tool call instead of scanning raw text.
Is the index shareable between developers?
Yes, the index is stored in a .codeindex directory that can be committed to git, allowing others to use it without re-indexing.
Does Codeix require an internet connection or API keys?
No, it is designed to be local-only, working offline and in air-gapped environments without any network or API key requirements.