Contextweaver
Overview
Description from the maker (original English)
Semantic code retrieval engine with hybrid search, context expansion, and 40+ language support.
PopNx MCP’s three pillars
These three are never merged into one score: opinions, measurements and popularity are different things.
- User voiceiNo reviews yetReviews open together with accounts in a later step
- Our basic checksi2 of 2 passedChecked from public information; code not scanned yet
- UsageiVery new↓ 44/wk · ★ 2
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs on your computer
- Transport: stdio
- Category: Search & AI memory
Install
Pick the AI app you use, then copy the settings.
Before you install
- Basic checks: 2 of 2 passed
- Runs on your computer with your user’s permissions (files, network, apps).
- The registry lists no key to fill in.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"contextweaver": {
"command": "npx",
"args": [
"-y",
"@chiway/contextweaver"
]
}
}
}Run this in your terminal
claude mcp add contextweaver -- npx -y @chiway/contextweaverOr copy the settings yourself
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"contextweaver": {
"command": "npx",
"args": [
"-y",
"@chiway/contextweaver"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Or copy the settings yourself
Paste into .vscode/mcp.json in your project
{
"servers": {
"contextweaver": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@chiway/contextweaver"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Which apps can use it
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
What it can do
Runs on your computer; the tool list appears in your AI app after you install it.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026
- ✓ Pass
Maker matches the repo
The registry name was verified with the GitHub account wchiway, which owns the repo
- ✓ Pass
Still maintained
Code last changed 5 months ago
- … Not checked yet
Has a licence
We have not read this repo from GitHub yet
- – Not applicable
Endpoint responds
This one runs on your computer; there is no internet endpoint
- – Not applicable
Sign-in with OAuth
Runs on your computer and uses local settings instead
- … Not checked yet
No hidden instructions in tool descriptions
Runs on your computer; we can only read tool lists from internet endpoints
Compared with others in Search & AI memoryi
- More stars than 80% of the other 5857 servers in this category
- Published to the registry more recently than 17% of the other 5857 servers in this category
- Basic checks equal to or better than 100% of the other 5857 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is Contextweaver safe?
It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
The registry does not list a required key, though some servers ask you to sign in on first use.
Does it run on my computer or in the cloud?
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
Is it still maintained?
The GitHub repo last changed 5 months ago, and the latest version (1.5.4) reached the registry 5 months ago.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
What can I use instead?
In the same category: Ruflo, Context7, Metabase
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
ContextWeaver
🧵 A codebase context engine woven for AI agents
Semantic Code Retrieval for AI Agents — Hybrid Search • Graph Expansion • Token-Aware Packing
English · 简体中文
ContextWeaver is a semantic retrieval engine purpose-built for AI coding assistants. It combines hybrid search (vector + lexical), intelligent context expansion, and token-aware packing to deliver precise, relevant, and context-complete code snippets to LLMs.
✨ Core Features
🔍 Hybrid Retrieval Engine
- Vector Retrieval: deep semantic understanding via similarity
- Lexical Retrieval (FTS): exact matching for function names, class names, and other technical terms
- RRF Fusion (Reciprocal Rank Fusion): intelligently merges multiple recall channels
🧠 AST Semantic Chunking
- Tree-sitter parsing: supports TypeScript, JavaScript, Python, Go, Java, Rust, C, C++, C#, and more
- Dual-Text strategy:
displayCodefor presentation,vectorTextfor embedding - Gap-Aware merging: handles code gaps intelligently while preserving semantic integrity
- Breadcrumb injection: vector text carries hierarchical paths to boost recall
- UTF-16 character-domain normalization: offsets are unified via
SourceAdapter.toCharOffsetbefore writing metadata, preventing multi-byte character slicing errors (v1.4.0+)
📊 Three-Stage Context Expansion
- E1 Neighbor expansion: adjacent chunks within the same file, preserving block completeness
- E2 Breadcrumb completion: sibling methods under the same class/function for structural understanding
- E3 Import resolution: cross-file dependency tracking (configurable toggle)
🎯 Smart TopK Cutoff
- Anchor & Floor: dynamic threshold plus an absolute floor as dual safeguards
- Delta Guard: prevents misjudgment in Top1-outlier scenarios
- Safe Harbor: the first N results only check the floor, guaranteeing baseline recall
🔌 Native MCP Support
- MCP Server mode: launch a Model Context Protocol server with one command
- Multi-tool granularity (v1.5.0+): beyond core semantic retrieval, adds dedicated tools for structure browsing, symbol references, symbol definitions, and statistics
- Intent/term separation: an LLM-friendly API design
- Auto-indexing: the first query triggers indexing automatically; incremental updates are transparent
⚡ Query Cache & File Watching (v1.5.0+)
- Query cache (QueryCache): in-process per-project LRU cache (50 entries by default); a hit skips the entire vector recall / rerank / expansion pipeline
- Automatic cache invalidation: the cache key is composed of
normalized query + projectId + index version + search-config fingerprint, so it invalidates automatically after an index update or config change — stale results are never returned - Watch mode:
contextweaver watchwatches the filesystem and triggers incremental indexing automatically, with debouncing (500ms by default) and scan de-duplication (no concurrent scans)
📈 Statistics & Observability (v1.5.0+)
- Three metric groups: indexing process, search quality/behavior, health/consistency
- Dual exits:
contextweaver statsCLI (with--json) plus the MCPstatstool - Consistency diagnostics: automatically detects abnormal migration state,
pending_marksbacklog, missing vector rows, and more — with suggested fixes
🛡️ Crash-Safe Data Architecture (v1.4.0+)
- Single source of truth for content: LanceDB stores only vectors and locating metadata; content is read back from
files.content, reducing index size by 30–50% - Cross-store transactional compensation: three-stage write LanceDB → FTS+outbox → SQLite mark, with automatic rollback or replay on any failure
- Migration state machine:
pending/done/abortedpersisted, auto-rebuilt on crash recovery - Cross-process mutual exclusion: an advisory lock prevents the MCP server and CLI from triggering LanceDB migration concurrently
- chunk_id de-duplication: pre-delete before write to avoid duplicate rows on retry
📦 Quick Start
Requirements
- Node.js >= 20
- pnpm (recommended) or npm
Installation
# Global install
npm install -g @chiway/contextweaver
Or with pnpm
pnpm add -g @chiway/contextweaver
Initialize Configuration
# Create the config file (~/.contextweaver/.env)
contextweaver init
Or the short alias
cw init
Edit ~/.contextweaver/.env and fill in your API keys:
# Embedding API config (required)
EMBEDDINGS_API_KEY=your-api-key-here EMBEDDINGS_BASE_URL=https://api.siliconflow.cn/v1/embeddings EMBEDDINGS_MODEL=BAAI/bge-m3 EMBEDDINGS_MAX_CONCURRENCY=10 EMBEDDINGS_DIMENSIONS=1024
Reranker config (required)
RERANK_API_KEY=your-api-key-here RERANK_BASE_URL=https://api.siliconflow.cn/v1/rerank RERANK_MODEL=BAAI/bge-reranker-v2-m3 RERANK_TOP_N=20
Search parameters (optional, override built-in defaults)
CW_SEARCH_WVEC=0.6 CW_SEARCH_WLEX=0.4 CW_SEARCH_RERANK_TOP_N=10 CW_SEARCH_MAX_TOTAL_CHARS=48000 CW_SEARCH_VECTOR_TOP_K=80 CW_SEARCH_SMART_MAX_K=8 CW_SEARCH_IMPORT_FILES_PER_SEED=3
Ignore patterns (optional, comma-separated)
IGNORE_PATTERNS=.venv,node_modules
Index a Codebase
# Run from the codebase root
contextweaver index
Specify a path
contextweaver index /path/to/your/project
Force a full re-index
contextweaver index --force
Watch Mode (v1.5.0+)
# Watch for file changes and auto-index incrementally (Ctrl+C to stop)
contextweaver watch
Specify a path and debounce window (ms)
contextweaver watch /path/to/project --debounce 800
watch runs one full incremental scan on startup, then listens to filesystem events; changes trigger a de-duplicated scan within the debounce window, and paths excluded by ignore rules never trigger a scan.
Local Search
# Semantic search
cw search --information-request "How is the user authentication flow implemented?"
With exact terms
cw search --information-request "Database connection logic" --technical-terms "DatabasePool,Connection"
Structure Browsing & Symbol Lookup (v1.5.0+)
The following commands are CLI mirrors of MCP tools, with zero Embedding API cost:
# List indexed files (supports glob / language / count filters)
contextweaver list-files --glob "src/**/*.ts" --language typescript --max-results 100
Look up a symbol definition
contextweaver definition SearchService --hint-path src/search
Look up symbol references
contextweaver references handleStats --exclude-definition
Statistics (v1.5.0+)
# Human-readable stats report
contextweaver stats
JSON output (for scripting)
contextweaver stats --json
Specify a project path
contextweaver stats --path /path/to/project
Start the MCP Server
# Launch the MCP server (for use by Claude and other AI assistants)
contextweaver mcp
Index Management (v1.4.0+)
# Show LanceDB migration state
contextweaver migrate
Clear the aborted state: wipe LanceDB and trigger a full rebuild
Triggered when: the Indexer refuses to write after sampling validation fails;
run this, then index again.
contextweaver migrate --reset
Specify a project path
contextweaver migrate --path /path/to/project
🔧 MCP Integration
Claude Desktop Configuration
Add the following to your Claude Desktop config file:
{
"mcpServers": { "contextweaver": { "command": "contextweaver", "args": ["mcp"] } } }
MCP Tools Overview (v1.5.0+)
ContextWeaver exposes 5 MCP tools, following a layered design of "semantic retrieval first, structure browsing second":
| Tool | Purpose | Embedding cost |
|---|---|---|
codebase-retrieval | Primary tool: hybrid semantic + exact-match retrieval | Yes |
list-files | List indexed file structure (path/language/size) | No |
find-references | Find heuristic text references to a symbol | No |
get-symbol-definition | Find likely definition blocks for a symbol | No |
stats | Index/search/health statistics | No |
codebase-retrieval Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
repo_path | string | ✅ | Absolute path to the repository root |
information_request | string | ✅ | The semantic intent in natural language |
technical_terms | string[] | ❌ | Exact technical terms (class/function names, etc.) |
mode | string | ❌ | Retrieval profile: quick, balanced, or deep |
include_globs | string[] | ❌ | File glob allowlist applied after retrieval |
exclude_globs | string[] | ❌ | File glob denylist applied after retrieval |
language | string[] | ❌ | Language allowlist applied after retrieval |
max_total_chars | number | ❌ | Per-call output budget in characters |
max_files | number | ❌ | Maximum number of files returned after packing |
max_segments_per_file | number | ❌ | Maximum non-contiguous segments per file |
return_debug | boolean | ❌ | Include debug metadata in structured output |
low_confidence_behavior | string | ❌ | Low-confidence handling: return_top1, return_empty, or return_with_warning |
output_format | string | ❌ | Response format: markdown, json, or both |
list-files Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
repo_path | string | ✅ | Absolute path to the repository root |
glob | string | ❌ | Glob pattern to filter paths |
language | string | ❌ | Language filter (matched against files.language) |
max_results | number | ❌ | Max files to return (default 200) |
find-references Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
repo_path | string | ✅ | Absolute path to the repository root |
symbol | string | ✅ | Exact symbol name |
exclude_definition | boolean | ❌ | Exclude chunks whose breadcrumb tail matches the symbol name |
max_results | number | ❌ | Max references to return (default 50) |
get-symbol-definition Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
repo_path | string | ✅ | Absolute path to the repository root |
symbol | string | ✅ | Exact symbol name to resolve |
| hint_path | string | ❌ | Preferred