Skip to main content
Glama

MCP Document Server

効率的なドキュメント配信のためのModel Context Protocol (MCP) サーバー

プロジェクトのドキュメントをAIエージェント(Claude等)に必要に応じて提供し、トークン使用量を最適化します。

🎯 目的

  • プロジェクトのドキュメントを効率的にAIエージェントに配信

  • 必要な時だけコンテキストを読み込み、トークン使用量を削減

  • チーム内で簡単に共有できる構成

📋 機能

MCPツール(AIが使用可能な機能)

  1. get_document - 指定されたドキュメントを取得

  2. list_documents - 利用可能なドキュメントのリストを表示

  3. search_in_document - ドキュメント内でキーワードを検索

セキュリティ機能

  • パストラバーサル攻撃対策

  • ファイルサイズ制限

  • 入力バリデーション

  • 安全なエンコーディング処理

🚀 クイックスタート

必要要件

  • Python 3.10以上

  • Poetry(推奨)または pip

  • Docker(オプション、チーム配布用)

インストール

1. Poetry を使用(推奨)

# リポジトリをクローン git clone <your-repo-url> cd mcp_python # 依存関係をインストール poetry install # 開発依存関係も含む poetry install

2. pipを使用

pip install -e .

サーバーの起動

ローカル実行

# ドキュメントディレクトリを指定 export MCP_DOCS_DIR=/path/to/your/documents # サーバー起動 poetry run python -m mcp_server.main # または Makefile を使用 make run

Docker で実行

# イメージをビルド docker build -t mcp-document-server:latest . # 実行(docsディレクトリをマウント) docker run -it --rm \ -v $(PWD)/docs:/app/docs:ro \ mcp-document-server:latest # または Makefile を使用 make docker-build make docker-run

Docker Compose で実行

docker-compose up -d

🔧 Claude Desktop との連携

設定ファイル

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

ローカル実行の場合

{ "mcpServers": { "document-server": { "command": "poetry", "args": ["run", "python", "-m", "mcp_server.main"], "env": { "MCP_DOCS_DIR": "/path/to/your/documents" } } } }

Docker実行の場合

{ "mcpServers": { "document-server": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/path/to/your/documents:/app/docs:ro", "mcp-document-server:latest" ] } } }

🧪 テスト

テストの実行

# すべてのテストを実行 poetry run pytest # カバレッジ付きで実行 poetry run pytest --cov=src/mcp_server --cov-report=html # または Makefile を使用 make test make test-cov

MCP Inspector でテスト

サーバーをインタラクティブにテストできます:

npx @modelcontextprotocol/inspector poetry run python -m mcp_server.main # または Makefile を使用 make inspect

📁 プロジェクト構造

mcp_python/ ├── src/ │ └── mcp_server/ │ ├── __init__.py │ ├── server.py # メインサーバー │ ├── main.py # エントリーポイント │ ├── tools/ │ │ └── document.py # ドキュメントツール │ ├── resources/ │ │ └── file_handler.py # 安全なファイル操作 │ └── utils/ │ └── logging.py # ロギング設定 ├── tests/ # テストファイル ├── docs/ # ドキュメントディレクトリ ├── Dockerfile # Docker設定 ├── docker-compose.yml # Docker Compose設定 ├── pyproject.toml # プロジェクト設定 ├── pytest.ini # Pytest設定 ├── Makefile # 便利コマンド └── README.md

🛠️ 開発

コードフォーマット

# リンター実行 poetry run ruff check src/ tests/ # 自動フォーマット poetry run ruff format src/ tests/ # または Makefile を使用 make lint make format

クリーンアップ

make clean

📦 チーム配布

Docker Hub へのプッシュ

# イメージをビルド docker build -t your-org/mcp-document-server:latest . # Docker Hub にログイン docker login # プッシュ docker push your-org/mcp-document-server:latest

チームメンバー側の設定

# イメージを取得 docker pull your-org/mcp-document-server:latest

Claude Desktop の設定:

{ "mcpServers": { "document-server": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/path/to/documents:/app/docs:ro", "your-org/mcp-document-server:latest" ] } } }

⚠️ 重要な注意事項

ロギング

STDIO通信では

# ❌ これはNG(JSON-RPCメッセージが壊れる) print("Debug message") # ✅ これはOK logger.info("Debug message") # stderr に出力

ファイルパス

  • ドキュメントは MCP_DOCS_DIR で指定したディレクトリ以下に配置

  • パストラバーサル攻撃を防ぐため、ディレクトリ外へのアクセスは拒否されます

📝 使用例

Claudeでの利用

ユーザー: プロジェクトのドキュメントにはどんなものがありますか? Claude: (list_documentsツールを使用) 以下のドキュメントが利用可能です: - README.md - docs/api.md - docs/setup.md ユーザー: setup.mdの内容を教えてください Claude: (get_documentツールを使用してドキュメントを取得し、内容を説明)

🤝 コントリビューション

プルリクエスト歓迎!

📄 ライセンス

[ライセンスを記載してください]

🔗 参考リンク

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/onoda4480/Document-Server-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server