MCP SOP Server について
MCP SOP Serverは、イタリア語と英語のSOPを対象に、AIエージェント向けのセマンティック検索、カテゴリ閲覧、状況別ガイダンスを提供します。社内手順を管理するチーム向けで、PDFとDOCXを処理してベクトル検索に利用します。
主な機能
- 01イタリア語と英語のセマンティック検索
- 02PDFとDOCXの処理
- 03カテゴリ別の絞り込みと閲覧
- 04状況に応じた手順ガイダンス
- 05文書検索データベースの更新
活用シーン
- 01自然言語で関連SOPを検索
- 02特定状況に応じた手順の確認
- 03カテゴリ内のSOPを閲覧
- 04文書更新後に検索データを再更新
MCP 対応
MCPサーバーとして、SOP検索、状況別ガイダンス、カテゴリ一覧、文書取得、ステータス確認のツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP SOP サーバー
イタリア語に対応した、標準業務手順書(SOP)にアクセスして検索するための Model Context Protocol(MCP)サーバーです。
概要
この MCP サーバーは、AI エージェントに次の機能を提供します。
- セマンティック検索を使って、会社の SOP ドキュメントを検索する
- 特定の状況に基づいて、関連する手順を取得する
- カテゴリー別に SOP を閲覧する
- 特定のシナリオで何をすべきかについて、ガイダンスを得る
このサーバーでは、次の技術を使用します。
- ChromaDB:ベクトルストレージとセマンティック検索
- Sentence Transformers:イタリア語に対応した多言語モデル
- FastMCP:MCP サーバーの実装
- RAG(検索拡張生成):インテリジェントなドキュメント検索
機能
- 🇮🇹 イタリア語サポート:イタリア語のテキストに最適化された多言語埋め込みを使用します
- 📄 複数形式に対応:PDF および DOCX ドキュメントを処理します
- 🔍 セマンティック検索:キーワードだけでなく、意味に基づいて関連する SOP を検索します
- 📁 カテゴリーによる絞り込み:特定の SOP カテゴリー内を検索します
- 🤖 AI 対応:LLM が利用しやすい構造化された応答を提供します
- ⚡ 高速検索:ChromaDB による効率的なベクトルベースの検索
- 🚀 遅延初期化:サーバーはすばやく起動し、最初のリクエスト時にドキュメントをインデックス化します
インストール
-
リポジトリをクローンします。
git clone https://github.com/dadapera/mcp-sop-server.git cd mcp-sop-server -
仮想環境を作成して有効化します。
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate -
依存関係をインストールします。
pip install -r requirements.txt -
SOP ドキュメントを追加します。
sop_documents/ディレクトリを作成し、SOP ファイルをカテゴリー別のフォルダーに整理します。
設定
MCP クライアントの設定
このサーバーを Claude Desktop やその他の MCP クライアントで使用するには、MCP クライアントの設定に追加します。
Claude Desktop の場合(mcp-client-config.json):
{
"mcpServers": {
"sop-server": {
"command": "/path/to/your/venv/Scripts/python.exe",
"args": ["/path/to/your/mcp-sop-server/main.py"],
"cwd": "/path/to/your/mcp-sop-server"
}
}
}
注:仮想環境内の Python 実行ファイルには絶対パスを指定し、システムに合わせてパスを調整してください。
ディレクトリ構成
サーバーは、SOP ドキュメントが次のように整理されていることを想定しています。
sop_documents/
├── SOP01 Quality System Documentation Management/
│ ├── document1.pdf
│ └── document2.docx
├── SOP02 HR management/
│ └── hr_procedures.pdf
├── SOP03 Design/
│ └── design_process.docx
└── ...
使用方法
サーバーの起動
通常、サーバーは MCP クライアント(Claude Desktop など)によって自動的に起動されます。手動で実行する場合は、次のようにします。
python main.py
サーバーは次の処理を行います。
- すばやく起動し、接続を待ちます
- 最初のツール呼び出し時に、
sop_documents/ディレクトリ内のすべての SOP ドキュメントをスキャンします - PDF および DOCX ファイルを処理し、テキストを抽出します
- 多言語モデルを使って埋め込みを生成します
- 高速に検索できるよう、すべてを ChromaDB に保存します
利用可能なツール
サーバーは、次の MCP ツールを提供します。
1. search_sop_documents
自然言語のクエリを使って、関連する SOP の内容を検索します。
パラメーター:
query(string):イタリア語または英語の検索クエリmax_results(int、任意):返す結果の最大数(デフォルト:5)category(string、任意):SOP カテゴリーによる絞り込み
例:
{
"query": "Come gestire una non conformità nel processo di produzione",
"max_results": 3,
"category": "SOP05 Non Conformity"
}
2. get_sop_guidance
SOP ドキュメントに基づいて、状況に応じた具体的なガイダンスを取得します。
パラメーター:
situation(string):状況の説明category(string、任意):特定のカテゴリーを対象に検索
例:
{
"situation": "Un cliente ha segnalato un difetto nel prodotto consegnato",
"category": "SOP05 Non Conformity"
}
3. list_sop_categories
利用可能なすべての SOP カテゴリーと、コレクションの統計情報を取得します。
4. get_sop_by_category
特定のカテゴリーに含まれるすべての SOP を取得します。
パラメーター:
category(string):SOP カテゴリー名
5. refresh_sop_database
ドキュメントデータベースを更新します(SOP が更新されたときに使用します)。
6. get_server_status
現在のサーバーのステータスと統計情報を取得します。
技術設定
埋め込みモデル
このサーバーでは、イタリア語に対応するため、デフォルトで sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 を使用します。src/mcp_sop_server/document_searcher.py で変更できます。
model_name = "sentence-transformers/your-preferred-model"
チャンクサイズ
テキストのチャンク化は、src/mcp_sop_server/document_processor.py で調整できます。
def chunk_text(self, text: str, chunk_size: int = 1000, overlap: int = 200):
データベースの保存場所
ChromaDB の保存場所は、プロジェクトルートの chroma_db/ に自動的に設定されます。
クエリの例
以下は、使用できるクエリの例です。
イタリア語:
- 「不適合への対処方法」
- 「インフラストラクチャの保守手順」
- 「内部監査が発生した場合の対応」
- 「倉庫管理と在庫管理」
英語:
- 「品質上の問題への対処方法」
- 「ソフトウェア開発ライフサイクルの手順」
- 「リスク管理プロトコル」
- 「従業員のトレーニング要件」
トラブルシューティング
よくある問題
- ドキュメントが見つからない:SOP ドキュメントが正しいディレクトリ構成に配置されていることを確認してください
- 埋め込みモデルのダウンロード:初回実行時は、多言語モデルのダウンロードに時間がかかる場合があります
- メモリ使用量:大量のドキュメントを扱う場合、埋め込みの生成により多くの RAM が必要になることがあります
- パスの問題:MCP クライアントの設定では、必ず絶対パスを使用してください
ログ
サーバーでは、読みやすさを高めるため、絵文字を使った詳細なログが提供されます。
- 🚀 サーバーの起動と初期化
- 📄 ドキュメントの処理状況
- 📊 処理統計
- ✅ 成功メッセージ
- ❌ エラーメッセージ
詳細については、コンソール出力または MCP クライアントのログを確認してください。
開発
プロジェクト構成
mcp-sop-server/
├── src/mcp_sop_server/ # Main package
│ ├── __init__.py # Package initialization
│ ├── mcp_server.py # FastMCP server and tools
│ ├── document_processor.py # Document text extraction
│ └── document_searcher.py # Vector search with ChromaDB
├── main.py # Entry point
├── requirements.txt # Dependencies
├── test_server.py # Server testing
├── mcp-client-config.json # Example client configuration
└── README.md # This file
新しいドキュメントタイプの追加
追加のファイル形式をサポートするには、DocumentProcessor クラスを拡張します。
def extract_text_from_new_format(self, file_path: Path) -> str:
# Implementation for new format
pass
カスタム検索ロジック
DocumentSearcher クラスを変更して、カスタムの検索アルゴリズムやフィルターを実装します。
追加ツール
mcp_server.py で @mcp.tool() デコレーターを使って定義し、新しい MCP ツールを追加します。
ライセンス
このプロジェクトは、社内で SOP ドキュメントにアクセスする目的で利用するものです。
サポート
SOP MCP サーバーに関する問題や質問がある場合は、GitHub リポジトリに issue を作成してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。