nburns

Doc Search MCP — AI skill for Claude Code

AI community

Local MCP server that indexes PDFs, EPUBs, HTML, Markdown and text files and makes them searchable by LLM coding agents — keyword (FTS5/BM25), semantic, and hybrid search, entirely on your own machine.

How to install Doc Search MCP

This entry records only its repository, not the path inside it, so there is no exact command to give. Open nburns/doc-search-mcp and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Doc Search MCP does

Local MCP server that indexes PDFs, EPUBs, HTML, Markdown and text files and makes them searchable by LLM coding agents — keyword (FTS5/BM25), semantic, and hybrid search, entirely on your own machine.

Alternatives in AI

  • Xerj — Local-first search engine and MCP server for AI agents 12.5k ★
  • Codeseek — Rust-powered code intelligence CLI for AI coding agents 764 ★
  • Ataru — High-performance AI memory retrieval for local agent history — a Rust search core (SDK / API / JSON CLI) plus 351 ★

README

doc-search-mcp

A local MCP server that indexes PDFs, EPUBs, HTML and text files and makes them searchable via MCP tools. Designed for LLM coding agents that need to query large local document collections without uploading them to the cloud.

Features

  • Indexes PDFs (with TOC detection), EPUBs, HTML, Markdown, and plain text
  • Keyword search via FTS5/BM25 and semantic search via vector embeddings
  • Hybrid search merging both with Reciprocal Rank Fusion
  • Documents organized into named categories
  • Same content at multiple paths shares one index record (deduplication by checksum)
  • Async indexing, one job per file, with progress tracking via job IDs
  • Re-running an index is cheap and idempotent: unchanged files cost one stat
  • Startup health checks with per-file change detection
  • Accessible over a local network via SSE transport

Install

git clone git@github.com:nburns/doc-search-mcp.git
cd doc-search-mcp
uv sync
uv run doc-search-mcp

Requires Python 3.10+. All dependencies are installed by default — no extras needed.

Connect to Claude Code

Start the server, then register it:

claude mcp add --transport sse --scope user doc-search http://localhost:8080/sse

Or, to share it with everyone working in a repo, commit a `.mcp.json` at that repo's root:

{
  "mcpServers": {
    "doc-search": {
      "type": "sse",
      "url": "http://localhost:8080/sse"
    }
  }
}

Use the machine's hostname or IP instead of `localhost` if connecting from another machine.

In a new Claude Code session, run `/mcp` to confirm the server is connected and its tools are listed.

No auth or TLS. Only expose on trusted local networks.

Configuration

Config file lives at `~/.doc-search/config.toml`. All settings are optional — defaults work out of the box.

[server]
transport = "sse"           # sse | stdio
host = "0.0.0.0"
port = 8080

[storage]
backend = "sqlite"          # sqlite is the only implementation
db_path = "~/.doc-s