local-docs-mcp
by BitFigther
README.md
# local-docs-mcp
ローカルフォルダ内のドキュメントを検索・閲覧して、質問への回答を探せる MCP サーバ。
## 機能
`DOCS_ROOT` に指定したフォルダ配下の docx / pptx / xlsx / pdf / md / txt / csv / html を対象に:
| ツール | 内容 |
|---|---|
| `list_documents` | ドキュメント一覧(相対パス・サイズ・更新日時) |
| `search_documents` | 全文検索。スペース区切りでAND検索。マッチ箇所の抜粋付きで返す |
| `read_document` | 本文をテキスト(Markdown)として読み出し。大きい文書は offset で分割読み |
回答の組み立てはMCPクライアント(Claude)側が行う。サーバは検索と本文抽出のみを担当する。
Office系ファイルは [markitdown](https://github.com/microsoft/markitdown) でテキスト変換し、
抽出結果はファイル更新日時ベースでキャッシュする。
## セットアップ
[uv](https://docs.astral.sh/uv/) が必要。依存関係は初回実行時に自動で解決される。
```bash
DOCS_ROOT=/path/to/documents uv run server.py
# エラーなく起動して待機すればOK (Ctrl+C で終了)
```
## テスト用ドキュメント
`test_docs/` に、動作確認用のサンプル文書一式が入っている(架空の会社「株式会社サンプル商事」の社内文書。対応フォーマットを網羅)。
```
test_docs/
├── 規程/
│ ├── 経費精算規程.docx # 締め日は毎月5日、支払日は当月25日
│ ├── 出張旅費規程.pdf # 日当2,500円、宿泊上限12,000円
│ └── 在宅勤務ガイドライン.md # 週3日上限、在宅手当 月3,000円
├── 総務/
│ ├── 有給休暇FAQ.txt # 入社6か月で10日付与、繰越は翌年度まで
│ ├── 社内連絡先一覧.xlsx # 部署・担当・内線・メールの表
│ └── 備品購入申請ルール.csv # 金額別の承認者(10万円以上は稟議書)
├── 議事録/
│ └── 2026-07-01_全社定例会議事録.md # システム切替日、夏季休業日程
└── 資料/
└── 新製品発表会企画.pptx # 日程・会場・予算上限500万円
```
各ファイルには答え合わせ可能な事実を仕込んであるので、`DOCS_ROOT` をこのフォルダに向けて
「経費精算の締め日はいつ?」「出張の宿泊費の上限は?」「経理部の内線番号は?」などと質問すれば、
検索 → 本文読解 → 回答の一連の流れをテストできる。
```bash
DOCS_ROOT=$(pwd)/test_docs uv run server.py
```
## Claude Code への登録
```bash
claude mcp add local-docs \
-e DOCS_ROOT=/path/to/documents \
-- uv --directory /path/to/this/repo run server.py
```
登録後、Claude Code で「◯◯について規程ではどうなってる?」のように聞くと、
検索 → 該当文書の読解 → 回答、が自動で行われる。
TDQS
A4.4/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: listing all documents, reading a specific document with pagination, and full-text searching. No ambiguity or overlap.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case (list_documents, read_document, search_documents), making them predictable.
Tool Count5/5
Three tools are well-scoped for a document server, covering the essential operations without unnecessary bloat or deficiency.
Completeness5/5
The tool set provides listing, reading with pagination, and full-text search, which is complete for a read-only document retrieval system. No obvious gaps.
Maintenance
ActivityStale
ResponsivenessNo issues