@maru

MCP v2.0 SDKリリース — ステートレスHTTPとOAuth 2.1セキュリティ標準の導入
AIエージェントと外部ツールを接続する技術標準であるモデルコンテキストプロトコル(MCP)が、ステートレスHTTPアーキテクチャへと全面刷新されます。従来のMCPは、ローカル中心の標準入出力やセッション維持が必須のサーバー送信イベント(SSE)方式に依存しており、分散サーバー環境での拡張に課題がありました。最近公開された2026-07-28仕様候補とTypeScript SDK v2.0は、この制約を克服し、ステートレスなネットワーク設計と強力なエンタープライズセキュリティ仕様を導入することで、大規模な本番環境の構築を円滑にサポートします。
ステートレスHTTP設計へのパラダイムシフトとパッケージの分割
モデルコンテキストプロトコル仕様候補とTypeScript SDK v2.0における最大の変更点は、ステートレスHTTP転送への全面的な移行です。従来の仕様では、サーバーがクライアントとの接続を維持し、セッションIDを発行・管理する必要がありました。そのため、大規模なサービスでサーバーを水平拡張(スケールアウト)するには、ロードバランサーでのスティッキーセッションの設定や、別途セッション共有ストレージを構築する必要があるなど、インフラへの負担が伴いました。
対して新しく刷新された仕様では、初期ハンドシェイクのプロセスが省略され、プロトコルバージョンと機能定義がリクエストごとに独立して送信されます。すべてのリクエストが完全に完結する自己完結型の構造で設計されたため、開発者は複雑なセッション維持なしに、一般的なラウンドロビン方式のロードバランシングを通じてサーバーインスタンスを自由に分散配置できるようになりました。
このステートレスアーキテクチャを円滑に実装できるよう、従来の単一SDKパッケージはサーバー開発用の @modelcontextprotocol/server とクライアント開発用の @modelcontextprotocol/client にきれいに分割されました。また、開発者が好みのWebフレームワークに合わせて統合できるよう、多様な軽量アダプターパッケージも提供されます。
例えば、Web標準インターフェースをサポートするHonoやCloudflare Workers環境では、SDKが提供する標準ハンドラーを別途の変換なしで直接実行できます。一方、既存のNode.jsエコシステムで広く使われているExpress環境であれば、以下のように専用アダプターを通じて、わずか数行のコードでルーターに容易に連携可能です。
// @modelcontextprotocol/server v2.0 및 Node.js 어댑터 기준
import express from 'express';
import { createMcpHandler, McpServer } from '@modelcontextprotocol/server';
import { toNodeHandler } from '@modelcontextprotocol/node';
const mcpHandler = createMcpHandler(() => {
const server = new McpServer({ name: 'enterprise-tools', version: '2.0.0' });
// 여기에 도구 및 리소스 등록 로직을 추가합니다.
return server;
});
const app = express();
app.all('/mcp', toNodeHandler(mcpHandler));
app.listen(3000);新しいステートレス設計とモジュール化されたパッケージ構成により、軽量な仮想サーバーやサーバーレス環境はもちろん、複雑なマイクロサービスアーキテクチャ内においても、MCPツールサーバーを非常に柔軟に構築・運用できるようになりました。
OAuth 2.1およびRFC 9728に基づく安全な相互運用構造
エージェントが外部サーバーのツールを動的に探索し、安全に実行するには強固な認証体制が不可欠です。MCP v2では、大規模な分散環境に対応するため、最新のセキュリティ標準であるOAuth 2.1と、OAuth保護リソースメタデータ仕様であるRFC 9728を中核となる認証アーキテクチャとして採用しました。
未認証状態のエージェントクライアントがツール実行APIを呼び出すと、MCPサーバーはリクエストを拒否すると同時に、クライアントが自身で認証方式を把握できるようにチャレンジレスポンスを送信します。この際、サーバーは 401 Unauthorized ステータスコードとともに WWW-Authenticate ヘッダーに保護リソースメタデータのパスを格納して返します。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://mcp.example.com/.well-known/oauth-protected-resource"クライアントはヘッダーに明示された resource_metadata エンドポイントにアクセスし、該当のMCPサーバーが信頼する認可サーバーのアドレスやサポートする権限範囲を記述したJSONメタデータを取得します。これにより、エージェントはハードコードされた認証情報なしでも、機械的に次のステップのOAuth 2.1認可コードフローを開始できます。結果として、この構造は多数のMCPサーバーとクライアントが、複雑な事前設定なしでも信頼境界を動的に拡張できる高度な相互運用性を提供します。
Standard Schema v1.0統合による簡潔なインターフェース検証
エージェントが実行するツールの入力値をリアルタイムで検証するアーキテクチャも大幅に刷新されました。MCP TypeScript SDK v2は、TypeScriptエコシステムの共通検証仕様であるStandard Schema v1.0を内蔵しています。これにより、Zod、Valibot、ArkTypeなど、どの検証ライブラリを使用しても、別のアダプターや変換レイヤーなしでツールの入力スキーマとして直接活用できます。
かつてはSDK内部に特定のバージョンのZod依存関係が強く結合されており、開発者側のプロジェクトにおけるZodのバージョンとの競合や、JSONスキーマ変換過程でのスキーマ欠落といった依存関係の問題が頻発していました。v2 SDKはStandard Schema規格を満たすオブジェクトであれば何でも inputSchema に即時バインディングするため、こうした恒常的なバージョン競合を完全に解決します。
次は @modelcontextprotocol/server パッケージを使用して、Zodスキーマでツールを登録する例です。
import { McpServer } from "@modelcontextprotocol/server";
import { z } from "zod";
const server = new McpServer({
name: "weather-service",
version: "1.0.0"
});
server.registerTool(
"get_weather",
{
description: "특정 도시의 현재 날씨를 조회합니다.",
inputSchema: z.object({
city: z.string().describe("날씨를 조회할 도시 이름 (예: 서울, 부산)")
})
},
async ({ city }) => {
return {
content: [{ type: "text", text: `${city}의 날씨는 맑음입니다.` }]
};
}
);この方式を活用すると、呼び出し時にクライアントが送信したリクエストボディが、定義したスキーマに合わせて自動的に検証されます。開発者は複雑な手動解析の手順なしに、ハンドラー内部で静的型が保証された入力引数を即座に使用できるため、ランタイムの安定性と開発者体験が劇的に向上します。
分散環境で実現するセキュアなツールインフラ
ステートレスHTTP設計とOAuth 2.1標準のセキュリティ体系を組み合わせたMCP v2.0は、AIエージェントの連携を単純なプロトタイプレベルから、真のエンタープライズ級マイクロサービスアーキテクチャへと引き上げます。
これからは、クライアントに結合された重い連携ロジックの代わりに、独立してスケールアウトが可能でセキュリティが検証された、分散型MCPツールネットワークを構築できるようになります。Vercel AI SDKやLangChainといった主要なエージェントフレームワークがこれを迅速に取り入れているように、ステートレスAPIベースのツールエコシステムの構築は、本格的な本番導入に向けた必須の選択肢となるでしょう。
参考リンク