Model Context Protocol (MCP) server for Zoekt code search
Project description
Zoekt MCP Server
A Model Context Protocol (MCP) server that provides code search capabilities powered by Zoekt, the indexed code search engine used by Sourcegraph.
Table of Contents
- Overview
- Features
- Prerequisites
- Installation
- Configuration
- Usage with AI Tools
- MCP Tools
- Development
Overview
This MCP server integrates with Zoekt, a text search engine optimized for code repositories. Zoekt provides trigram-based indexing for searches across large codebases, making it suitable for AI assistants that need to find and understand code patterns.
Features
- Code Search: Search across codebases using Zoekt's trigram indexing
- Advanced Query Language: Support for regex patterns, file filters, language filters, and boolean operators
- Repository Discovery: Find repositories by name and explore their structure
- Content Fetching: Browse repository files and directories
- AI Integration: Designed for LLM integration with guided search prompts
Prerequisites
- Zoekt Instance: You need access to a running Zoekt search server. See the Zoekt documentation for setup instructions.
- Python 3.10+: Required for running the MCP server
- UV (optional): Modern Python package manager for easier dependency management
Installation
Using UV (recommended)
# Install dependencies
uv sync
# Run the server
uv run python src/main.py
Using pip
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install package
pip install -e .
# Run the server
python src/main.py
Using Docker
# Build the image
docker build -t zoekt-mcp .
# Run the container with default ports
docker run -p 8000:8000 -p 8080:8080 \
-e ZOEKT_API_URL=http://your-zoekt-instance \
zoekt-mcp
# Or run with custom ports
docker run -p 9000:9000 -p 9080:9080 \
-e ZOEKT_API_URL=http://your-zoekt-instance \
-e MCP_SSE_PORT=9000 \
-e MCP_STREAMABLE_HTTP_PORT=9080 \
zoekt-mcp
Configuration
Required Environment Variables
ZOEKT_API_URL: URL of your Zoekt search instance
Optional Environment Variables
MCP_SSE_PORT: SSE server port (default: 8000)MCP_STREAMABLE_HTTP_PORT: HTTP server port (default: 8080)
Usage with AI Tools
Cursor
After running the MCP server, add the following to your .cursor/mcp.json file:
{
"mcpServers": {
"zoekt": {
"url": "http://localhost:8080/zoekt/mcp/"
}
}
}
MCP Tools
This server provides three powerful tools for AI assistants:
🔍 search
Search across indexed codebases using Zoekt's advanced query syntax with support for regex, language filters, and boolean operators.
📖 search_prompt_guide
Generate a context-aware guide for constructing effective search queries based on your specific objective.
📂 fetch_content
Retrieve file contents or explore directory structures from indexed repositories.
Development
Linting and Formatting
# Check code style
uv run ruff check src/
# Format code
uv run ruff format src/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_divar_ir_zoekt_mcp-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_divar_ir_zoekt_mcp-0.1.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eccbca73d53e2cde44d83ade5596b2f8dbe7949407ef8b5470a8294cd5f489c
|
|
| MD5 |
7c51e5b63485a794381609668e1796d7
|
|
| BLAKE2b-256 |
0099a5bee71b0c2daa04214112768288154c3d7b5f18394dd880731e0f89383e
|
File details
Details for the file iflow_mcp_divar_ir_zoekt_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_divar_ir_zoekt_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96149fc70bb2ed459772759f3d3f7493e3e4c94920815015377b5b256e263f59
|
|
| MD5 |
03e8fd80f7d02004dbd397a9f3cd2e39
|
|
| BLAKE2b-256 |
256466d09ce88d71629f0bea57029a39dd91c6e7d6874ab2bb51a4163ac6b62c
|