Codeix

io.github.montanetech由 GitHub 账号 montanetech 发布v0.5.0更新于 Oct 24, 2026

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

已验证STDIO仅桌面知识与记忆开发者工具

概览

AI 生成的概览

Codeix 是一个本地 MCP 服务器,基于预建索引为 AI 助手提供快速的语义代码搜索,可查找符号、引用和调用者。

可以做什么
浏览项目结构、子项目以及按目录分组的文件,并对符号、文件和文本(注释、文档字符串、字符串字面量)进行带过滤和排序的搜索。列出某个文件中的全部符号,获取类或模块的子项。通过查找符号的调用者与引用,以及函数调用的符号,追踪调用关系。将待处理的索引变更写入磁盘。索引以提交到仓库的 .codeindex 目录保存,依赖索引会被自动发现。
适用场景
适合助手在大型或多仓库代码库中工作、需要定位函数、类及其调用者而无需反复 grep 和读取文件的场景。也适用于偏好可共享、随代码提交的索引而非每台机器本地缓存的 monorepo 项目。
运行要求
作为本地进程通过 stdio 运行,可用 npx codeix、uvx codeix、cargo 或 Homebrew 启动;README 称无运行时依赖。需先用 build 命令构建索引。可离线使用,无需 API 密钥或环境变量。
安装前请注意
flush_index 工具会把待处理的索引变更写入磁盘,构建时会在项目中写入 .codeindex 目录。索引设计为提交到 git,因此被索引的源码、注释和文档字符串会进入仓库历史。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Codeix,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

codeix

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

codeix                 # start MCP server, watch for changescodeix build           # parse source files, write .codeindexcodeix -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:

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

sh
# npm / npx — run without installingnpx codeix
# pip / uvx — run without installinguvx codeix
# Rustcargo install codeix
# Homebrewbrew install codeix
# Or build from sourcegit clone https://github.com/montanetech/codeix.gitcd codeixcargo build --release

All channels install the same single binary. No runtime dependencies.

Usage

sh
# Build the index for the current projectcodeix 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 explicitlycodeix servecodeix serve --no-watch
# Serve from a specific directorycodeix -r ~/projects serve

MCP client configuration

Add to your MCP client config (e.g. Claude Desktop, Cursor):

json
{  "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

来源:README.md,提交 dba0309

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分