Model Context Protocol (MCP)

参照元: LiveKit Agents Documentation ロードマップ: 学習ロードマップ

追加参照(公式):

What(何についてか)

Model Context Protocol (MCP) を使って、外部サーバーが公開するツールを LiveKit Agent の tool 空間に統合する方法を扱う。LiveKit では mcp_serversAgentSession または Agent に設定することで、MCPツールを通常の function tool と同列に LLM から呼び出せる。

Why(なぜ必要か)

アプリ固有の function tool をすべて自前実装すると、外部システム連携の再利用性が下がりやすい。MCP を使うと、既存のMCPサーバー資産を接続するだけでツール提供が可能になる。さらに allowed_tools による最小公開、複数サーバーの併用、認証ヘッダ注入により、実運用で必要な制御を保持したまま拡張できる。

How(どう動くか)

LiveKit AgentSession の構成時に mcp_servers を渡す。以下は公式サンプルに準拠した最小構成で、HTTP経由のMCPサーバーを1つ接続する。

session = AgentSession(
    vad=silero.VAD.load(),
    stt=inference.STT("deepgram/nova-3", language="multi"),
    llm=inference.LLM("openai/gpt-4.1-mini"),
    tts=inference.TTS("cartesia/sonic-3"),
    turn_detection=MultilingualModel(),
    mcp_servers=[
        mcp.MCPServerHTTP(url="http://localhost:8000/sse"),
    ],
)

接続方式

MCPServerHTTP はURL末尾でtransportを自動判定する。

  • /sse → Server-Sent Events transport
  • /mcp → streamable HTTP transport
  • それ以外 → transport_type の明示指定が安全

ローカルCLI型のMCPサーバーは MCPServerStdio を使い、command/args/env/cwd を指定して子プロセスとして起動する。

認証と公開範囲

  • 認証: headersAuthorization などを付与
  • 公開範囲: allowed_tools で許可リスト化し、LLMに見せるツールを最小化

複数サーバー運用

mcp_servers は配列を受け取り、複数サーバーを同時に初期化する。個別接続失敗はログ化されるが、他が生きていればエージェント全体は起動継続する。

function tool との併用

MCPツールと @function_tool は同じ候補集合としてLLMに提示される。LLMは目的に応じて両者を選択する。実装上の違いはバックエンド経路(MCP経由 or ローカル関数)のみ。

Agent と AgentSession の配置ルール

mcp_serversAgentAgentSession の両方に設定可能だが、解決規則は「上書き」であり「マージ」ではない。

  • Agentmcp_servers がある → それを使用(Session設定は置換)
  • Agent にない → AgentSession 側をフォールバック使用
graph TD
    A[AgentSession mcp_servers = [A,B]] --> B{Agent has mcp_servers?}
    B -->|Yes| C[Use Agent mcp_servers only]
    B -->|No| D[Use Session mcp_servers as fallback]

Key Concepts

用語説明
MCPServerHTTPHTTP/SSEベースでリモートMCPサーバーに接続する設定オブジェクト。
MCPServerStdioローカルMCPサーバープロセスをstdin/stdoutで扱う設定オブジェクト。
mcp_serversAgentSession/Agentに渡すMCP接続定義の配列。
allowed_toolsLLMに公開するMCPツール名の許可リスト。
headersMCPサーバー接続時に付与する認証ヘッダ。
override ruleAgent側設定がSession側設定を置換する挙動。

一言まとめ

LiveKitにおけるMCPは、外部ツール連携を mcp_servers で宣言的に注入する仕組みであり、接続方式・権限制御・上書き規則を理解すると、function tool と併用した拡張可能なエージェント構成を安全に設計できる。