Go-Docs MCP
Install and Go: your AI reads any document
The Problem
Every document MCP server needs Node.js or Python. They handle one format only, and none of them do OCR, table extraction or image reading.
The Solution
Install it with one command and you are done. One binary, 13 tools: PDF, Office files, Markdown, images and OCR, with no runtime and no config.
Why Go-Docs MCP?
Most MCP servers are written in Node or Python. People who run lean infrastructure (self-hosters, DevOps, terminal users) often prefer compiled binaries to interpreted runtimes. With Homebrew or Go already on your machine, this is the shortest way to an AI that reads your documents.
| Node / TS MCPs | Python MCPs | go-docs-mcp | |
|---|---|---|---|
| ⚡ | Requires Node.js | Requires Python + pip | Single binary, no runtime |
| 📄 | Single format only | Single format only | PDF + Office + EPUB + HTML + images |
| 👁 | No OCR | No OCR | OCR for scanned PDFs + images |
| 📊 | Limited tables | Basic tables | Tables + outline + images + caching |
| 🔒 | Security varies | Security varies | Read-only, directory-locked |
Features
Read Any Document
Full text from PDF, TXT, MD, CSV, Office files (DOCX, XLSX, PPTX, ODT), EPUB, HTML, RTF, Jupyter notebooks and images (PNG, JPG, WebP, TIFF, BMP), all from one server. Ask for the whole document, one page or a range of pages.
Search
Full-text search inside a document, with the text around each match. Find what you need across hundreds of pages.
Image Extraction
Pulls the images out of a PDF and returns them as real PNG images, so clients that show images display them. Large images are scaled down to 1600 px, and one answer stays under 8 MB.
URL Fetch
Downloads a document from a URL and reads it like a local file. The download has a timeout, and hosts on private or loopback addresses are refused. Set DOCS_MCP_DISABLE_URL=1 to remove the tool.
Security
Everything runs on your machine; no document goes to a cloud API. Documents are confined to one folder, and a symlink that points out of it is refused. Every tool is announced as read-only, and every external process has a timeout.
Fast Caching
Extracted text is kept in memory, so a second read of the same document is almost instant. The cache has an upper limit, set with DOCS_MCP_CACHE_MB.
OCR
Reads scanned PDFs and image files (PNG, JPG, WebP, TIFF, BMP) with tesseract. Image-only documents fall back to OCR on their own, and you can force it when needed. Set the default language with DOCS_MCP_OCR_LANG.
Paged Output
The text tools take offset and max_chars (50,000 characters by default), so a very long document arrives in parts instead of filling the model's context.
Resources and Structured Output
Every document is also a docs://filename resource, so you can @-mention it in Claude Code. The tools that return JSON also declare its shape (outputSchema).
Architecture
go-docs-mcp is a single Go binary that talks to your AI client over stdio with the Model Context Protocol. The same binary answers both generations of the protocol: the initialize handshake of older clients and the stateless 2026-07-28 revision that Claude Code already uses. It calls poppler, tesseract and pandoc for the formats that need them.
13 tools in 5 categories: Discovery (2), Reading (3), Search (1), Analysis (5), OCR (2).
13 MCP Tools
Tools to read, search and extract content from documents in many formats.
| Tool | Description |
|---|---|
list_documents | List the documents in the configured folder, with format, pages and size |
list_formats | List the supported formats and which external tools are installed |
read_document | Read the full text, one page or a range of pages; long texts come in parts |
read_url | Download a document from a URL and read its text |
convert_to_markdown | Convert a document to Markdown |
search_document | Search within a document for text with contextual results |
get_document_summary | A quick overview from the first 3 pages |
get_document_metadata | Extract title, author, dates, page count and format info |
get_document_outline | Get the heading structure of the document |
extract_tables | Extract tables as structured data |
extract_images | Extract the images of a PDF as PNG images, scaled to fit |
ocr_document | Force OCR on scanned PDFs or image-based documents |
read_image | Read the text of an image file with OCR (PNG, JPG, WebP, TIFF, BMP) |
Quick Start
Pick one way to install, then register the server in your AI client.
Homebrew (macOS and Linux)
This also installs poppler, tesseract and pandoc.
Claude Code plugin
The plugin registers the server in Claude Code and reads documents from ~/.docs-mcp/documents. It does not include the binary: install that first with Homebrew, a download or go install.
go-docs-mcp is listed in the official MCP Registry as io.github.drolosoft/go-docs-mcp, so clients that read the registry can find it by that name.
Claude Desktop (.mcpb)
One file for macOS, Windows and Linux. Download it and open it, or use Settings › Extensions › Install extension; Claude Desktop asks for your documents folder. poppler, tesseract and pandoc still come from your system: on macOS, brew install poppler tesseract pandoc.
Docker
Nothing else to install: the image brings poppler, tesseract with English and Spanish, and pandoc, for linux/amd64 and linux/arm64. Your folder is mounted read-only on /documents. Add -e DOCS_MCP_OCR_LANG=spa to read Spanish scans by default.
Downloads
| System | File | Checksum |
|---|---|---|
| macOS, Apple silicon | go-docs-mcp_1.5.0_darwin_arm64.tar.gz | checksums.txt |
| macOS, Intel | go-docs-mcp_1.5.0_darwin_amd64.tar.gz | checksums.txt |
| Linux, amd64 | go-docs-mcp_1.5.0_linux_amd64.tar.gz | checksums.txt |
| Linux, arm64 | go-docs-mcp_1.5.0_linux_arm64.tar.gz | checksums.txt |
| Windows, amd64 | go-docs-mcp_1.5.0_windows_amd64.zip | checksums.txt |
One checksums.txt covers every file: sha256sum -c checksums.txt --ignore-missing. Put go-docs-mcp in a folder on your PATH and install poppler yourself (and tesseract or pandoc if you need them). Earlier versions are on the releases page.
From source
Needs Go 1.27 or newer.
Register the server
Skip this step if you installed the Claude Code plugin. Otherwise add the server to your client, point DOCS_MCP_DIR at your documents folder and restart the client.
Settings
| Variable | Description |
|---|---|
DOCS_MCP_DIR | Folder with your documents (default ~/.docs-mcp/documents/) |
DOCS_MCP_OCR_LANG | Default tesseract language, like spa or fra (default eng) |
DOCS_MCP_CACHE_MB | Upper limit of the text cache in MB (default 256; 0 turns it off) |
DOCS_MCP_DISABLE_URL | Set to 1 to remove the read_url tool |
Requirements
poppler is needed for PDF. tesseract and pandoc are optional: install them only for the formats you use. Homebrew installs all three.
| Format | Needs |
|---|---|
| poppler (required) | |
| TXT, MD, CSV | Nothing, read natively |
| DOCX, XLSX, PPTX, ODT, EPUB, HTML, RTF, IPYNB | pandoc (optional) |
| PNG, JPG, WebP, TIFF, BMP | tesseract (optional, OCR) |
Go 1.27 or newer is needed only to build from source with go install.
Built With
A single Go binary with optional dependencies per format.
- Go 1.27+: single binary, cross-platform builds
- MCP SDK (Go): Model Context Protocol over stdio
- poppler-utils: PDF text, images and metadata
- tesseract + pandoc: OCR for images and scans; Office, EPUB, HTML, RTF and notebooks
Ready to give your AI access to any document?
go-docs-mcp is free, open source, and installs in one command.