mcpField
G
Go Docs Mcp

Go Docs Mcp

本地服务
github.com/drolosoft记忆与知识115 周前更新

关于 Go Docs Mcp

Go-Docs MCP 是基于 Go 的文档 MCP 服务,可读取和搜索多种格式的文件,并支持提取、OCR 和 URL 获取。它面向需要通过单个二进制程序访问本地文档的 MCP 客户端。

主要功能

  1. 01读取 PDF、TXT、MD、CSV、DOCX 和图像
  2. 02搜索文档文本并提取元数据
  3. 03对扫描版 PDF 和图像进行 OCR
  4. 04提取表格、图像和大纲
  5. 05从 URL 获取并读取文档
  6. 06将文件访问限制在配置目录内

适用场景

  1. 01搜索本地项目文档
  2. 02通过 OCR 读取扫描版 PDF 和图像文件
  3. 03从报告中提取表格和图像
  4. 04获取 URL 文档中的文本

MCP 相关

该 MCP 服务通过 stdio 与客户端通信,并提供列出、读取、搜索、分析和转换文档的工具;也可获取 URL 文档,并在受支持时执行 OCR。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Go-Docs MCP

Go-Docs MCP

Go go-docs-mcp MCP server GitHub Release License: MIT

安装即用。 一条命令,单个二进制文件。让 AI 阅读任意文档——PDF、文本、Markdown、DOCX 和图像。

用于多格式文档访问的 MCP 服务——通过 Model Context Protocol 读取、搜索、提取图像、进行 OCR,以及从 URL 获取文档。提供 13 个工具,支持 6 种格式,无需配置。

go install github.com/drolosoft/go-docs-mcp@latest
# That's it. Single binary, starts in milliseconds.

想深入了解 MCP 服务为何优于直接使用工具,请参阅 为何选择 MCP?


🏆 为什么选择 Go-Docs MCP?

其他所有文档 MCP 服务都只处理一种格式——PDF 服务处理 PDF,DOCX 服务处理 DOCX。要读取三种格式的文档,你需要三个独立的服务。

Go-Docs MCP其他服务
单个二进制文件,无需运行时是需要 Node/Python
一行命令 go install是npm+依赖或 pip+venv
多格式(6 种)是每个服务仅支持一种格式
全文搜索是部分支持或不支持
OCR(扫描版 PDF + 图像)是少见
图像和表格提取是部分支持
文档大纲是少见
从 URL 获取是少见
目录锁定,只读是不尽相同
智能缓存是不支持
完全离线是是

Go-Docs MCP 通过单个二进制文件读取所有文档——快速、安全,且运行时无需依赖。


📋 功能 — 13 个工具

类别工具描述
发现list_documents列出所有文档及其元数据(格式、页数、大小)
发现list_formats列出支持的格式和依赖状态
读取read_document读取任意格式文档的全文、指定页面或页面范围
读取read_url从 URL 下载并提取文本(最大 50MB)
读取get_document_summary将前 3 页作为快速概览
搜索search_document不区分大小写的全文搜索,并显示上下文
分析get_document_metadata标题、作者、日期、版本、页数
分析get_document_outline目录 / 书签
分析extract_tables将表格提取为结构化数据
分析extract_images将图像提取为 base64(每次调用最多 10 张)
OCRocr_document对扫描版或基于图像的 PDF 强制执行 OCR
OCRread_image通过 OCR 从 PNG、JPG、TIFF 中提取文本
导出convert_to_markdown将任意文档转换为整洁的 Markdown

亮点:

  • 快速 — 基于修改时间的内存缓存可避免重复提取
  • 多格式 — 通过一个服务支持 PDF、TXT、MD、CSV、DOCX 和图像
  • OCR — 扫描文档会自动回退到 tesseract
  • 安全 — 锁定目录并防止路径遍历
  • 便携 — 可在 macOS 和 Linux 上运行

📄 支持的格式

格式依赖项备注
PDFpoppler(pdftotext、pdfinfo、pdfimages、pdftoppm)完整支持——文本、图像、元数据、OCR 回退
TXT、MD、CSV无原生支持,无依赖
DOCXpandoc(可选)Word 文档提取
图像(PNG、JPG、TIFF)tesseract(可选)OCR 文本提取

📦 前置条件

  • Go 1.25+(安装)
  • poppler — PDF 支持所需
  • tesseract (可选) — 为扫描文档和图像启用 OCR
  • pandoc (可选) — 启用 DOCX 支持
# macOS
brew install poppler
brew install tesseract        # optional: OCR
brew install pandoc           # optional: DOCX

# Debian/Ubuntu
apt install poppler-utils
apt install tesseract-ocr     # optional: OCR
apt install pandoc            # optional: DOCX

# Fedora/RHEL
dnf install poppler-utils
dnf install tesseract         # optional: OCR
dnf install pandoc            # optional: DOCX

注意: TXT、MD 和 CSV 开箱即用,无需任何依赖。只安装所需的依赖即可。


🚀 安装

从源代码安装
go install github.com/drolosoft/go-docs-mcp@latest
在本地构建
git clone https://github.com/drolosoft/go-docs-mcp.git
cd go-docs-mcp
make build      # produces ./go-docs-mcp
make install    # installs to /usr/local/bin/

⚙️ 配置

Go-Docs MCP 从配置的目录读取文档。设置 DOCS_MCP_DIR 可更改目录:

变量默认值说明
DOCS_MCP_DIR~/.docs-mcp/documents/存放待提供文档的目录
PDF_MCP_DIR(旧版别名)与 DOCS_MCP_DIR 向后兼容的别名

将文档放入该目录,服务便会自动找到它们。系统会检测所有受支持的格式。


💡 使用方法

与 Claude Code 搭配使用

添加到 .claude/settings.json:

{
  "mcpServers": {
    "docs": {
      "command": "go-docs-mcp",
      "env": {
        "DOCS_MCP_DIR": "/path/to/your/documents"
      }
    }
  }
}
与 Claude Desktop 搭配使用

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):

{
  "mcpServers": {
    "docs": {
      "command": "/usr/local/bin/go-docs-mcp",
      "env": {
        "DOCS_MCP_DIR": "/path/to/your/documents"
      }
    }
  }
}
与任意 MCP 客户端搭配使用

服务通过 stdio 使用 JSON-RPC 2.0 进行通信:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | go-docs-mcp

📖 工具参考

list_documents

列出配置目录中的所有文档,并检测其格式。

参数: 无

输出示例:

[
  {
    "filename": "architecture-guide.pdf",
    "format": "pdf",
    "title": "architecture-guide",
    "pages": 42,
    "size_bytes": 1048576
  },
  {
    "filename": "notes.md",
    "format": "markdown",
    "title": "notes",
    "size_bytes": 4096
  }
]

list_formats

列出所有受支持的文档格式及其依赖状态。

参数: 无


read_document

读取文档提取出的文本内容。如果文档基于图像或为扫描件,且 pdftotext 返回空文本,则会自动改用 OCR。

参数:

名称类型必填说明
filenamestring是要读取的文档文件名
pagenumber否单页页码(从 1 开始)。省略则读取全文。
pagesstring否页码范围,例如 "1-5"、"10"、"1-3,7,10-12"。优先于 page。

输入示例:

{
  "filename": "architecture-guide.pdf",
  "pages": "1-3,10-12"
}

search_document

在文档中搜索与查询匹配的行。返回匹配项及其前后各 2 行上下文和大致页码。

参数:

名称类型必填说明
filenamestring是要搜索的文档文件名
querystring是搜索查询(不区分大小写)

输出示例:

Found 3 matches for 'microservice' in architecture-guide.pdf:

--- Match 1 (page ~2, line 45) ---
  The system is composed of several
> microservice components that communicate
  via gRPC and message queues.

get_document_summary

返回文档前 3 页的文本,作为快速摘要。

参数:

名称类型必填说明
filenamestring是要生成摘要的文档文件名

get_document_metadata

返回完整的文档元数据。

参数:

名称类型必填说明
filenamestring是要获取元数据的文档文件名

输出示例:

{
  "title": "Architecture Guide",
  "author": "Jane Doe",
  "subject": "System Design",
  "creator": "LaTeX",
  "producer": "pdfTeX",
  "creation_date": "Thu May 15 10:30:00 2025",
  "modification_date": "Thu May 15 10:30:00 2025",
  "pages": 42,
  "file_size_bytes": 1048576,
  "pdf_version": "1.5"
}

get_document_outline

提取文档大纲(目录/书签),并以结构化列表形式返回。

参数:

名称类型必填说明
filenamestring是要提取大纲的文档文件名

extract_tables

从文档中提取表格,并以结构化数据形式返回。

参数:

名称类型必填说明
filenamestring是要提取表格的文档文件名
pagenumber否要提取的特定页码。省略则提取所有页面。

extract_images

从文档中提取图像,并以 base64 编码数据的形式返回。每次调用最多返回 10 张图像。

参数:

名称类型必填描述
filenamestring是要从中提取图像的文档文件名
pagenumber否要提取的特定页码。省略则提取所有页面。

输出示例:

[
  {
    "page": 1,
    "index": 0,
    "format": "jpeg",
    "width": 800,
    "height": 600,
    "data_base64": "/9j/4AAQSkZJRg..."
  }
]

read_url

从 URL 下载文档并提取其文本内容。文件大小上限:50MB。

参数:

名称类型必填描述
urlstring是要下载并读取的文档 URL
pagesstring否要提取的页码范围,例如 "1-5"。省略则提取全文。

输入示例:

{
  "url": "https://example.com/report.pdf",
  "pages": "1-3"
}

ocr_document

使用 tesseract 对 PDF 文档强制执行 OCR。适用于扫描版/基于图像的 PDF,或 pdftotext 返回乱码的情况。需要 tesseract 和 pdftoppm。

注意:read_document 已会自动检测基于图像的 PDF,并在需要时改用 OCR。若要无论如何都强制执行 OCR,或需要指定非英语语言,请使用 ocr_document。

参数:

名称类型必填描述
filenamestring是要进行 OCR 的 PDF 文件名
pagenumber否要进行 OCR 的特定页码(从 1 开始)。省略则处理所有页面。
languagestring否Tesseract 语言代码(默认值:eng)。可使用 spa、fra 等。

输入示例:

{
  "filename": "scanned-contract.pdf",
  "page": 1,
  "language": "spa"
}

read_image

使用 OCR 从图像文件中提取文本。支持 PNG、JPG 和 TIFF。需要 tesseract。

参数:

名称类型必填描述
filenamestring是要读取的图像文件名(PNG、JPG、TIFF)
languagestring否Tesseract 语言代码(默认值:eng)。

输入示例:

{
  "filename": "receipt.png",
  "language": "eng"
}

🔒 安全

  • 目录锁定 — 只能访问 DOCS_MCP_DIR 内的文件
  • 路径遍历防护 — 文件名经过清理;拒绝 ../
  • 扩展名过滤 — 仅提供受支持的格式
  • 只读 — 不执行写入操作
  • URL 下载 — 限制为 50MB,验证 Content-Type,并立即清理临时文件

🛠️ 开发

make build     # Build the binary
make test      # Run tests with race detector
make clean     # Remove build artifacts
项目结构
go-docs-mcp/
  main.go              # MCP server setup, 12 tool registrations
  internal/
    pdf/
      reader.go        # Document extraction, caching, search, metadata, images, OCR
  Makefile             # Build targets
  go.mod               # Module definition

🦙 Glama 评分

Glama 上的 Go-Docs MCP


📄 许可证

MIT - 版权所有 2026 Drolosoft


💛 支持

请我喝杯咖啡


Drolosoft — 我们希望存在的工具

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。