Three Generations of MCP Server Design — Kevin Whinnery, Stainless
15分 51秒
AIエージェントのAPI連携を革新!MCPと型定義SDKによるツール呼び出し最適化
この記事は動画の内容を元にAIが生成したものです。正確な情報は元の動画をご確認ください。
ポイント
- •AIエージェントがAPIを正確に操作するための課題と、その解決に向けたツール呼び出し技術の変遷を解説します。
- •初期の非効率なアプローチからAnthropicやCloudflareが試みた動的な解決策の限界を提示します。
- •型定義済みSDKを活用したStainlessの「SDKコードモード」が、エージェントによるAPI操作精度を飛躍的に高める最善策であることを知れます。
皆様、こんにちは。本記事では、AIエージェントがAPIを効果的に利用するための「ツール呼び出し」技術の進化と、その最前線にある革新的なアプローチについて詳しくご紹介します。
私はStainlessという企業で働いており、OpenAI API、Anthropic、Google DeepMindなどのSDK生成に携わっています。StainlessはOpenAPI Specification(APIの設計書)を基に、言語固有のSDK、ドキュメント、MCP(Model Context Protocol)サーバーなどを自動生成するツールを提供しています。
Michael氏やSam Altman氏が指摘するように、多くの開発者がAPIプロバイダーとなる時代、構築したAPIをいかにAIエージェントが効果的に活用できるよう公開するかが重要な課題です。この課題を解決する鍵となるのが、モデルが外部機能を利用する「ツール呼び出し」と、その基盤となる「モデルコンテキストプロトコル」です。
従来のアプローチとその課題
ツール呼び出し技術の初期世代では、数百もの異なるツールをモデルに直接公開するアプローチが主流でした。例えば、公式GitHub MCPサーバーのReadmeには多数のツールが列挙されています。
しかし、このアプローチには以下の大きな課題がありました。
- ツール選択の困難さ: 多数のツールがコンテキストに詰め込まれると、モデルはどのツールを呼び出すべきか正確に判断することが困難でした。
- コンテキストウィンドウの肥大化: 大規模なAPIの場合、すべてのツール定義でコンテキストが満たされ、モデルが他の情報を処理する余裕がなくなる問題が発生し、この手法は急速に持続不可能となりました。
Anthropicによる動的ツール呼び出しの提案
Anthropicは、「動的なツール呼び出し」アプローチを提唱しました。これは、モデル自身が利用可能なツールを発見するためのコードを生成し、セキュアなサンドボックス内でプログラム的に実行するものです。
この方法の利点は、コンテキストウィンドウへの負荷軽減と、コード生成に優れたモデルの能力を活用できる点にありました。しかし、ツール定義が新しかったため、精度のばらつきが課題として残りました。
Cloudflareのアプローチ:APIスキーマとHTTPリクエストの活用
同時期にCloudflareは、モデルに2つの特定のツールへのアクセスを許可するアプローチを発見しました。モデルにコードを生成させる点は共通していました。
- APIスキーマ検索ツール: OpenAPI Spec内を走査し、モデルが必要とするエンドポイントを検索します。
- HTTPリクエスト実行ツール: 見つけ出したAPIエンドポイントに対して、実際のHTTPリクエストを実行し、目的のアクションを完了させます。
このアプローチは精度とトークン効率の両面で良好な結果を生み出しましたが、成功には多岐にわたる「コンテキストハーネスエンジニアリング」が必要でした。
Stainlessの革新的アプローチ:型定義済みSDKコードモード
Stainlessは、既存のアイデアを発展させ、独自のMCPサーバー構築アプローチ「SDKコードモード」を採用しました。弊社のブログで詳細をご覧いただけます。
StainlessはAPIのOpenAPI Specから、リクエスト、レスポンス、エラーメッセージに至るまで型定義済みSDK(例: TypeScript SDK)を生成します。これにより、コードが実行される前に静的解析が可能となります。
この型定義済みSDKをモデルに提供することで、モデルはAPIと連携するためのより「リッチなインターフェース」を得られます。このアプローチは、AnthropicやCloudflareのアプローチと比較しても、非常に優れた結果を達成しました。
この方法の主な利点は、API固有の厳密な型定義が存在することにあります。これにより、モデルはAPIの構造や期待されるデータ形式を明確に理解し、より正確なAPI操作コードを生成できます。
私たちは、この型定義済みSDKを活用したMCPによるAPI操作こそが、現時点で最も正確にAPIを操作できる最善の方法であると確信しています。
OpenAIコンソールでのデモンストレーション
ここでは、OpenAIコンソールを使ってこのアプローチがどのように機能するかを簡潔に紹介します。OpenAIコンソールは、リモートMCPサーバーをモデルAPIリクエストのコンテキストでテストできる優れたツールです。
デモンストレーションでは、Stainless自身のAPI用のMCPサーバーが使用されます。Stainlessは、ユーザーのAPI仕様と構成ファイルを基に、SDK、MCPサーバー、APIドキュメントなどを生成するAPIを提供しており、このAPI自体もSDKで操作可能です。
Stainlessが生成するMCPサーバーはCloudflare Workers上で動作し、TypeScript SDKの一部として生成されるため、npmで公開したり、任意の環境で実行したりできます。
このMCPサーバーは、主にsearch_docsツールを公開しています。
search_docsツール:- モデルが試行しようとしている特定のAPI操作に関する情報を提供します。
- フリーテキストのクエリと、生成したいコードの言語を受け取ります。
- モデルは、このツールから得られたAPI固有のリソース情報に基づいて、API統合コードを正確に記述できるようになります。
- このツールは、コーディングエージェントがAPIコードを生成するため、およびエージェントが実際にAPIを操作するために必要なコンテキストを与えるための前提条件となります。
まとめ
AIエージェントがAPIをより効果的・正確に利用するためのツール呼び出し技術は、目覚ましい進化を遂げてきました。
初期の課題克服から、Anthropicの動的なコード生成、CloudflareのAPIスキーマ検索を経て、Stainlessは型定義済みSDKをモデルに提供する「SDKコードモード」アプローチを提唱しています。
このアプローチは、API固有の厳密な型定義を活用し、エージェントがAPIと連携する際の精度を大幅に向上させる、現時点での最善策の一つです。AIエージェントとAPIの連携は、今後も様々な分野でその可能性を広げていくことでしょう。