ホームへ戻る

代理框架

LangChain 1.4 Alpha、MCPツール連携をコアに統合――サーバーが呼び出し途中で人間の入力を要求可能に

新しい `langchain.mcp` は、単一または複数の MCP サーバーへの接続を統一し、ツール実行途中の問い合わせを再開可能な LangGraph interrupt に変換する。インターフェースは依然として Alpha 段階にあり、連続するバージョンでメソッド名や elicitation の挙動が変更されているため、安定運用が求められる本番環境へ直接導入するのは適切ではない。

Black-hole-diver · CC BY-SA 4.0 · Image source
zh-Hant

LangChain の 1.4.0 Alpha シリーズでは、ファーストパーティーの `langchain.mcp` 名前空間が追加され、従来は独立したアダプターパッケージが担っていた MCP ツール変換がメインパッケージに取り込まれた。`MCPAdapter` は、リモート URL、ローカルの stdio プログラム、同一プロセス内のサーバー、複数サーバー構成、または既存の FastMCP client を受け付ける。取得したツールは、そのまま `create_agent` に渡せる。これにより、認証、タイムアウト、進捗報告、トランスポート接続は FastMCP の仕組みを引き続き利用し、LangChain はツールオブジェクトとエージェント状態の変換に注力する。

技術的により重要な変更は elicitation だ。MCP ツールの実行途中で、ディレクトリ、認可に関する選択、またはその他の構造化パラメーターが不足している場合、サーバーはユーザーに追加情報を要求できる。LangChain はこの種のリクエストを LangGraph interrupt として表現し、エージェントの状態を一時停止して保存したうえで、人間からの回答を受け取ると処理を再開する。FastMCP のドキュメントによると、2026-07-28 版のプロトコルでは「input-required round」方式が採用された。ツールはまず通常のレスポンスでそのラウンドを終了し、その後クライアントが回答を添えて新たな呼び出しを行う。長時間接続を開いたまま待機させる方式ではない。

アダプター層は ClientGroup 配下の複数サーバーも集約でき、ツールの annotation、サーバー ID、元の `_meta` を `metadata["mcp"]` に格納する。ツール一覧のキャッシュには use、refresh、bypass の各モードが用意され、サーバーが提示する TTL ヒントにも従える。大規模なツールディレクトリでは、ラウンドごとに再探索する際のレイテンシーを削減できる。

ただし、これは安定版ではない。a3 で `get_tools` が `list_tools` に改名されたばかりだが、続く a4 では FastMCP 4.0.1、複数サーバーでの elicitation、新旧プロトコルのネゴシエーションに関する修正が入り、手動指定が必要だった elicitation フラグも削除された。ユーザーは `--pre` を付けてインストールし、`mcp` extra を追加する必要がある。現段階では、隔離された環境でのテストに適している。本番導入前には、interrupt 後の冪等性、ツール呼び出しの重複、認証情報のライフサイクル、サーバーから返される metadata が既存の権限境界を越えないかを引き続き検証すべきだ。

出典

  1. LangChain 1.4.0a3–a4 release notes
  2. FastMCP user elicitation documentation