Go Docs Mcp について
Go-Docs MCP は、複数形式の文書を読み取り、検索する Go 製 MCP サーバーです。抽出、OCR、URL からの取得に対応し、単一バイナリでローカル文書にアクセスしたい MCP クライアント向けです。
主な機能
- 01PDF、TXT、MD、CSV、DOCX、画像の読み取り
- 02文書テキストの検索とメタデータ抽出
- 03スキャン PDF と画像の OCR
- 04表、画像、アウトラインの抽出
- 05URL からの文書取得と読み取り
- 06設定ディレクトリ内へのファイルアクセス制限
活用シーン
- 01ローカルのプロジェクト文書の検索
- 02OCR によるスキャン PDF や画像ファイルの読み取り
- 03レポートからの表と画像の抽出
- 04URL 文書からのテキスト取得
MCP 対応
MCP サーバーは stdio でクライアントと通信し、文書の一覧表示、読み取り、検索、分析、変換ツールを公開します。URL からの文書取得と、対応形式の OCR にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Go-Docs MCP
インストールしてすぐに使えます。 1つのコマンドで、単一のバイナリを実行できます。AI があらゆるドキュメント(PDF、テキスト、Markdown、DOCX、画像)を読み取ります。
Model Context Protocol を介して、複数形式のドキュメントにアクセスする MCP サーバーです。ドキュメントの読み取り、検索、画像の抽出、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 サーバーは、どれも1つの形式しか扱えません。PDF サーバーは PDF 用、DOCX サーバーは DOCX 用です。3 種類の形式を読むには、サーバーが3つ必要になります。
| Go-Docs MCP | その他 | |
|---|---|---|
| 単一バイナリ、ランタイム不要 | はい | Node/Python が必要 |
go install のワンライナー | はい | npm+依存関係、または pip+venv |
| 複数形式(6 種類) | はい | それぞれ1形式 |
| 全文検索 | はい | 一部対応、または非対応 |
| 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 として抽出(1回の呼び出しで最大10件) |
| OCR | ocr_document | スキャン画像を含む PDF に OCR を強制実行 |
| OCR | read_image | OCR で PNG、JPG、TIFF からテキストを抽出 |
| エクスポート | convert_to_markdown | あらゆるドキュメントを整形済み Markdown に変換 |
主な特長:
- 高速 — mtime ベースのインメモリキャッシュで、重複した抽出を回避します
- 複数形式に対応 — 1つのサーバーで PDF、TXT、MD、CSV、DOCX、画像を扱えます
- OCR — スキャン文書では tesseract に自動でフォールバックします
- 安全 — パストラバーサル防止機能を備え、ディレクトリ内にアクセスを制限します
- ポータブル — macOS と Linux で動作します
📄 対応形式
| 形式 | 依存関係 | 備考 |
|---|---|---|
poppler(pdftotext、pdfinfo、pdfimages、pdftoppm) | 完全対応 — テキスト、画像、メタデータ、OCR フォールバック | |
| TXT、MD、CSV | なし | ネイティブ対応、依存関係不要 |
| DOCX | pandoc(オプション) | 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 クライアントで使う
サーバーは JSON-RPC 2.0 を使って stdio 経由で通信します。
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 にフォールバックします。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 読み込む文書のファイル名 |
page | number | いいえ | 単一ページの番号(1 始まり)。全文を取得する場合は省略します。 |
pages | string | いいえ | ページ範囲。例:「1-5」、「10」、「1-3,7,10-12」。指定すると page より優先されます。 |
入力例:
{
"filename": "architecture-guide.pdf",
"pages": "1-3,10-12"
}
search_document
文書内でクエリに一致する行を検索します。一致箇所と前後 2 行のコンテキスト、およびおおよそのページ番号を返します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 検索する文書のファイル名 |
query | string | はい | 検索クエリ(大文字と小文字を区別しません) |
出力例:
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 ページのテキストを、簡易な要約として返します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 要約する文書のファイル名 |
get_document_metadata
文書のメタデータ全体を返します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | メタデータを取得する文書のファイル名 |
出力例:
{
"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
文書のアウトライン(目次/ブックマーク)を、構造化されたリストとして抽出します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | アウトラインを抽出する文書のファイル名 |
extract_tables
文書から表を構造化データとして抽出します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 表を抽出する文書のファイル名 |
page | number | いいえ | 抽出元のページを指定します。すべてのページから抽出する場合は省略します。 |
extract_images
ドキュメントから画像を抽出し、base64 エンコードされたデータとして返します。1 回の呼び出しにつき、最大 10 枚の画像を返します。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 画像を抽出するドキュメントのファイル名 |
page | number | いいえ | 抽出する特定のページ。すべてのページから抽出する場合は省略します。 |
出力例:
[
{
"page": 1,
"index": 0,
"format": "jpeg",
"width": 800,
"height": 600,
"data_base64": "/9j/4AAQSkZJRg..."
}
]
read_url
URL からドキュメントをダウンロードし、テキストコンテンツを抽出します。ファイルサイズの上限は 50MB です。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | ダウンロードして読み込むドキュメントの URL |
pages | string | いいえ | 抽出するページ範囲。例:「1-5」。全文を抽出する場合は省略します。 |
入力例:
{
"url": "https://example.com/report.pdf",
"pages": "1-3"
}
ocr_document
tesseract を使用して PDF ドキュメントの OCR を強制的に実行します。スキャンされた PDF や画像ベースの PDF、または pdftotext が文字化けしたテキストを返す場合に便利です。tesseract と pdftoppm が必要です。
注:
read_documentは画像ベースの PDF を自動検出し、OCR に切り替えます。OCR を必ず実行したい場合や、英語以外の言語を指定する必要がある場合は、ocr_documentを使用してください。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | OCR を実行する PDF のファイル名 |
page | number | いいえ | OCR を実行する特定のページ(1 始まり)。すべてのページを対象にする場合は省略します。 |
language | string | いいえ | Tesseract の言語コード(デフォルト:eng)。spa、fra などを指定します。 |
入力例:
{
"filename": "scanned-contract.pdf",
"page": 1,
"language": "spa"
}
read_image
OCR を使用して画像ファイルからテキストを抽出します。PNG、JPG、TIFF に対応しています。tesseract が必要です。
パラメーター:
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
filename | string | はい | 読み込む画像のファイル名(PNG、JPG、TIFF) |
language | string | いいえ | 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 スコア
📄 ライセンス
MIT - Copyright 2026 Drolosoft
💛 サポート
Drolosoft — あったらいいなと思うツール
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
