Deeprepo
概要
作者による説明(英語の原文)
Productivity-boosting RAG engine for codebases with multi-provider AI support and semantic search.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: –
- トランスポート:
- カテゴリ: 検索・AIの記憶
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- レジストリには、入力が必要なキーは載っていません。
作者はレジストリにインストール情報を載せていません。下にある作者のREADMEをご覧ください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント abhishek2432001 で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5722件のうち0%よりスターが多い
- このカテゴリのほかの5722件のうち2%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5722件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Deeprepoは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(1.0.0)がレジストリに届いたのは10 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
DeepRepo — Local RAG Engine for Codebases
A production-grade Python library for performing RAG (Retrieval Augmented Generation) on local codebases. No heavy frameworks, no external vector DBs, no cloud required.
What It Does
DeepRepo ingests a codebase and builds three things simultaneously:
| Layer | What it stores | Used for |
|---|---|---|
| Code Knowledge Graph | Classes, functions, imports, call edges (SQLite) | Symbol lookup, blast-radius analysis |
| Embeddings + FTS index | Semantic vectors + full-text search | Relevant code retrieval |
| Hierarchical Wiki | Plain-English .md files per module | AI explanations, chat context |
A smart query router classifies every question and picks the cheapest context strategy, reducing LLM token usage by 5–50x compared to naive RAG.
Features
- Zero dependencies on heavy frameworks — pure Python, SQLite-backed
- Multiple AI providers — Ollama (free/local), OpenAI, Anthropic, Gemini, HuggingFace
- CLI-first —
deeprepo ingest ./deeprepo serve/deeprepo query "…" - Wiki viewer — browsable, searchable HTML wiki with in-page chat (
deeprepo serve) - 7 focused MCP tools — drop DeepRepo into Cursor / Claude Desktop as an MCP server
- Branch isolation — per-branch SQLite databases with copy-on-write from base branches
- 3-tier retrieval — Embeddings → FTS → Graph fallback for resilient search
- Incremental ingestion — unchanged files are skipped; only deltas re-processed
Quick Start
1. Install
cd deeprepo_core
pip install -e .
For MCP server support:
pip install -e ".[mcp]"
2. Install Ollama (free, local — recommended)
# macOS
brew install ollama ollama serve # keep this running
ollama pull nomic-embed-text # embedding model ollama pull llama3.1:8b # LLM
3. Ingest your codebase
cd /path/to/your/project
deeprepo ingest .
4. Browse the wiki
deeprepo serve # opens http://localhost:8080
5. Ask questions
deeprepo query "how does authentication work?"
deeprepo query "what breaks if I change auth.py?"
CLI Reference
deeprepo <command> [options]
| Command | What it does |
|---|---|
deeprepo init | Detect provider setup, print the ingest command |
deeprepo ingest [PATH] | Scan repo → build graph + wiki + embeddings |
deeprepo wiki [PATH] | Regenerate wiki pages only (skip re-indexing) |
deeprepo serve | Launch wiki viewer + in-page chat at port 8080 |
deeprepo query "QUESTION" | Ask a question, get an AI answer |
deeprepo status | Show branch isolation & cache freshness |
Common flags (all commands)
--llm ollama|openai|anthropic|gemini|huggingface # LLM provider
--embed ollama|openai|huggingface # embedding provider (default: same as --llm) --branch-isolation # enable per-branch databases --base-branch main # seed feature-branch cache from main --wiki-dir .deeprepo/wiki # override wiki output directory
ingest flags
--chunk-size N # chars per text chunk (default: 1000)
--overlap N # overlap between chunks (default: 100) --workers N # wiki parallel workers (default: 3) --no-wiki # skip wiki generation
serve flags
--port N # HTTP port (default: 8080)
Examples
# Ollama (free, fully local)
deeprepo ingest .
OpenAI embeddings + Anthropic LLM
deeprepo ingest . --embed openai --llm anthropic
Branch isolation for a feature branch
deeprepo ingest . --branch-isolation --base-branch main
Serve wiki with chat on a custom port
deeprepo serve --llm openai --port 9000
Query with specific top-k results
deeprepo query "where is AuthService defined?" --top-k 3
Python API
from deeprepo import DeepRepoClient
Single provider (backward-compatible shorthand)
client = DeepRepoClient(provider_name="ollama")
Split providers — Anthropic LLM + OpenAI embeddings
client = DeepRepoClient( embedding_provider_name="openai", llm_provider_name="anthropic", )
Branch isolation (team workflow)
client = DeepRepoClient( provider_name="ollama", branch_isolation=True, base_branches=["main"], )
Ingest (incremental — unchanged files are skipped)
result = client.ingest("/path/to/your/code") print(f"Files: {result['files_scanned']}, Wiki pages: {result['wiki_generated']}")
Query — smart routing selects the cheapest context strategy
response = client.query("How does authentication work?") print(response['answer']) print(f"Intent: {response['intent']}, Strategy: {response['strategy']}") print(f"Sources: {response['sources']}") # list of file paths
Browse the generated wiki
print(f"Wiki at: {client.get_wiki_dir()}")
query() return shape
{
"answer": str, # LLM-generated answer "sources": list[str], # file paths used as context "intent": str, # navigate | impact | explain | debug | review | general "strategy": str, # e.g. symbol_lookup, blast_radius, wiki_plus_skeleton, … "retrieval": str, # embeddings | fts | graph "token_estimate": int, # estimated tokens consumed "history": list[dict], # conversation history (last N exchanges) }
Supported AI Providers
| Provider | Cost | Setup | Best For |
|---|---|---|---|
| Ollama | FREE, unlimited | Install app + ollama pull | Local dev, privacy, offline |
| OpenAI | Paid | OPENAI_API_KEY | Production, best quality |
| Anthropic | Paid | ANTHROPIC_API_KEY | Production, excellent reasoning |
| Gemini | Free tier | GEMINI_API_KEY | Experimentation |
| HuggingFace | Free tier | HUGGINGFACE_API_KEY | Cloud embeddings, no GPU needed |
Note: Anthropic has no embeddings API. Pair it with another provider:
`python
client = DeepRepoClient(embedding_provider_name="openai", llm_provider_name="anthropic")
`
Architecture
deeprepo_core/src/deeprepo/
├── client.py # Main facade — branch isolation, freshness, provider wiring ├── graph.py # SQLite store: graph nodes/edges, embeddings, wiki index, state ├── graph_builder.py # Tree-sitter AST parser → code knowledge graph ├── wiki.py # Hierarchical wiki engine — bottom-up LLM synthesis ├── router.py # Intent classifier + 6 context strategy selectors ├── ingestion.py # File scanner, chunker, language detection ├── interfaces.py # Abstract base classes (EmbeddingProvider, LLMProvider) ├── registry.py # @register_embedding / @register_llm decorator system ├── ui.py # Wiki viewer (HTTP server + mermaid renderer + chat) ├── mcp/ │ └── server.py # 7 MCP tools for AI assistants (Cursor, Claude Desktop) └── providers/ ├── ollama_v.py ├── openai_v.py ├── anthropic_v.py ├── gemini_v.py └── huggingface_v.py
.deeprepo/ # Generated (gitignore this) ├── default.db # SQLite: graph + embeddings + wiki index + state ├── .db # Per-branch database when branch_isolation=True └── wiki/ # Browsable .md wiki files ├── overview.md # Whole-repo narrative overview └── *.md # One page per module
Storage
Everything lives in a single SQLite file per branch — no Redis, no Postgres, no Chroma.
| Table | Contents |
|---|---|
nodes | Files, classes, functions with metadata |
edges | Import / call relationships between nodes |
embeddings | Float vectors for semantic search |
wiki_pages | Generated wiki markdown (key → content) |
wiki_fts | Full-text search index over wiki |
state | Per-file SHA-256 hashes for incremental updates |
Design Patterns
- Facade —
DeepRepoClientis the single entry point; internals are hidden - Strategy —
LLMProvider/EmbeddingProviderabstract interfaces; providers are swappable - Registry —
@register_llm("ollama")decorator auto-registers providers at import time - Bottom-up synthesis — wiki pages generated leaves-first; parent pages consume child summaries
- 3-tier fallback — Embeddings → FTS → Graph; queries work even when embeddings are cold
- Copy-on-write branching — feature branches start from base-branch cache, then delta-update
MCP Server (AI Assistant Integration)
Connect DeepRepo as an MCP server so Cursor, Claude Desktop, or any MCP-compatible AI assistant can call it directly — without ever reading raw files.
Setup
pip install deeprepo[mcp]
Cursor — create ~/.cursor/mcp.json:
{
"mcpServers": { "deeprepo": { "command": "python", "args": ["-m", "deeprepo.mcp.server"], "env": { "LLM_PROVIDER": "ollama" } } } }
Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": { "deeprepo": { "command": "deeprepo-mcp", "env": { "EMBEDDING_PROVIDER": "openai", "LLM_PROVIDER": "anthropic", "OPENAI_API_KEY": "sk-...", "ANTHROPIC_API_KEY": "sk-ant-..." } } } }
Available MCP Tools (7 tools)
| Tool | When to use | Token cost |
|---|---|---|
ingest_codebase | One-time setup — index a repo directory | — |
find_symbol | "Where is X defined / what line is X on" | ~50 tokens |
get_file_structure | "Show me the API / functions in X" | ~150 tokens |
explain_file | "How does X work / explain X / what does X do" | ~300 tokens |
find_change_impact | "What breaks if I change X" | ~300 tokens |
ask_codebase | Any open-ended question about the code | ~600–2000 tokens |
get_project_overview | "Give me an overview / what does this project do" | ~600 tokens |
Token Reduction vs Naive RAG
| Query type | Naive RAG | DeepRepo | Reduction |
|---|---|---|---|
| "where is X defined" | ~4 000 tokens | ~80 tokens | 50x |
| "what breaks if I change X" | ~4 000 tokens | ~300 tokens | 13x |
| "how does X work" | ~4 000 tokens | ~600 tokens | 7x |
| "fix the bug in X" | ~4 000 tokens | ~900 tokens | 4x |
CLAUDE.md tip
Add this to your project's CLAUDE.md so Claude automatically uses DeepRepo:
## Code navigation
Before reading any source file directly, use these MCP tools:
find_symbol(name)to locate a class or functionget_file_structure(filepath)to see a file's API without reading itexplain_file(filepath)to understand what a file doesfind_change_impact(filepath)before editing any fileask_codebase(question)for open-ended questionsget_project_overview()at the start of a new session
Only call Read/Grep on a file after the above tools have been tried.
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
LLM_PROVIDER | openai | LLM provider name |
EMBEDDING_PROVIDER | same as LLM_PROVIDER | Embedding provider name |
OPENAI_API_KEY | — | Required for OpenAI |
ANTHROPIC_API_KEY | — | Required for Anthropic |
GEMINI_API_KEY | — | Required for Gemini |
HUGGINGFACE_API_KEY / HF_TOKEN | — | Required for HuggingFace |
OLLAMA_MODEL | llama3.1:8b | Ollama LLM model name |
OLLAMA_EMBED_MODEL | nomic-embed-text | Ollama embedding model |
OLLAMA_BASE_URL | http://localhost:11434 | Ollama server URL |
OLLAMA_TIMEOUT | 300 | LLM response timeout (seconds) |
Testing
# Full end-to-end test suite (runs ingest + all checks)
python3 test_deeprepo_flow.py
Skip ingest, use cached index (faster iteration)
冒頭だけを表示しています。続きはリポジトリで読めます