sequenceDiagram
participant MCPHost as mcphost (CLI)
participant LLMInteraction as (セクション3参照)
participant MCPClient as pkg/mcp/client.go (推測)
participant MCPServer as MCPサーバープロセス (例: sqlite, filesystem)
Note over MCPHost, MCPServer: 初期化フェーズ
MCPHost->>MCPServer: サーバープロセス起動 [1]
MCPHost->>MCPClient: GetCapabilities(server_ref)
MCPClient->>MCPServer: mcp_GetCapabilities リクエスト送信 (推測)
MCPServer-->>MCPClient: ツール定義返却 (推測)
MCPClient-->>MCPHost: ツール定義格納
Note over MCPHost, MCPServer: ツール実行フェーズ (LLMによりトリガー)
LLMInteraction-->>MCPHost: ツール呼び出し要求 (tool_name, args, call_id)
MCPHost->>MCPHost: 'tool_name' を提供するサーバーを特定
MCPHost->>MCPClient: ExecuteTool(server_ref, tool_name, args, call_id)
MCPClient->>MCPServer: mcp_Execute リクエスト送信 (推測, tool_name, args, call_id を含む)
MCPServer->>MCPServer: ツールロジック実行
MCPServer-->>MCPClient: ツール結果/エラー返却 (推測, call_id を含む)
MCPClient-->>MCPHost: ツール結果転送 (result, call_id)
MCPHost->>LLMInteraction: ツール結果をLLMに送り返す (セクション3.5参照)
調査対象: https://github.com/mark3labs/mcphost
調査担当:Gemini Deep Research with 2.5 Pro
シーケンス図
sequenceDiagram participant User as ユーザー participant MCPHost as mcphost (CLI) participant LLMProvider as pkg/llm/[provider].go participant LLM_API as LLM API (例: Ollama, Anthropic) participant MCPServerInteraction as (セクション4参照) User->>MCPHost: プロンプト入力 MCPHost->>LLMProvider: CreateMessage(prompt, history, tools) LLMProvider->>LLMProvider: LLM API用に履歴とツールをフォーマット [7] LLMProvider->>LLM_API: チャットリクエスト送信 [7] LLM_API-->>LLMProvider: 応答受信 (テキスト or ツール呼び出し) LLMProvider->>LLMProvider: 応答解析 [7] LLMProvider-->>MCPHost: 解析済み応答返却 (llm.Message) alt テキスト応答 MCPHost->>User: LLMテキスト応答表示 else ツール呼び出し応答 MCPHost->>MCPServerInteraction: ツール実行開始 (ツール名, 引数, Call ID) Note over MCPHost, MCPServerInteraction: mcphost -> mcpserver 図参照 MCPServerInteraction-->>MCPHost: ツール結果返却 MCPHost->>LLMProvider: CreateToolResponse(callID, result) LLMProvider->>LLMProvider: ツール結果メッセージをフォーマット [7] Note right of MCPHost: 結果は次のターンの履歴に追加される MCPHost->>LLMProvider: CreateMessage(prompt=null, history+result, tools) LLMProvider->>LLM_API: ツール結果を含むチャットリクエスト送信 LLM_API-->>LLMProvider: 応答受信 (通常、ツール結果を組み込んだテキスト) LLMProvider->>LLMProvider: 応答解析 LLMProvider-->>MCPHost: 解析済み応答返却 MCPHost->>User: LLMテキスト応答表示 endsequenceDiagram participant MCPHost as mcphost (CLI) participant LLMInteraction as (セクション3参照) participant MCPClient as pkg/mcp/client.go (推測) participant MCPServer as MCPサーバープロセス (例: sqlite, filesystem) Note over MCPHost, MCPServer: 初期化フェーズ MCPHost->>MCPServer: サーバープロセス起動 [1] MCPHost->>MCPClient: GetCapabilities(server_ref) MCPClient->>MCPServer: mcp_GetCapabilities リクエスト送信 (推測) MCPServer-->>MCPClient: ツール定義返却 (推測) MCPClient-->>MCPHost: ツール定義格納 Note over MCPHost, MCPServer: ツール実行フェーズ (LLMによりトリガー) LLMInteraction-->>MCPHost: ツール呼び出し要求 (tool_name, args, call_id) MCPHost->>MCPHost: 'tool_name' を提供するサーバーを特定 MCPHost->>MCPClient: ExecuteTool(server_ref, tool_name, args, call_id) MCPClient->>MCPServer: mcp_Execute リクエスト送信 (推測, tool_name, args, call_id を含む) MCPServer->>MCPServer: ツールロジック実行 MCPServer-->>MCPClient: ツール結果/エラー返却 (推測, call_id を含む) MCPClient-->>MCPHost: ツール結果転送 (result, call_id) MCPHost->>LLMInteraction: ツール結果をLLMに送り返す (セクション3.5参照)