プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Code Index

作者:achreftliliバージョン 1.0.6i★ –iパソコンで動く
レジストリ名io.github.achreftlili/code-index

インストール

概要

作者による説明(英語の原文)

SQLite-backed hybrid (vector + FTS) code search index for Claude Code over MCP.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 検索・AIの記憶

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: CODE_INDEX_EMBEDDER, CODE_INDEX_EMBED_MODEL, CODE_INDEX_EMBED_DIM, CODE_INDEX_DB, CODE_INDEX_EMBED_BATCH, CODE_INDEX_EMBED_DEVICE

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "code-index": {
      "command": "uvx",
      "args": [
        "mcp-code-index"
      ],
      "env": {
        "CODE_INDEX_EMBEDDER": "your-value",
        "CODE_INDEX_EMBED_MODEL": "your-value",
        "CODE_INDEX_EMBED_DIM": "your-value",
        "CODE_INDEX_DB": "your-value",
        "CODE_INDEX_EMBED_BATCH": "your-value",
        "CODE_INDEX_EMBED_DEVICE": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add code-index --env CODE_INDEX_EMBEDDER=your-value --env CODE_INDEX_EMBED_MODEL=your-value --env CODE_INDEX_EMBED_DIM=your-value --env CODE_INDEX_DB=your-value --env CODE_INDEX_EMBED_BATCH=your-value --env CODE_INDEX_EMBED_DEVICE=your-value -- uvx mcp-code-index

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "code-index": {
      "command": "uvx",
      "args": [
        "mcp-code-index"
      ],
      "env": {
        "CODE_INDEX_EMBEDDER": "your-value",
        "CODE_INDEX_EMBED_MODEL": "your-value",
        "CODE_INDEX_EMBED_DIM": "your-value",
        "CODE_INDEX_DB": "your-value",
        "CODE_INDEX_EMBED_BATCH": "your-value",
        "CODE_INDEX_EMBED_DEVICE": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "code-index": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-code-index"
      ],
      "env": {
        "CODE_INDEX_EMBEDDER": "your-value",
        "CODE_INDEX_EMBED_MODEL": "your-value",
        "CODE_INDEX_EMBED_DIM": "your-value",
        "CODE_INDEX_DB": "your-value",
        "CODE_INDEX_EMBED_BATCH": "your-value",
        "CODE_INDEX_EMBED_DEVICE": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • CODE_INDEX_EMBEDDER env
    Embedder backend. Only 'jina' (local jina-embeddings-v2-base-code via sentence-transformers) is supported; the variable exists for future expansion.
  • CODE_INDEX_EMBED_MODEL env
    HuggingFace model id. Defaults to 'jinaai/jina-embeddings-v2-base-code'. Override only if you know the model is dim-compatible.
  • CODE_INDEX_EMBED_DIM env
    Embedding dimension. Defaults to 768 (matches jina-embeddings-v2-base-code). Must match the model's output dim.
  • CODE_INDEX_DB env
    Path to the SQLite index database. Defaults to .claude/index.db relative to the working directory.
  • CODE_INDEX_EMBED_BATCH env
    Encode batch size (default 32). Lower (e.g. 8 or 4) to reduce peak memory if the GPU OOMs on large files.
  • CODE_INDEX_EMBED_DEVICE env
    Torch device override: 'cpu', 'mps', or 'cuda'. Unset = auto-detect. Set 'cpu' to avoid Apple-Silicon MPS out-of-memory errors.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント achreftlili で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

検索・AIの記憶のほかのサーバーとの比較i

  • このカテゴリのほかの7243件のうち0%よりスターが多い
  • このカテゴリのほかの7243件のうち12%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの7243件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Code Indexは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(1.0.6)がレジストリに届いたのは6 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Context7, Codebase Memory, Exa

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Context7

作者:upstash

Up-to-date docs for AI agents

パソコンでもクラウドでも★ 64,224MIT今日更新
インストール

Codebase Memory

作者:DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

パソコンで動く★ 48,148MIT20 日前更新
インストール

Exa

作者:exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

クラウドで動く★ 5,213MIT先月更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

code-index

A local, SQLite-backed code index for Claude Code, exposed over MCP. It replaces blind Read / Grep / Glob exploration with targeted retrieval — "where is parseAuthToken defined", "what calls Indexer.reindex_all", "find the rate-limiting code" — answered in milliseconds against an offline index.

No API keys. No external services. The embedder runs locally on your machine.

How it works (30-second tour)

  1. Parse your repo with tree-sitter (Python, TypeScript/JavaScript, Go, Rust).
  2. Chunk code per symbol and expand identifiers (getUserAuthToken → get user auth token) so search matches both styles.
  3. Embed each chunk locally with jina-embeddings-v2-base-code (768-dim) via sentence-transformers.
  4. Store symbols, chunks, vectors, and call/import edges in .claude/index.db (SQLite + sqlite-vec + FTS5).
  5. Serve 14 retrieval tools + 1 admin tool over MCP (see Tools).
  6. Stay fresh via an optional PostToolUse hook that incrementally re-indexes touched files.

Tools

Retrieval
ToolPurpose
code_searchHybrid (vector + FTS) search for conceptual queries (e.g., "auth flow", "where do we parse JSON").
symbol_lookupExact-name lookup of functions / classes / methods / types. Prefer over code_search for identifiers.
file_outlineSymbols (with signatures) in a file, in source order. Use instead of Read when you only need shape.
module_outlineSymbols across a directory subtree in one call. Use instead of looping file_outline.
where_am_iGiven path + line, returns the innermost symbol and the full enclosing chain.
get_symbol_bodyFull chunk for a symbol_id from symbol_lookup / code_search / file_outline.
get_symbol_bodiesBatch version of get_symbol_body (up to 20 ids per call).
callersSymbols that CALL the given symbol. depth (1-5) expands transitively.
calleesSymbols that the given symbol CALLS. depth (1-5) expands transitively.
referencesNon-call uses (subclasses, free identifier references). Companion to callers / callees.
traceBuild a call-graph tree from an entry symbol; flat=true returns nodes/edges for cheap LLM scans.
file_importsFiles this file imports (direction=imports) or that import it (direction=imported_by).
recent_changesFiles touched in the last N git commits.
propose_renamev1: same-file rename. Returns an edit list the agent applies via its own Edit tool; refuses on clash.
Admin
Tool / opPurpose
admin op=initBuild or refresh the index. Incremental by default; force=true rebuilds from scratch.
admin op=setup_checkDiagnose hook wiring + embedder + host. Round-trip-tests the hook end-to-end.
admin op=install_hookWire the auto-reindex PostToolUse hook into .claude/settings.json. Idempotent.
admin op=statsRead-only: file counts by language, symbol totals, embed model fingerprint, last-index time.
admin op=verifyIntegrity sweep: orphan rows, parse-failure files, dangling edges.

embed_query_debug is a dev-only ranking diagnostic, hidden from list_tools unless CODE_INDEX_DEBUG=1 is set.

All tools return bounded JSON; large bodies use get_symbol_body rather than inlining whole files.

Requirements

  • Python 3.10+ with loadable SQLite extension support (required by sqlite-vec).
  • Python 3.13 has this enabled by default.
  • On 3.10–3.12, install via the python.org installer or via pyenv with PYTHON_CONFIGURE_OPTS=--enable-loadable-sqlite-extensions pyenv install 3.12.x.
  • Homebrew Python often ships without the extension hook — use one of the two methods above instead.
  • `uv` / `uvx` (install) — recommended runner. Or pip if you prefer a permanent install.
  • ~600 MB free disk for the embedding model on first init.

Quick start (Claude Code)

One command, no API keys:

claude mcp add-json -s user code-index "$(cat <<'JSON'

{ "type": "stdio", "command": "uvx", "args": ["--refresh", "--from", "mcp-code-index", "code-index-mcp"] } JSON )"

Then open Claude Code in any repo and ask:

_"Build the code index for this repo."_

Claude calls the init MCP tool, which writes .claude/index.db. From then on, ask things like _"where is parseAuthToken defined?"_ or _"what calls Indexer.reindex_all?"_ — Claude routes them through symbol_lookup / callers / code_search instead of grepping.

What `--refresh` does — fetches the latest PyPI release on every Claude

Code launch. Convenient during preview; drop it once you want to pin a

version (saves ~1s of startup).

Project-only install — drop -s user to register the server in the

current project's .claude/settings.json instead of the global ~/.claude.json.

First-run model download — the first init pulls

jina-embeddings-v2-base-code (~600 MB) into ~/.cache/huggingface and

caches it forever. Subsequent runs are fully offline. If your network

blocks Hugging Face, pre-warm the cache from a machine that has access.

Already installed without `--refresh`? Run claude mcp remove code-index

first, then re-run the command above.

Alternative: permanent install (no uvx)
pip install mcp-code-index

claude mcp add -s user code-index -- code-index-mcp

Optional: keep the index live as you edit

Without a hook, the index drifts when files change outside the agent (mv, git checkout, IDE saves) until you call init again. With one, every Edit / Write / MultiEdit Claude performs triggers an incremental reindex of the touched file.

Easiest path: ask Claude. On first use in a new project, ask _"set up the code-index"_ — Claude calls setup_check → install_hook → init. The hook command is derived from how the MCP server was launched (uvx-aware), so it uses the same Python toolchain. Hook output goes to .claude/code-index-hook.log so failures are debuggable.

Manual install — add this block to the project's .claude/settings.json under hooks.PostToolUse (the version you want depends on how you launch the server — install_hook derives the right one for you):

{

"matcher": "Edit|Write|MultiEdit", "hooks": [ { "type": "command", "command": "uvx --with 'sentence-transformers<5' --with 'numpy<2' --from mcp-code-index code-index-hook" } ] }

In other MCP-compatible agents

The server speaks standard MCP over stdio, so any client that supports MCP servers works (Cursor, Continue, Cody, Zed, etc.). Configure the client to launch uvx --refresh --from mcp-code-index code-index-mcp (or code-index-mcp after pip install mcp-code-index). Once connected, call the init tool from inside the client to bootstrap the index. Drop --refresh when you want to pin to a stable version instead of always pulling latest.

From source (development)
git clone https://github.com/achreftlili/code-index

cd code-index pip install -e . code-index init # CLI alternative to the init MCP tool code-index-mcp # starts the MCP server on stdio (for manual wiring)

Configuration

All settings are optional — the defaults work out of the box. Override them via environment variables. Inside Claude Code, set them in the env block of your code-index server entry in ~/.claude.json (then reconnect the MCP server).

Common knobs (most users only ever touch these):

VarDefaultWhen to set it
CODE_INDEX_EMBED_DEVICE_auto_Force the torch device: cpu, mps, or cuda. Set cpu on Apple Silicon if init fails with MPS out-of-memory.
CODE_INDEX_EMBED_BATCH32Encode batch size. Lower (e.g. 8 or 4) to cut peak GPU memory while staying on mps/cuda.
CODE_INDEX_DB.claude/index.dbOverride the SQLite index path (e.g. to share an index across sibling worktrees).

Advanced (rarely needed):

VarDefaultNotes
CODE_INDEX_EMBEDDERjinaOnly jina (local sentence-transformers) is supported today; the variable exists for future expansion.
CODE_INDEX_EMBED_MODELjinaai/jina-embeddings-v2-base-codeHuggingFace model id. Only override if you know the model is dim-compatible (768d).
CODE_INDEX_EMBED_DIM768Must match the embedding model's output dimension.

Troubleshooting

`init` fails with `MPS backend out of memory` on Apple Silicon. A large file produced a chunk batch bigger than your GPU's free VRAM. Quickest fix — re-run on CPU (slower but bulletproof):

"env": {

"CODE_INDEX_EMBED_DEVICE": "cpu" }

To stay on the GPU, shrink the batch instead: "CODE_INDEX_EMBED_BATCH": "8". Reconnect the MCP server (/mcp → reconnect, or restart Claude Code) so the new env takes effect. init is incremental — already-embedded files are skipped on the retry.

`init` fails with a Hugging Face network error on first run. Your network is blocking model downloads. Pre-warm the cache on a machine that has access:

huggingface-cli download jinaai/jina-embeddings-v2-base-code

then copy ~/.cache/huggingface/ to the offline machine

`sqlite3.OperationalError: not authorized` or `sqlite-vec` fails to load. Your Python build doesn't have loadable SQLite extensions. See Requirements — install via python.org or a pyenv build with PYTHON_CONFIGURE_OPTS=--enable-loadable-sqlite-extensions.

`code_search` / `symbol_lookup` returns stale paths after a refactor or branch checkout. The auto-reindex hook only fires on Claude's Edit / Write / MultiEdit. After bulk file moves outside the agent (mv, git checkout, IDE rename), re-run init (it's incremental). Or wire up the hook so the index keeps up with agent edits automatically.

Layout

src/code_index/

db.py SQLite schema, connection, sqlite-vec loading parser.py Tree-sitter wrapper, symbol + edge extraction imports.py Per-language import target → file path resolution chunker.py Per-symbol chunks, identifier expansion embedder.py Local Jina (sentence-transformers) backend indexer.py Pipeline: walk → parse → chunk → embed → write reindexer.py Per-root engine cache; one entry point for "reindex one file" retriever.py Hybrid search (vector + FTS5) with RRF watcher.py File watcher (watchdog) admin.py setup_check / install_hook / init logic (pure, no MCP state) mcp_server.py MCP wiring, shared helpers, schema fragments tool_registry.py Shared @_tool decorator + _TOOLS registry tools/ Per-domain MCP handlers (graph, paths, refactor, …) hook.py code-index-hook console script — the PostToolUse entry point cli.py init / r

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く