ContextWeave
Code-context MCP server for coding agents. It gives an agent structural, lexical and semantic retrieval over a repository, so it can pull the definition it needs instead of reading whole files.
- Structural: tree-sitter symbols, key paths and headings for 27 languages
and data/doc formats (
cw languages). - Lexical + semantic: a SQLite index with full-text search and sqlite-vec embeddings, fused and packed into a token budget.
- Graph: callers, callees, imports, inheritance, tests and config edges.
Published on PyPI as contextweave-mcp. The import package is
contextweave and the commands are cw and contextweave.
Install
Requires Python 3.14+.
uv tool install contextweave-mcp
cw --version
Quickstart
From the root of a project:
cw init # index + wire up Claude Code (default agent)
cw status # counts, freshness, daemon and model health
cw search "where are retries handled"
cw init indexes the project and installs the agent integration: MCP server
registration, hooks, and a routing block that tells the agent when to use which
tool. Remove it again with cw uninstall (the index is kept; cw forget drops
it).
--agent |
Integration |
|---|---|
claude_code |
.mcp.json, .claude/settings.json hooks and a CLAUDE.md block (default) |
codex |
One global entry in Codex's config.toml and an AGENTS.md block |
agents_md |
.mcp.json and an AGENTS.md block, no hooks |
none |
Index only |
cw init --plugin writes a Claude Code plugin directory instead of editing
project files. --dry-run shows what would change.
To run the server by hand for any MCP client:
cw serve # MCP over stdio
MCP tools
| Tool | Use it to |
|---|---|
context_search |
Describe behaviour in words; get a budgeted pack of relevant code |
get_symbol |
Fetch one definition, key path or heading by name |
file_outline |
See one file's shape: symbols, schema key paths or headings |
search_symbols |
Find names across the project |
ast_query |
Run a raw tree-sitter query on one file |
expand |
Resolve a cw:// ref to its current bytes |
related |
Graph neighbours of a symbol or file |
Every tool is read-only. Results are terse text; summarised or omitted items
carry cw:// refs that expand resolves later, and report when the code moved
or was deleted.
Models
Semantic search, chunk annotation and query gating use local models served by
llama.cpp llama-server (embed,
annotate) and a classifier endpoint. No model weights are bundled or
downloaded by ContextWeave; you run the servers and point the config at them.
Each model has its own licence: the default embed model,
jina-code-embeddings, is CC-BY-NC (non-commercial). Swap models.embed
for a permissively licensed model if that does not fit your use.
| Slot | Default model | Endpoints (gpu / cpu) |
|---|---|---|
embed |
jinaai/jina-code-embeddings-1.5b-GGUF:Q8_0 |
:8770 / :8771 |
annotate |
unsloth/Qwen3.5-4B-GGUF:Q4_K_M |
:8772 / :8773 |
classify |
Kev-0.8B (kev-latest) |
:8765 (gpu only) |
Example servers:
llama-server -hf jinaai/jina-code-embeddings-1.5b-GGUF:Q8_0 --embeddings --pooling last --port 8770
llama-server -hf unsloth/Qwen3.5-4B-GGUF:Q4_K_M --port 8772
Models are optional. Without them the structural and lexical paths still work;
indexing reports the skipped stages as degraded and cw index fills them in
once the servers are up. cw models probe times each slot on your hardware.
Configuration
Settings are layered: built-in defaults, then
~/.config/contextweave/config.toml (honours XDG_CONFIG_HOME), then
.contextweave.toml in the project root. cw config show prints the effective
values.
[index]
include = ["src", "tests"]
ignore = ["vendor/**"]
[models.embed.gpu]
endpoint = "http://127.0.0.1:8770"
# Set launch to have the daemon start and supervise the server itself.
launch = ""
CLI
| Command | Purpose |
|---|---|
cw init / cw uninstall |
Install or remove agent integration |
cw index |
Build or refresh the index |
cw status |
Counts, freshness, daemon and model health |
cw search <query> |
Run the retrieval pipeline and print the pack |
cw projects / cw forget |
List or remove registered projects |
cw daemon start|stop|status |
Per-user daemon (Linux / WSL2) |
cw savings |
Token savings ledger |
cw config show |
Effective configuration |
cw languages |
Supported languages and their profiles |
cw cache, cw tune, cw eval |
Maintenance, score tuning, evaluation suites |
Platforms
Linux and WSL2 are the primary targets and run the shared per-user daemon. On Windows the server runs in-process; the daemon needs Unix sockets.
Development
uv sync
uv run ruff check . && uv run ruff format --check .
uv run pyright
uv run pytest # add -m "not daemon" off Linux
Licence
Mozilla Public License 2.0. Model weights used at runtime are not part of this project and are covered by their own licences.
Metadata
Release files for contextweave-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| contextweave_mcp-0.3.0.tar.gz | 257.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| contextweave_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 600.2 kB
Release files / contextweave_mcp-0.3.0.tar.gz
| Download URL | contextweave_mcp-0.3.0.tar.gz |
|---|---|
| Size | 257.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
178347c42ff705ce03663bb050aebc645aca7857d056daa006b2011519c8c316
|
|
BLAKE2b-256 checksum How to use checksums |
8ec6ed5dba04e75d7e4b2913c45f8523f8925ed5b1a12d3d1cff4825c60ac4de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / contextweave_mcp-0.3.0-py3-none-any.whl
| Download URL | contextweave_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 342.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
25175618fe140da8bee18d71124aee2322c5885f22720110beb8fc0e4ff83f08
|
|
BLAKE2b-256 checksum How to use checksums |
030299775df92d1334de44c70a60747216418a392afe846cb68476f428cbf1fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|