Metadata-Version: 2.4
Name: iflow-mcp_divar-ir-zoekt-mcp
Version: 0.1.0
Summary: Model Context Protocol (MCP) server for Zoekt code search
Author-email: Erfan Mirshams <erfan.mirshams@gmail.com>
License-Expression: MIT
Keywords: mcp,zoekt,code-search,ai,llm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastmcp==2.12.0
Requires-Dist: mcp-server==0.1.4
Requires-Dist: mcp[cli]==1.13.1
Requires-Dist: pydantic==2.11.7
Requires-Dist: pydantic-ai[logfire]==1.6.0
Requires-Dist: requests==2.32.4
Requires-Dist: jinja2==3.1.6
Requires-Dist: pyyaml==6.0.2
Requires-Dist: python-dotenv==1.1.1
Provides-Extra: dev
Requires-Dist: ruff>=0.8.3; extra == "dev"
Dynamic: license-file

# Zoekt MCP Server

A Model Context Protocol (MCP) server that provides code search capabilities powered by [Zoekt](https://github.com/sourcegraph/zoekt), the indexed code search engine used by Sourcegraph.

## Table of Contents

- [Overview](#overview)
- [Features](#features)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
  - [Using UV (recommended)](#using-uv-recommended)
  - [Using pip](#using-pip)
  - [Using Docker](#using-docker)
- [Configuration](#configuration)
  - [Required Environment Variables](#required-environment-variables)
  - [Optional Environment Variables](#optional-environment-variables)
- [Usage with AI Tools](#usage-with-ai-tools)
  - [Cursor](#cursor)
- [MCP Tools](#mcp-tools)
  - [search](#search)
  - [search_prompt_guide](#search_prompt_guide)
  - [fetch_content](#fetch_content)
- [Development](#development)
  - [Linting and Formatting](#linting-and-formatting)

## 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](https://github.com/sourcegraph/zoekt#installation) 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)

```bash
# Install dependencies
uv sync

# Run the server
uv run python src/main.py
```

### Using pip

```bash
# 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

```bash
# 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:

```json
{
  "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

```bash
# Check code style
uv run ruff check src/

# Format code
uv run ruff format src/
```

