Dev Tools
Gotify Commander A remote control for your servers. The first Gotify plugin that talks back.
taskrail A live board of your session's plan, right above the prompt.
Glama

Go-Docs MCP

Install and Go: your AI reads any document

macOS Linux MIT License Open Source MCP Server v1.5.0

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.

# Data flow 🤖 AI (Claude, ChatGPT, etc.) → MCP (stdio) → go-docs-mcp (~10MB) ↓ 📄 PDF (poppler) 📝 TXT/MD/CSV 🗎 Office/EPUB/HTML (pandoc) 📷 Images (tesseract OCR) ↓ Parsed → cached → AI

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.

ToolDescription
list_documentsList the documents in the configured folder, with format, pages and size
list_formatsList the supported formats and which external tools are installed
read_documentRead the full text, one page or a range of pages; long texts come in parts
read_urlDownload a document from a URL and read its text
convert_to_markdownConvert a document to Markdown
search_documentSearch within a document for text with contextual results
get_document_summaryA quick overview from the first 3 pages
get_document_metadataExtract title, author, dates, page count and format info
get_document_outlineGet the heading structure of the document
extract_tablesExtract tables as structured data
extract_imagesExtract the images of a PDF as PNG images, scaled to fit
ocr_documentForce OCR on scanned PDFs or image-based documents
read_imageRead 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)

brew install drolosoft/tap/go-docs-mcp

This also installs poppler, tesseract and pandoc.

Claude Code plugin

claude plugin marketplace add drolosoft/claude-plugins claude plugin install go-docs-mcp@drolosoft-marketplace

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.

go-docs-mcp_1.5.0.mcpb

Docker

docker run -i --rm -v /path/to/your/documents:/documents:ro ghcr.io/drolosoft/go-docs-mcp:1.5.0

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

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

go install github.com/drolosoft/go-docs-mcp@v1.5.0

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.

# Claude Code claude mcp add docs -e DOCS_MCP_DIR=/path/to/your/documents -- go-docs-mcp # Claude Desktop and other MCP clients { "mcpServers": { "docs": { "command": "go-docs-mcp", "env": { "DOCS_MCP_DIR": "/path/to/your/documents" } } } }

Settings

VariableDescription
DOCS_MCP_DIRFolder with your documents (default ~/.docs-mcp/documents/)
DOCS_MCP_OCR_LANGDefault tesseract language, like spa or fra (default eng)
DOCS_MCP_CACHE_MBUpper limit of the text cache in MB (default 256; 0 turns it off)
DOCS_MCP_DISABLE_URLSet 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.

FormatNeeds
PDFpoppler (required)
TXT, MD, CSVNothing, read natively
DOCX, XLSX, PPTX, ODT, EPUB, HTML, RTF, IPYNBpandoc (optional)
PNG, JPG, WebP, TIFF, BMPtesseract (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
Gimme a coffee 😋
Buy Me A Coffee

I build tools I wish existed, then give them away.
If one of them saved you time, a coffee keeps the next one coming.

Buy Me A Coffee QR

Ready to give your AI access to any document?

go-docs-mcp is free, open source, and installs in one command.

12 Or gimme a star 🤗