MCP

Model Context Protocol(MCP)最新仕様2025‑2026年の変更ポイントと実装ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

AIエージェント開発、どこから始める?

MCP・Claude・LangGraph…進化が速い領域こそ「体系学習 or 1冊集中」のどちらかを選ぶのが近道です。

▷ プロ講師から体系的に学んで"仕事で使えるAIエンジニア"になりたい人

DMM 生成AI CAMP 学び放題|無料セミナー有り▶

▷ 独学派で、まず1冊を読み込んで手を動かしたいエンジニア

【kindle本】Claude CodeによるAI駆動開発入門 ▶

※スクールは説明会のみでもOK。書籍は紙・電子どちらでも

▶ 実装リファレンスには 【kindle本】実践Claude Code入門が便利です。


スポンサードリンク

1. MCP とは何か ― 背景と現行の仕様概要

Model Context Protocol (MCP) は、AI アシスタントと外部ツール(データベース・検索エンジン・カレンダー API など)のやり取りを 統一された JSON メッセージ形式 で記述できるように設計されたインタフェースです。

  • 目的
  • ベンダーごとに異なるプロンプト構造やツール呼び出し方式を吸収し、クライアント側の実装負荷を低減する。
  • スキーム(JSON Schema)による入力検証で安全性・可観測性を確保する。

  • 現行バージョン

  • 公開されている公式リポジトリは v1.0(2023 年リリース)です。2025 年以降に予定されている v1.2v2.0 の変更点は、現時点ではドラフト段階であり、正式リリースや仕様書の公開は確認できていません(※本稿ではあくまで「将来的な提案」レベルとして記載します)。

注記:本記事に掲載するバージョン情報は、公式サイト・GitHub リポジトリで公表された内容に基づきます。未確定の仕様(例: v1.2v2.0)については「将来の方向性」として扱い、実装時には必ず最新の公式ドキュメントを参照してください。


2. MCP の主要コンポーネント

コンポーネント 説明 必須フィールド
messages 会話履歴(system, user, assistant)を順序通りに格納する配列。 role, content
tool_calls AI が呼び出す外部ツール情報(名前と引数)。MCP 1.0 ではオプションですが、将来的には標準化が検討されています。 name, arguments
$schemaVersion スキーマのバージョンを明示するメタフィールド。2026 年版ドラフトで導入予定です(実装は任意)。 文字列

2‑1. メッセージ構造(TypeScript 型定義)

ポイントMessage.content の長さや ToolCall.arguments の深さは、実装側で 上限を設ける ことが推奨されます。過剰なデータは JSON Schema バリデーションでエラーになるだけでなく、外部 AI API のリクエストサイズ制限に引っかかります。


3. 開発環境の構築手順

3‑1. Node.js & TypeScript のインストール

手順 コマンド / 操作
1️⃣ Node.js(≥20)を公式サイトからダウンロードしインストール https://nodejs.org/ja
2️⃣ バージョン確認 node -vnpm -v
3️⃣ TypeScript をグローバルにインストール bash npm install -g typescript && tsc --version

3‑2. プロジェクト雛形の作成

3‑3. Docker Desktop の導入(ローカルコンテナ実行用)

OS ダウンロード URL
Windows / macOS https://www.docker.com/products/docker-desktop
Linux (Ubuntu) sudo apt-get install docker.io (公式リポジトリ経由)

インストール後、以下で動作確認:


4. TypeScript で構築する MCP サーバー ― 実装ガイド

4‑1. JSON Schema バリデーションのセットアップ

公式 SDK @mcp/sdk が提供する validateMcpRequest は、draft‑2020‑12 に準拠したスキーマ検証を内部で行います。以下は型安全にラップしたユーティリティです。

4‑2. Express アプリ本体

4‑3. OpenAI 呼び出しラッパー(エラーハンドリング強化版)

4‑4. エントリーポイント(本番実行用)


5. テスト戦略 ― 手動・自動テストのベストプラクティス

5‑1. curl / HTTP クライアントからの手動検証

  • 期待結果:ステータス 200、レスポンスに role: "assistant"content が含まれる。
  • 失敗例$schemaVersion を省略した場合は 400 でエラーメッセージが返る。

5‑2. Jest + SuperTest によるユニットテスト

ポイント
- テストは外部 AI API に依存しないよう必ずモック化する。
- バリデーションロジックの網羅的テスト(必須項目欠如、型不一致、サイズ超過)を追加すると安心です。

5‑3. デバッグ時に役立つチェックリスト

症状 原因例 確認手順
400 Bad Request – スキーマエラー $schemaVersion 欠如、messages が配列でない console.debug(JSON.stringify(req.body, null, 2)) → JSON Schema Validator(オンライン)で検証
401 Unauthorized – API キー不正 環境変数未設定・キーに余計な空白 node -e "console.log('key:', process.env.OPENAI_API_KEY)"
504 Gateway Timeout 外部 AI の応答遅延 SDK の timeout 設定を 30 s に上げ、リトライロジック(axios-retry 等)を実装
500 Internal Server Error – 未捕捉例外 コード内で throw したままキャッチしていない try/catch 範囲を広げ、エラーログにスタックトレースを出力

6. Docker 化とクラウドデプロイ ― 本番環境への移行手順

6‑1. マルチステージビルドの Dockerfile

ビルド・起動コマンド

6‑2. 主なクラウドプラットフォームへのデプロイ手順

プラットフォーム 手順概要
AWS (ECS/Fargate) 1️⃣ ECR リポジトリ作成 → docker tagdocker push
2️⃣ ECS タスク定義でコンテナイメージと環境変数(Secrets Manager 推奨)を設定。
3️⃣ ALB で HTTPS 終端し、ターゲットポート 3000 に転送。
Google Cloud Run gcloud builds submit --tag gcr.io/<PROJECT>/mcp-server → Cloud Run デプロイ時に「認証なし」または IAM ベースのアクセス制御を選択。
シークレットマネージャーで API キーを注入し、HTTPS が自動的に有効化されます。
Azure Container Apps ACR にプッシュ → Container Apps で「Ingress: External」設定、環境変数は Azure Key Vault 経由で渡す。

セキュリティチェックリスト(共通)

  • API キーの管理
  • 環境変数ではなく シークレットマネージャ → コンテナ起動時に注入。
  • 定期的なローテーションと最小権限設定を徹底。

  • TLS / HTTPS

  • 本番は必ずロードバランサ/クラウドサービスが提供する TLS 終端を利用。コンテナ内部は HTTP のみで OK。

  • 入力サイズ制限

  • express.json({ limit: '1mb' }) に加えて、スキーマ側でも maxLength / maxItems を設定。

  • ロギング & モニタリング

  • 標準出力に構造化 JSON ログを出す → CloudWatch Logs / GCP Logging が自動収集。
  • エラーレート・レイテンシは Prometheus メトリクスまたは各クラウドのメトリックサービスでアラート設定。

  • 最小権限実行ユーザー

  • Dockerfile の USER node(UID 1000)により root 権限を排除。
  • 必要なファイルシステムは読み取り専用マウント (--read-only) を検討。

7. 将来的な拡張方向(※公式未確定情報)

想定される拡張 現在の課題 実装上の留意点
スキーマバージョニング ($schemaVersion) の必須化 バックワード互換性が曖昧になる恐れ 旧バージョンを受け入れるラッパー層を設置し、v1.xv2.0 を自動変換
tool_calls の標準化(名前空間、認証情報の埋め込み) 各ベンダーが独自実装で相互運用性が低下 JSON Schema で「tool‑registry」参照を必須にし、中央管理サーバで検証
ストリーミング応答(SSE / WebSocket) 現行は単発レスポンスのみ Express の res.write と SSE ヘッダー (Content-Type: text/event-stream) を組み合わせる実装を別モジュール化

これらは 公式リリースが確定した段階で 再度コードベースに取り込むことを推奨します。現時点では 互換性の高い v1.0 に準拠した実装で十分です。


8. まとめ

  • MCP は JSON Schema に基づく型安全なインタフェース であり、AI とツール呼び出しを統一的に扱える点が最大の魅力です。
  • 本稿では 公式 v1.0 スペック をベースに、実装上必要な型定義・バリデーション・エラーハンドリングを具体例として示しました。
  • 開発フローは「ローカル環境 → Docker コンテナ化 → クラウドデプロイ」の三段階で構築し、シークレット管理・TLS・非 root 実行 といったセキュリティベストプラクティスを必ず組み込んでください。
  • 未確定の将来仕様(v1.2 / v2.0)については 公式情報が公開されたら再評価 し、必要に応じてコードやデプロイ設定を更新します。

次のステップ:リポジトリをクローンしたら npm run build && npm start でローカルサーバを起動し、上記 curl コマンドで動作確認。その後 Docker イメージ化 → お好みのクラウドへデプロイ、と段階的に進めるとスムーズです。


本稿の情報は執筆時点(2026 年 5 月)における公式リソースを基に作成しています。実装前には必ず最新版の MCP ドキュメントをご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

AIエージェント開発、どこから始める?

MCP・Claude・LangGraph…進化が速い領域こそ「体系学習 or 1冊集中」のどちらかを選ぶのが近道です。

▷ プロ講師から体系的に学んで"仕事で使えるAIエンジニア"になりたい人

DMM 生成AI CAMP 学び放題|無料セミナー有り▶

▷ 独学派で、まず1冊を読み込んで手を動かしたいエンジニア

【kindle本】Claude CodeによるAI駆動開発入門 ▶

※スクールは説明会のみでもOK。書籍は紙・電子どちらでも

▶ 実装リファレンスには 【kindle本】実践Claude Code入門が便利です。


-MCP