Model Context Protocol (MCP) Servers: Sequential Thinking with bonus Leave Management server. について
FastMCPを使った2つのMCPサーバーで、反復的な問題解決と人事の休暇管理を行います。Claude Desktopなどのクライアント向けに、両サーバーを同時に起動できます。
主な機能
- 01段階的な推論と修正・分岐
- 02セッション単位の思考コンテキスト
- 03休暇残高・申請・履歴の確認
- 04個別の挨拶リソース
- 052つのサーバーの同時起動
活用シーン
- 01サプライチェーンなど複数段階の計画
- 02従業員の休暇残高の確認
- 03休暇日の申請と履歴の確認
MCP 対応
2つのMCPサーバーを通じて、sequential_thinkingと休暇管理のツール、および挨拶リソースを提供します。ランチャーは両サーバーを同時に起動します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
モデルコンテキストプロトコル(MCP)サーバー:順次思考と、ボーナスの休暇管理サーバー。
このプロジェクトでは、FastMCP フレームワークを使用して、2 つの**モデルコンテキストプロトコル(MCP)**サーバーを実装しています。
- Sequential Thinking:構造化された問題解決のためのツールです。サプライチェーン管理の計画などのタスクに最適です。
- Leave Manager:モックの休暇データベースと連携し、従業員の休暇管理タスクを支援する HR 向け AI ツールです。
サーバーは main.py スクリプトを使用して同時に起動し、MCP サーバーと連携してモデルコンテキストプロトコル経由で API リクエストを送信する Claude Desktop から問い合わせることができます。
プロジェクト構成
directory/
├── main.py # Launches both MCP servers
├── leave_manager.py # Leave Manager MCP server
├── sequential.py # Sequential Thinking MCP server
機能
Sequential Thinking MCP サーバー
- 目的:モデルコンテキストプロトコルを使用した、構造化された段階的な問題解決を支援します。サプライチェーン管理など、複雑なタスクの計画に最適です。
- ツール:
sequential_thinking- 問題を順序立てた思考に分解します。
- 思考の修正、代替戦略のための分岐、ステップ数の動的な調整に対応しています。
sessionIdを介してコンテキストを維持します。
- ユースケース:サプライチェーン、プロジェクト、その他反復的な推論を必要とするタスクを計画します。
- ポート:
http://localhost:8001で実行されます。
Leave Manager MCP サーバー
- 目的:モデルコンテキストプロトコルを使用して、従業員の休暇管理を HR 向けに支援します。
- ツール:
get_leave_balance:従業員の残りの休暇日数を確認します。apply_leave:指定した日付で休暇を申請します。get_leave_history:従業員の休暇履歴を表示します。
- リソース:個別のあいさつに使用する
greeting://{name}。 - ポート:
http://localhost:8000で実行されます。
メインランチャー
- main.py:
multiprocessingを使用して、各サーバーをそれぞれのポートで同時に実行します。
前提条件
- Python:バージョン 3.8 以上。
- Claude Desktop:サーバーに MCP クエリを送信するために使用します。
- uv:依存関係のインストールに使用するパッケージマネージャー。
- オペレーティングシステム:Linux(例:Ubuntu)でテスト済みです。
セットアップ手順
プロジェクトをセットアップするには、次の手順に従ってください。
-
Claude Desktop をインストールする:
- 公式の配布元から Claude Desktop をダウンロードしてインストールします。
- API クエリを送信できるように設定されていることを確認します(例:クエリ入力フィールド経由)。
-
uv をインストールする:
pip install uv -
プロジェクトディレクトリを作成する:
uv init my-first-mcp-server cd my-first-mcp-server -
MCP CLI を追加する:
uv add "mcp[cli]" -
サーバーコードを追加する:
- 次のファイルを
my-first-mcp-server/に配置します。main.py:両方のサーバーを起動するランチャー。leave_manager.py:Leave Manager サーバーのコード。sequential.py:Sequential Thinking サーバーのコード。
- コードが提示された実装と一致していることを確認します(プロジェクトのリポジトリまたはドキュメントを参照してください)。
- 次のファイルを
-
サーバーを実行する:
uv run mcp install main.pyは(複数のサーバーがあるため)失敗する可能性があるので、代わりに次を実行します。uv run python main.py
-
必要に応じて Claude Desktop を再起動する:
- タスクマネージャー(Windows)または
killall(Linux)を使用して、実行中の Claude Desktop のインスタンスを終了します。 - Claude Desktop を再起動して、実行中のサーバーが認識されるようにします。
- タスクマネージャー(Windows)または
使用方法
サーバーの実行
次のコマンドを使用して、両方のサーバーを起動します。
cd ~/my-first-mcp-server
uv run python main.py
これにより、次のサーバーが起動します。
- Leave Manager:
http://localhost:8000。 - Sequential Thinking:
http://localhost:8001。
注:サーバーの稼働を維持するため、ターミナルは開いたままにしてください。
Claude Desktop 経由での操作
Claude Desktop のクエリ入力フィールドを使用して、モデルコンテキストプロトコル経由でサーバーに JSON クエリを送信します。以下に、両方のサーバーの例を示します。Sequential Thinking サーバーを使用したサプライチェーン管理に重点を置いています。
Sequential Thinking MCP サーバー
- エンドポイント:
http://localhost:8001/tool/sequential_thinking - 目的: MCP を使用して、サプライチェーンをステップに分解して計画を立てたり、計画を修正したり、代替案を検討したりします。
- 入力: JSON クエリを Claude Desktop のクエリフィールドに貼り付けて送信します。
例:スマートウォッチのサプライチェーンを計画する
-
目標を定義する:
{ "thought": "Define objective: Plan a cost-efficient supply chain for a new smartwatch, ensuring global delivery within 5 months.", "nextThoughtNeeded": true, "thoughtNumber": 1, "totalThoughts": 8 }- Claude Desktop で送信します(例:クエリフィールドに貼り付けて「Send」をクリックします)。
- 応答から
sessionId(例:123e4567-...)をコピーします。
-
サプライヤーを選定する:
{ "sessionId": "<sessionId>", "thought": "Select suppliers: Source microchips from Supplier X (Taiwan), displays from Supplier Y (South Korea), batteries from Supplier Z (China).", "nextThoughtNeeded": true, "thoughtNumber": 2, "totalThoughts": 8 }<sessionId>をステップ 1 で取得した ID に置き換えます。
-
製造を計画する:
{ "sessionId": "<sessionId>", "thought": "Plan manufacturing: Assemble smartwatches in Factory A (Vietnam) for low labor costs and supplier proximity.", "nextThoughtNeeded": true, "thoughtNumber": 3, "totalThoughts": 8 } -
サプライヤーを見直す:
{ "sessionId": "<sessionId>", "thought": "Revised: Switch battery supplier to Supplier W (Japan) for better quality, despite 10% higher cost.", "nextThoughtNeeded": true, "thoughtNumber": 2, "totalThoughts": 8, "isRevision": true, "revisesThought": 2 } -
代替の物流手段を検討する(分岐):
{ "sessionId": "<sessionId>", "thought": "Alternative: Use air freight for distribution to Europe to ensure 7-day delivery.", "nextThoughtNeeded": true, "thoughtNumber": 4, "totalThoughts": 8, "branchFromThought": 3, "branchId": "air_freight" } -
在庫を計画する:
{ "sessionId": "<sessionId>", "thought": "Plan inventory: Maintain 20,000 units in regional warehouses (USA, Europe, Asia) with just-in-time delivery.", "nextThoughtNeeded": true, "thoughtNumber": 5, "totalThoughts": 8 } -
リスクを軽減する:
{ "sessionId": "<sessionId>", "thought": "Mitigate risks: Dual-source microchips and maintain 15% buffer inventory for supply disruptions.", "nextThoughtNeeded": true, "thoughtNumber": 6, "totalThoughts": 10, "needsMoreThoughts": true } -
スケジュールを設定する:
{ "sessionId": "<sessionId>", "thought": "Set timeline: Supplier contracts by Month 1, manufacturing by Month 3, distribution by Month 4.", "nextThoughtNeeded": false, "thoughtNumber": 7, "totalThoughts": 10 }
ヒント:
- セッション ID: 後続のクエリで使用できるよう、最初のクエリの後に
sessionIdを保存してください。 - Claude Desktop の形式: 必要に応じて、JSON の前に次を付けます。
例:POST http://localhost:8001/tool/sequential_thinkingPOST http://localhost:8001/tool/sequential_thinking { "thought": "Define objective: Plan a cost-efficient supply chain for a new smartwatch, ensuring global delivery within 5 months.", "nextThoughtNeeded": true, "thoughtNumber": 1, "totalThoughts": 8 } - カスタマイズ: 他のサプライチェーン(例:食品、医薬品)に合わせて
thoughtの内容を変更します。食品の場合の例:{ "thought": "Define objective: Plan a cold-chain supply chain for fresh produce, ensuring delivery within 48 hours.", "nextThoughtNeeded": true, "thoughtNumber": 1, "totalThoughts": 8 }
Leave Manager MCP サーバー
- エンドポイント:
http://localhost:8000 - 目的: MCP を使用して、モックデータベース(
employee_leaves.json)経由で従業員の休暇を管理します。 - クエリの例:
- 休暇残数を確認する:
{ "employee_id": "E001" }http://localhost:8000/tool/get_leave_balanceに送信します。 - 休暇を申請する:
{ "employee_id": "E001", "leave_dates": ["2025-06-01", "2025-06-02"] }http://localhost:8000/tool/apply_leaveに送信します。 - 休暇履歴を取得する:
{ "employee_id": "E001" }http://localhost:8000/tool/get_leave_historyに送信します。
- 休暇残数を確認する:
プロジェクトの拡張
- Sequential Thinking の永続化:
employee_leaves.jsonと同様に、サプライチェーン計画を保存する JSON またはデータベースのストレージを追加します。 - Claude Desktop の自動化:
sessionIdを管理し、クエリ入力を効率化するスクリプトを作成します。 - 可視化: Sequential Thinking のデータからサプライチェーンのフローチャートやタイムラインを生成します。
- メトリクス:
sequential_thinkingを拡張して、思考内容からコストやリードタイムを計算します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。