Model Context Protocol (MCP)
参照元: LiveKit Agents Documentation ロードマップ: 学習ロードマップ
追加参照(公式):
- https://docs.livekit.io/agents/logic/tools/mcp/
- https://docs.livekit.io/recipes/http_mcp_client/
- https://github.com/livekit/agents/blob/main/examples/voice_agents/mcp/mcp-agent.py
What(何についてか)
Model Context Protocol (MCP) を使って、外部サーバーが公開するツールを LiveKit Agent の tool 空間に統合する方法を扱う。LiveKit では mcp_servers を AgentSession または 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 を指定して子プロセスとして起動する。
認証と公開範囲
- 認証:
headersでAuthorizationなどを付与 - 公開範囲:
allowed_toolsで許可リスト化し、LLMに見せるツールを最小化
複数サーバー運用
mcp_servers は配列を受け取り、複数サーバーを同時に初期化する。個別接続失敗はログ化されるが、他が生きていればエージェント全体は起動継続する。
function tool との併用
MCPツールと @function_tool は同じ候補集合としてLLMに提示される。LLMは目的に応じて両者を選択する。実装上の違いはバックエンド経路(MCP経由 or ローカル関数)のみ。
Agent と AgentSession の配置ルール
mcp_servers は Agent と AgentSession の両方に設定可能だが、解決規則は「上書き」であり「マージ」ではない。
Agentにmcp_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
| 用語 | 説明 |
|---|---|
| MCPServerHTTP | HTTP/SSEベースでリモートMCPサーバーに接続する設定オブジェクト。 |
| MCPServerStdio | ローカルMCPサーバープロセスをstdin/stdoutで扱う設定オブジェクト。 |
| mcp_servers | AgentSession/Agentに渡すMCP接続定義の配列。 |
| allowed_tools | LLMに公開するMCPツール名の許可リスト。 |
| headers | MCPサーバー接続時に付与する認証ヘッダ。 |
| override rule | Agent側設定がSession側設定を置換する挙動。 |
一言まとめ
LiveKitにおけるMCPは、外部ツール連携を mcp_servers で宣言的に注入する仕組みであり、接続方式・権限制御・上書き規則を理解すると、function tool と併用した拡張可能なエージェント構成を安全に設計できる。