embecode
Click on "Install 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., "@embecodesearch for function that handles user authentication"
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.
embecode
Local-first MCP server for semantic + keyword hybrid code search. Zero external services. No API keys required.
Usage
# From your project root
uvx embecode
# Or with an explicit path
uvx embecode --path /path/to/repoAdd to your MCP client config (Claude Desktop, Cursor, Cline, etc.):
{
"mcpServers": {
"embecode": {
"command": "uvx",
"args": ["embecode"]
}
}
}Related MCP server: Code Memory
Tools
Tool | Description |
| Hybrid semantic + keyword search over your codebase |
| Check indexing progress, file count, and last updated time |
How it works
Parses files into AST chunks via tree-sitter (cAST algorithm)
Embeds chunks locally with sentence-transformers (
nomic-embed-text-v1.5)Stores vectors + FTS index in a single DuckDB file at
~/.cache/embecode/Fuses BM25 and dense vector results with Reciprocal Rank Fusion
Watches for file changes via watchfiles and re-indexes incrementally
Development
# Install dependencies
uv sync
# Run tests
uv run pytest
# Lint and format
uv run ruff check src/ tests/
uv run ruff format src/ tests/Benchmarks
Two benchmark classes live in tests/test_performance.py and use pytest-benchmark:
Class | DB | What it measures |
| Mock (in-memory dict) |
|
| Real DuckDB (VSS + FTS) | Actual query latency: cosine-similarity scan, BM25, and fusion |
Run the real benchmarks:
pytest tests/test_performance.py::TestSearchBenchmarkReal -v --benchmark-only --no-cov -sThe first run builds a 200-file synthetic index into .bench_db/ (~20s). Subsequent runs reuse it and start immediately. Delete .bench_db/ to force a rebuild.
Run the mock benchmarks (no setup cost, useful for isolating Searcher logic overhead):
pytest tests/test_performance.py::TestSearchBenchmark -v --benchmark-only --no-cov -sReading the output:
Each test prints a per-phase timing breakdown from SearchTimings on the last benchmark round:
phase breakdown (last run): {'embedding_ms': 0.0, 'vector_search_ms': 78.5, 'bm25_search_ms': 6.5, 'fusion_ms': 0.01, 'total_ms': 85.0}pytest-benchmark then prints a summary table with min, max, mean, median, and stddev across all rounds.
Requires Python 3.12.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jdtzmn/embecode'
If you have feedback or need assistance with the MCP directory API, please join our Discord server