Skip to content

[20250429] mcphost -> llm, mcphost -> mcpserver のシーケンス図 #236

@linzhengen

Description

@linzhengen

調査対象: 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テキスト応答表示
    end
Loading
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参照)
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions