
Sensegrep
io.github.Stahldavid由 GitHub 帳號 Stahldavid 發布v1.5.3更新於 Oct 24, 2026
Semantic + structural code search MCP server for AI-native development.
概覽
Sensegrep 是一個本機 MCP 伺服器,讓 AI 助理依語意、精確文字與 AST 結構搜尋程式碼庫,而不只是 grep。
- 可以做什麼
- 依概念進行語意搜尋,或執行精確字面與正規表達式搜尋,並可用符號類型、匯出、複雜度、裝飾器等結構條件篩選。將結果擴充為受 token 預算限制的脈絡包、閱讀地圖與主題分群。瀏覽本機符號圖,查詢參照、影響範圍與呼叫鏈。為儲存庫建立索引並偵測邏輯重複的程式碼。僅審查相對於 Git 基準變更的檔案。
- 適用情境
- 適合助理在程式碼庫中工作時依意圖而非關鍵字找到正確程式碼,也適用於熟悉陌生領域、尋找重構候選、偵測重複程式碼,或針對分支審查變更檔案。
- 執行需求
- 透過 stdio 在本機執行,通常使用 npx 或全域 npm 安裝,因此需要 Node.js。需要嵌入提供者:預設為本機 Ollama,也可用 Gemini、OpenAI 相容 API 或 Amazon Bedrock。提供者由 SENSEGREP_PROVIDER 選擇;僅 Gemini 需要 GEMINI_API_KEY。SENSEGREP_ROOT 指定索引目錄。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Sensegrep,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
sensegrep
semantic grep for AI coding agents
sensegrep understands your code semantically. Instead of matching text patterns, it uses AI embeddings and tree-sitter AST parsing to find code by meaning - so you can search for "authentication logic" and actually find your auth functions, even if they never contain the word "authentication".
AI agents should not read more code, they should read the right code. sensegrep combines semantic search, exact matching, and AST-aware structural retrieval to deliver smaller, more relevant context.
For agent routing, search is the default for discovery: questions about behavior, concepts, structure, or where/how something is implemented. Use literal only for a known exact string or regex, an exhaustive occurrence audit, or verification/refinement after semantic discovery. If the intent is ambiguous, start with search.
[Sensegrep time-to-value demo]
MP4 fallback: assets/time-to-value.mp4
Watch full product demo (25s): assets/time-to-value-full.mp4
Why sensegrep?
Traditional search tools (grep, ripgrep, ast-grep) match text patterns. sensegrep matches concepts:
Quickstart
Optional remote evaluation: Jev setup, evidence-aware reranking, group labels and duplicate judgments. It is off by default and works alongside local Ollama embeddings.
Claude Code Plugin (recommended)
The fastest way to get sensegrep into Claude Code — zero configuration:
This automatically sets up the MCP server and teaches Claude when and how to use sensegrep instead of grep. No manual JSON editing required.
Marketplace setup (required on first install):
After the marketplace has been added once, the explicit marketplace form also works:
Running
claude plugin install sensegrep@sensegrepon a fresh machine beforeclaude plugin marketplace add Stahldavid/sensegrepwill fail because Claude Code does not know thesensegrepmarketplace yet.
CLI
Agent-facing JSON is minified and minimal by default. Opt into --json-detail content,
--diagnostic, --json-detail full, or --pretty only when that additional payload is needed.
Schema v2 uses one card vocabulary across transports: id, file, lines, symbol,
kind, rank, and relevance. Minimal output keeps retrieval sufficiency, compact index
state, and structured warnings; budgets appear only when constrained. Physical output
budgets apply to the final serialized JSON and retain a partial evidence card when possible.
Duplicate JSON excludes source code unless --show-code is supplied. Survey and cluster
JSON default to actionable summary mode with representative IDs.
Cursor Plugin
Install from the Cursor marketplace or via CLI:
Includes the MCP server, an always-on rule to prefer sensegrep over grep, and a skill with full filter reference. Cursor plugin status: pending marketplace approval.
One-click MCP install link for Cursor:
Fallback deeplink (copy/paste if needed):
Codex Plugin
Install from the public marketplace — no manual config:
See the Codex recipe for the manual ~/.codex/config.toml setup.
MCP Server (for Codex or manual setup)
Add to your MCP configuration:
Or with npm global install first:
The MCP server provides canonical sensegrep_search, sensegrep_show, sensegrep_literal, sensegrep_context, sensegrep_survey, sensegrep_cluster, sensegrep_graph, sensegrep_index, and sensegrep_detect_duplicates tools. Legacy dotted names such as sensegrep.search remain available as compatibility aliases where supported.
Agent Skill — CLI (no MCP server)
For terminal-first agents or CI, you don't need an MCP server. Install the CLI and the
sensegrep-cli Agent Skill, which teaches the agent to run
sensegrep commands directly:
See docs/agent-skills.md for when to use the MCP tools vs the CLI skill.
VS Code Extension
Search for "Sensegrep" in the VS Code marketplace, or install from the extension page.
Features: semantic search sidebar, duplicate detection, code lens, semantic folding, and multi-root auto-indexing/watch mode.
Recipes
Copy-paste setup and practical workflows:
Full index: docs/recipes/README.md
How It Works
- Parse: Tree-sitter extracts AST nodes with full metadata (symbol type, exports, complexity, docs, decorators)
- Chunk: Code is split into semantic chunks aligned to symbol boundaries
- Embed: Each chunk is embedded using Ollama, Gemini, an OpenAI-compatible embeddings API, or Amazon Bedrock.
- Store: Embeddings + metadata are stored in LanceDB for fast vector search
- Search: Vector and lexical candidates are fused, structurally filtered, and optionally reranked
- Tree-shake: Results are collapsed to show only relevant code, hiding unrelated symbols
Supported Languages
- TypeScript / JavaScript (TSX/JSX included)
- Python (dataclasses, protocols, decorators, async generators, TypedDict, and more)
- Java (classes, interfaces, records, annotations, methods, and tree-shaken results)
- Vue (single-file components with
<script>/<script setup>semantic support) - More coming: C#, HTML (see feature branches)
Search Filters
sensegrep supports 30+ structural filters that can be combined with semantic search:
Graph nodes use canonical file/range identities. Ambiguous same-name call targets are omitted instead of expanded into speculative impact edges.
Index Operations
Diagnostic commands are strictly read-only. An incompatible index reports migrationRequired: true; rebuild it with sensegrep index migrate --no-watch. Full builds stage and validate a new Lance table before switching metadata, while prior generations are retained for concurrent readers and rollback diagnostics.
Changed files reuse vectors for content-identical chunks, even when neighboring chunks or metadata changed. Full indexes checkpoint staging tables and skip IDs already persisted after a restart. For large indexes, LanceDB ANN and scalar indexes are created automatically at 10,000 chunks; set SENSEGREP_ANN_MIN_CHUNKS=0 to disable or choose another threshold.
Language plugins
Language support can be extended without modifying core. A plugin exports a LanguageSupport object (default, language, or languages[]) with its extensions and optional chunk(content, filePath) implementation. Add project-relative ESM modules or package names to languagePlugins in sensegrep.config.json, or set SENSEGREP_LANGUAGE_PLUGINS to a comma-separated list.
Embeddings Configuration
sensegrep supports local Ollama by default plus Gemini, OpenAI-compatible APIs, and Amazon Bedrock. If no API key or provider is configured, it defaults to Ollama at http://127.0.0.1:11434 with qwen3-embedding:0.6b (1024 dimensions, 32K context). Run sensegrep selftest --root . before indexing to confirm the selected provider/model/dimension and credential/endpoint guidance without making embedding calls.
Local OpenAI-compatible embedding servers also work if they implement /v1/embeddings; set SENSEGREP_PROVIDER=openai, SENSEGREP_OPENAI_BASE_URL to the server's /v1 base URL, and SENSEGREP_EMBED_DIM to the exact returned vector dimension. For native Ollama, use SENSEGREP_PROVIDER=ollama, SENSEGREP_OLLAMA_BASE_URL if not using the default, and the exact SENSEGREP_EMBED_DIM for your Ollama model.
Global defaults via ~/.config/sensegrep/config.json:
Common environment variables:
SENSEGREP_PROVIDER(ollama,gemini,openai,bedrock)SENSEGREP_EMBED_MODELSENSEGREP_EMBED_DIMSENSEGREP_OLLAMA_BASE_URL(Ollama, defaulthttp://127.0.0.1:11434)GEMINI_API_KEY/GOOGLE_API_KEY(Gemini)SENSEGREP_OPENAI_API_KEY/FIREWORKS_API_KEY/OPENAI_API_KEY(OpenAI-compatible)SENSEGREP_OPENAI_BASE_URL(OpenAI-compatible, defaulthttps://api.fireworks.ai/inference/v1)SENSEGREP_OPENAI_BATCH_SIZE(OpenAI-compatible request batch size)SENSEGREP_OPENAI_CONCURRENCY/SENSEGREP_EMBED_CONCURRENCY(provider request concurrency)SENSEGREP_INDEX_EMBED_CONCURRENCY(concurrent index embedding batches)SENSEGREP_QUERY_CACHE(trueby default; setfalsefor controlled benchmarks or sensitive environments)SENSEGREP_QUERY_CACHE_TTL_MS/SENSEGREP_QUERY_CACHE_MAX_ENTRIES(persistent query-vector cache bounds)SENSEGREP_ADAPTIVE_HYBRID_DELAY_MS/SENSEGREP_ADAPTIVE_HYBRID_MIN_SCORE(adaptive hybrid tuning)SENSEGREP_ANN_MIN_CHUNKS(automatic ANN threshold;0disables)SENSEGREP_PROFILE(named side-by-side index profile)SENSEGREP_LANGUAGE_PLUGINS(comma-separated ESM language plugins)SENSEGREP_OPENROUTER_REFERER/SENSEGREP_OPENROUTER_TITLE(optional OpenRouter attribution headers)SENSEGREP_BEDROCK_API_KEY(Amazon Bedrock bearer API key; omit when using the AWS SDK credential chain)SENSEGREP_BEDROCK_REGION/AWS_REGION/AWS_DEFAULT_REGION(Amazon Bedrock)SENSEGREP_ROOT(MCP root directory)SENSEGREP_WATCH(MCP watcher toggle)
For the complete and official runtime variable list, see docs/mcp-setup.md.
OpenRouter Qwen embeddings use one provider request at a time by default. Benchmarking on
high-latency endpoints commonly shows that additional concurrent requests reduce throughput;
use sensegrep benchmark --concurrency 1,2,4 --samples 256 --json before overriding the default.
The benchmark varies concurrency only for the OpenAI-compatible adapter, and only
when samples span multiple HTTP batches. Native Ollama, Gemini, and Bedrock report
a sequential baseline with recommendedConcurrency: null and no environment
recommendation. This does not tune index workers or Ollama server slots.
Index plans report internal estimatedBatches separately from estimatedRequests;
for Ollama, HTTP requests use httpBatchSize (default 16), including splits inside
each index batch. Request estimates exclude retries; dry runs do not subtract
vectors that will be reused. Other providers retain approximate request estimates.
Search evidence and context
Search preserves diverse file anchors while admitting complementary symbols and bounded local helper expansion. context defaults to 12,000 estimated output tokens; use 4,000 for a compact pack or 8,000 for broader investigation. Explicit file/token limits remain respected. Weak-evidence warnings are advisory, not proof that code is absent. See search quality and budgets for behavior, limitations, and a reproducible comparison script.
Index compatibility
Each index records the embedding provider, model, dimension, distance metric, and a non-secret endpoint/configuration fingerprint. If you change provider, model, base URL, dimension, local server pooling behavior, or task-prefix strategy, rebuild the index with sensegrep index --root . --full --no-watch. Same dimension does not make embeddings interchangeable; two 768-dimensional models still produce different vector spaces.
More embedding providers and API integrations may be added in the future.
Packages
Case Studies
Reproducible qualitative examples from public repositories:
Roadmap
- ROADMAP.md
- Benchmark methodology vs
ripgrep/ast-grepis scheduled for Month 2.
Contributing
See the architecture guide for runtime and persistence design, and CONTRIBUTING.md for development setup and contribution guidelines. The VS Code extension stores provider API keys in VS Code SecretStorage; workspace settings contain only non-secret configuration.
Community
License
Configurable chunk budgets
See Token-aware chunking and local Ollama for the 8K runtime window, configurable symbol/target/maximum budgets, local tokenizer counting, token-bounded HTTP batches, and safe index migration. context --max-tokens controls output independently.
來源:README.md,提交 4663780
工具
0版本歷史
1- v1.5.3最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分