Skip to main content

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.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for contextweave-mcp 0.2.0
File Size Uploaded
contextweave_mcp-0.2.0.tar.gz 256.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for contextweave-mcp 0.2.0
File Interpreter ABI Platform
contextweave_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 597.3 kB

Release files / contextweave_mcp-0.2.0.tar.gz

Download URL contextweave_mcp-0.2.0.tar.gz
Size 256.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5d7638a2cf4a3a2979f5feb3dbee4e36a78a69eb5a762d3d4b7a0f180c0d57fc
BLAKE2b-256 checksum
How to use checksums
375f249073b15d64aaa6e4940a32884628ace0d61aca38269dc3179aab2a95a3
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.2.0-py3-none-any.whl

Download URL contextweave_mcp-0.2.0-py3-none-any.whl
Size 340.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c4722234a5efc1e47f75f1073be20ce0e0fdc909fb874209c75831b5a1afc53
BLAKE2b-256 checksum
How to use checksums
3f5101addb56abaa42e292b0c4beb165abcce5b055915ba9a47384dbcf2c97e5
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 history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page