PluginBench
MCP Server
Maintained
Apache-2.0

Codeix MCP Server

io.github.montanetech/codeix

Fast semantic code search for AI agents — find symbols, references, and callers across any codebase.

What is the Codeix MCP server?

Codeix is an MCP server that provides fast semantic code search for AI agents. It builds a structured, git-committable index of your codebase (symbols, references, callers, and prose) using tree-sitter, enabling agents to locate and understand code in milliseconds instead of burning tokens on grep and file scanning. The index is shareable across packages and composable across monorepos and dependencies.

Codeix solves the token-waste problem in AI coding agents by pre-indexing your codebase into a structured, searchable format. Instead of agents spending thousands of tokens grepping and re-reading files, they query a lightweight `.codeindex` directory (committed to git) to instantly find function definitions, callers, references, and documentation. It supports 11 languages, auto-discovers dependency indexes, and works offline with zero setup.

How to install Codeix

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "codeix": {
      "command": "npx",
      "args": [
        "-y",
        "codeix"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • 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

Use cases

  • Quickly locate function definitions, classes, and imports across large codebases without token-heavy grep loops
  • Find all callers and references to a symbol to understand impact of changes
  • Search comments, docstrings, and error messages separately from code to locate TODOs or user-reported issues
  • Navigate dependency APIs instantly by querying shipped `.codeindex` files in npm/PyPI packages
  • Index monorepos and auto-discover sub-project boundaries without configuration

Codeix MCP server FAQ

What is Codeix?

Codeix is an MCP server that indexes your codebase into a structured, searchable format (`.codeindex`) and exposes 7 query tools for AI agents. It uses tree-sitter to parse 11 languages and stores results in git-friendly JSONL files, enabling fast semantic search without re-parsing or network calls.

Is Codeix free?

Yes, Codeix is open-source under MIT OR Apache-2.0 license. It runs locally with no API keys, subscriptions, or network requirements.

How do I install Codeix in Cursor or Claude Desktop?

Install via npm (`npm install -g codeix`), pip (`pip install codeix`), Homebrew (`brew install codeix`), or Cargo (`cargo install codeix`). Then add to your MCP client config: `{"mcpServers": {"codeix": {"command": "codeix"}}}`. Run `codeix build` in your project directory first to generate the index.

Do I need authentication or API keys?

No. Codeix is local-only, works offline, and requires no authentication or external services.

What languages does Codeix support?

Python, Rust, JavaScript, TypeScript, Go, Java, C, C++, Ruby, C#, and Markdown. It also extracts and indexes embedded scripts in HTML, Vue, Svelte, and Astro files.

Can I share the index with my team?

Yes. The `.codeindex` directory is a set of plain JSONL files you commit to git. Every developer who clones the repo gets the index immediately — no re-indexing needed. Library authors can ship `.codeindex` in npm/PyPI packages for instant API navigation.

README (reference)

Source of truth, from the repository.

codeix

<!-- mcp-name: io.github.montanetech/codeix -->

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

ProblemWhat happens today
No structuregrep finds text matches, not symbols. The agent can't distinguish a function definition from a comment mentioning it.
Slow re-parsingPython-based indexers re-parse everything on startup. On large codebases, you wait.
Not shareableIndexes are local caches — ephemeral, per-machine. A new developer or CI runner starts from scratch.
No compositionMonorepo with 10 packages? Dependencies with useful APIs? No way to query across boundaries.
Prose is invisibleTODOs, 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 .codeindex directory you commit with your code. Clone the repo, the index is already there. No re-indexing.
  • Shareable — library authors can ship .codeindex in 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 text targets 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.

ToolWhat it does
exploreExplore project structure: metadata, subprojects, files grouped by directory
searchUnified full-text search across symbols, files, and texts (FTS5, BM25-ranked) with scope/kind/path/project filters
get_file_symbolsList all symbols in a file
get_childrenGet children of a class/module
get_callersFind all places that call or reference a symbol
get_calleesFind all symbols that a function/method calls
flush_indexFlush 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:

LanguageFeature flagDefaultExtensions
Pythonlang-pythonyes.py .pyi .pyw
Rustlang-rustyes.rs
JavaScriptlang-javascriptyes.js .mjs .cjs .jsx
TypeScriptlang-typescriptyes.ts .mts .cts .tsx
Golang-goyes.go
Javalang-javayes.java
Clang-cyes.c .h
C++lang-cppyes.cpp .cc .cxx .hpp .hxx
Rubylang-rubyyes.rb .rake .gemspec
C#lang-csharpyes.cs
Markdownlang-markdownyes.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:

FormatExtensionsScript 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

Related MCP servers

Data + AI observability — monitor and troubleshoot production-grade agents and the context they use.

Model Context Protocol server for todo.vu task management and time tracking.

전북대학교 학생의 공지, 과제, 마감, 제출 상태와 수업자료를 읽기 전용으로 정리하는 Windows/macOS 로컬 MCP 서버입니다.

View repository →
HAHarnessScope logo

HarnessScope

Maintained

Turn-level governance observability for Claude Code transcripts. Local-first, no LLM inside.

1
Python
Apache-2.0
View repository →

Discovers and manages installed games on Windows from Steam, Epic, GOG, Xbox, and other platforms.

0
C#
MIT
View repository →

Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.

1
TypeScript
View repository →