deltacontext
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@deltacontextsearch for user authentication functions and their dependencies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DeltaContext
Incremental, citation-first repository context for AI coding agents.
DeltaContext indexes a Python repository into syntax-aware chunks, retrieves relevant functions with SQLite FTS5/BM25, follows local import dependencies, and returns source-cited context within a hard character budget. Four read-only MCP tools expose the index to coding clients, including Gemini CLI. Everything runs locally; no model key, cloud database or target-code execution is required.
The engineering problem: agents need to find the right implementation, understand nearby dependencies and refresh context when files change. Sending a whole repository wastes context; returning an uncited snippet makes the result harder to verify. DeltaContext makes indexing, retrieval and context assembly explicit and inspectable.
What is implemented
Incremental indexing: SHA-256 detects changed files; only changed Python files are parsed. Deleted or newly invalid files lose stale search entries. Import edges are relinked transactionally.
Syntax-aware retrieval: functions, async functions, class headers and methods have exact line ranges; long symbols split at 80 lines. Identifier splitting makes
authorizeRequestsearchable asauthorize request.Ranked lexical search: BM25 with identifier weighting over SQLite FTS5. This is lexical retrieval, not neural semantic search.
Dependency context: selected source plus direct local imports; reverse-import BFS identifies potential affected files up to a declared depth. Cycles and traversal counts are bounded.
Budgeted evidence: context never exceeds
max_chars; every included source range is cited and tied to a content-derived repository revision. Character budgets are exact; they are not tokenizer-specific token budgets.Snapshot consistency: transactions and WAL allow readers to see a complete index revision during updates.
Agent integration: four MCP tools with structured JSON output, verified through an actual stdio client/server round trip.
flowchart LR
A[Python repository] --> B[Git-aware discovery + content hashes]
B --> C[AST chunks + local imports]
C --> D[(SQLite FTS5 + dependency edges)]
E[Question or changed file] --> D
D --> F[Ranked symbols + bounded dependency traversal]
F --> G[Cited context bundle]
G --> H[CLI or read-only MCP tools]Related MCP server: RepoPilot MCP Server
Quick start
Python 3.11+ and SQLite with FTS5 support. Git is recommended so repository ignore rules are respected.
python -m venv .venv
# Activate the environment using your shell's standard activation command.
python -m pip install -e ".[mcp,dev]"
deltacontext --db .deltacontext/demo.sqlite3 index /absolute/path/to/python-repo
deltacontext --db .deltacontext/demo.sqlite3 search "authentication credentials"
deltacontext --db .deltacontext/demo.sqlite3 context "authentication credentials" --max-chars 8000
deltacontext --db .deltacontext/demo.sqlite3 impact package/auth.py --depth 3
deltacontext --db .deltacontext/demo.sqlite3 statsRun index again after changes. An unchanged run reports parsed_files: 0. Each database is bound to one root to prevent accidentally mixing repositories. JSON includes counts, parse errors, timings and a content-derived revision. Core indexing and CLI have no third-party runtime dependencies; the MCP extra installs the official SDK.
Connect a coding agent
Start the server with an absolute database path:
python -m deltacontext --db /absolute/path/index.sqlite3 mcpExample Gemini CLI MCP configuration; replace the executable/database paths for your machine:
{
"mcpServers": {
"deltacontext": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "deltacontext", "--db", "/absolute/path/index.sqlite3", "mcp"]
}
}
}On Windows the executable is typically .venv/Scripts/python.exe. Install the package in that environment so the server can launch from any directory. The SDK's stdio protocol is tested locally; a Gemini CLI end-to-end session has not been run in the checked-in validation.
Tool | Purpose |
| Ranked symbols with source text, scores and citations |
| Size-bounded source plus direct import dependencies |
| Potential reverse-import dependents and traversal paths |
| Snapshot revision and file/chunk/edge counts |
The server cannot index arbitrary paths on an agent's request, execute source, modify repository files or run shell commands. Index updates are an explicit operator CLI action.
Tests and measurements
python -m pytest -q
git clone https://github.com/encode/starlette.git .benchmark-cache/starlette
# Check out the commit recorded in benchmarks/results/starlette.json to reproduce its corpus.
python -m benchmarks.run .benchmark-cache/starletteThe test suite covers incremental updates/deletes, invalid-source cleanup, exact citations, context-size bounds, relative imports, Git ignores, symlink escape rejection, non-execution of source, concurrent readers/writer, CLI JSON, and the real MCP transport. A symlink test skips only when the operating system disallows creating symlinks.
The Starlette measurement includes repository tests and 16 hand-authored file-relevance queries. The benchmark reports BM25 and a simple term-overlap baseline, per-query rankings, latency, no-op reindexing, and a controlled single-file mutation in a disposable copy. Results are a local engineering smoke benchmark, not a held-out retrieval benchmark or a coding-agent success claim. Raw reproducible output is in benchmarks/results/starlette.json.
Measured September 24, 2026 on Windows/Python 3.12.14, Starlette commit fada3631d80274e0f1d552490a83ca877d58ed04:
Measurement | Result |
Indexed corpus | 84 Python files, 1,609 chunks, 406 local import edges |
BM25 file hit@5 / mean reciprocal rank@5 | 13/16 (81.25%) / 0.6302 |
Term-overlap baseline hit@5 / MRR@5 | 12/16 (75%) / 0.6094 |
Search latency, 80 calls, p50 / p95 | 13.7 ms / 20.831 ms |
No-change reindex | 0 parsed files, 84 reused |
One-file mutation | 1 parsed file, 83 reused |
The small relevance set was authored for this project, so the one-query advantage over the baseline is descriptive, not statistically established. Timing includes local SQLite access and is machine/cache dependent. Full versus incremental processing still hashes eligible files and relinks imports.
Boundaries and tradeoffs
Python only. Static imports approximate dependencies; dynamic imports, monkey-patching, namespace-package ambiguity and runtime dispatch are not resolved. Search can miss conceptual matches with no shared words. Graph expansion adds direct imports, not an LLM-generated explanation. Class-level nonmethod statements after methods may not be represented as separate chunks. Oversized files (>512 KB), hidden paths, symlinks and common build/dependency directories are excluded. Git ignore rules apply when the supplied root is the exact Git root; otherwise discovery uses a bounded file policy, not a full gitignore implementation.
Indexing scans/hashes eligible files and rebuilds import links even when parsing is incremental. A parse error removes that file's stale data and is reported explicitly. The index stores source text locally; select repositories accordingly. Indexed source is untrusted data and can contain misleading instructions. Clients must treat returned text as evidence, not executable instructions. Snapshot citations may differ from a working tree edited after indexing.
Current work focuses on retrieval infrastructure and correctness. A future neural-retrieval extension could compare local code embeddings, reranking and BM25 under a fixed, independently labeled evaluation set. No embedding-model or SOTA-performance claim is made for this version.
Design references
Official MCP Python SDK — tool schemas, structured results and stdio transport.
Gemini CLI MCP integration — client connection pattern.
SQLite FTS5 — lexical indexing and BM25 ranking.
Python AST — source locations and static syntax extraction.
MIT licensed. Built by Ashutosh Ambley Manoj with AI coding assistance. Repository timestamps reflect the actual implementation date.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceIndexes Python codebases using AST and BM25, providing 8 MCP tools for code exploration and search.-
- FlicenseBqualityBmaintenanceEnables interaction with indexed Python repositories through MCP tools for repository map, symbol search, file reading, and reference lookup.4-
- FlicenseNot gradedqualityAmaintenanceProvides a local-first code indexing and search engine for coding agents via MCP, enabling precise codebase queries, symbol lookup, and freshness-aware retrieval.-
- AlicenseNot gradedqualityAmaintenanceProvides coding agents with searchable codebase context through an MCP server, enabling hybrid BM25 and semantic search, symbol graph navigation, and dependency mapping over an incrementally maintained repository index.78 PyPI84Apache 2.0