Local-first document management and semantic search for AI coding agents
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Local-first document management and semantic search for AI coding agents. No external databases, no cloud APIs, no vendor lock-in.
Unlike other MCP servers that are CLI-only, this one ships with a full web dashboard β browse, search, upload, and manage your knowledge base from your browser. Every MCP tool is also exposed as a REST API, giving AI agents a lean, schema-free interface.
.txt, .md, .pdf supportOpen your browser at http://localhost:3080 β the web UI starts automatically.
Every MCP tool is also accessible via the REST API on http://127.0.0.1:3080/api/. This is the recommended way to interact from AI agents (Claude Code, OpenCode, Gemini CLI, Cursor) because it avoids loading MCP tool schemas into the conversation context β only the response JSON enters.
A ready-to-use skill is included at skills/documentation-server/SKILL.md β it teaches your agent every endpoint with examples. Install it:
add_document or place .txt / .md / .pdf files in the uploads folder and call process_uploads.search_all_documents, or within a single document with search_documents.get_context_window to fetch neighboring chunks and give the LLM broader context.The web interface starts automatically on port 3080 when the MCP server launches. From the web UI you can:
GEMINI_API_KEY is set)All environment variables are optional. Without GEMINI_API_KEY, only the local embedding-based search tools are available.
The server registers the following tools (all validated with Zod schemas):
| Tool | Description |
|---|---|
add_document | Add a document (title, content, optional metadata) |
list_documents | List all documents with metadata and content preview |
get_document | Retrieve the full content of a document by ID |
delete_document | Remove a document, its chunks, database entries, and associated files |
| Tool | Description |
|---|---|
process_uploads | Process all files in the uploads folder (chunking + embeddings) |
get_uploads_path | Returns the absolute path to the uploads folder |
list_uploads_files | Lists files in the uploads folder with size and format info |
get_ui_url | Returns the Web UI URL (e.g. http://localhost:3080) β useful to open the dashboard or to locate the uploads folder from the browser |
| Tool | Description |
|---|---|
search_documents | Semantic vector search within a specific document |
search_all_documents | Hybrid (full-text + vector) cross-document search |
get_context_window | Returns a window of chunks around a given chunk index |
search_documents_with_ai | π€ AI-powered search using Gemini (requires GEMINI_API_KEY) |
Configure via environment variables or a .env file in the project root:
| Variable | Default | Description |
|---|---|---|
MCP_BASE_DIR | ~/.mcp-documentation-server | Base directory for data storage |
MCP_EMBEDDING_MODEL | Xenova/all-MiniLM-L6-v2 | Embedding model name |
GEMINI_API_KEY | β | Google Gemini API key (enables search_documents_with_ai) |
MCP_CACHE_ENABLED | true | Enable/disable LRU embedding cache |
START_WEB_UI | true | Set to false to disable the built-in web interface |
WEB_HOST | 127.0.0.1 | Bind address for the web UI (use 0.0.0.0 to expose on all interfaces) |
WEB_PORT | 3080 | Port for the web UI |
MCP_STREAMING_ENABLED | true | Enable streaming reads for large files |
MCP_STREAM_CHUNK_SIZE | 65536 | Streaming buffer size in bytes (64KB) |
MCP_STREAM_FILE_SIZE_LIMIT | 10485760 | Threshold to switch to streaming (10MB) |
Set via MCP_EMBEDDING_MODEL:
| Model | Dimensions | Notes |
|---|---|---|
Xenova/all-MiniLM-L6-v2 | 384 | Default β fast, good quality |
Xenova/paraphrase-multilingual-mpnet-base-v2 | 768 | Recommended β best quality, multilingual |
Models are downloaded on first use (~80β420 MB). The vector dimension is determined automatically from the provider.
β οΈ Important: Changing the embedding model requires re-adding all documents β embeddings from different models are incompatible. The Orama database is recreated automatically when the dimension changes.
git checkout -b feature/nameMIT β see LICENSE
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-documentation-server)<a href="https://allmcps.com/mcp/mcp-documentation-server"><img src="https://allmcps.com/api/badge/mcp-documentation-server?style=directory" alt="Mcp Documentation Server on AllMCPs" /></a>