関連サイト
本書の関連ページが用意されています。
内容紹介
Pythonで一から作るAIエージェント基盤!
MCPの完全理解から、高度なAI連携、セキュアな実装まで。
【日本語版独自】MCP 2.0対応コラム&追加サンプルコード入手可
本書は、AIと外部システムをつなぐ標準仕様Model Context Protocol(MCP)の仕組みを理解しつつ、Pythonコーディングによってサーバーとクライアントを一から構築する実践的技術書です。堅牢でセキュアなAIアーキテクチャを設計したいバックエンド開発者、AIエンジニア、ソフトウェアアーキテクトに最適な一冊です。
本書では、プロトコルの基礎について原書(MCP 1)ベースで解説しながら、日本語版の独自コラムや脚注、追加サンプルコードを通じて、MCP 2.0をフォローしています。「なぜSSEからStreamable HTTPへ移行したのか」「なぜステートレス化されたのか」―プロトコル進化の背景にあるアーキテクチャ設計の意図を浮き彫りにし、原書以上の価値を提供します。
◆最新仕様を含むサーバーとクライアントの構築◆ローカルのSTDIO通信はもちろん、リモート向けのSSEや、MCP 2で標準となったStreamable HTTPといった各種トランスポートを用いた通信の実装をPythonで実践的にコーディング。
◆LLMを組み込んだエージェントの実装◆クライアントにLLMを統合し、ユーザーのプロンプトから「どのMCPサーバーのツールを呼び出すべきか」をLLMに自律的に判断させるエージェントを構築。
◆高度なAI連携フローとMRTRの理解◆
サーバーからクライアント側のLLMにタスクを委譲するフローや、動的対話のフローを実装。さらに、最新仕様であるMRTR(Multi Round-Trip Requests)によるステートレスな対話モデルへの移行についても触れています。
◆セキュアな運用基盤の構築◆本番環境での運用を見据え、Basic認証から、JWTやOAuth 2.1を用いたセキュアな認証・認可ミドルウェアを構築。Pydanticや非同期処理など、Web開発に向けたモダンPythonの手法も習得。
プロトコルのブラックボックスに頼らず、仕組みの根幹から高度なAIインタラクション、エンタープライズ水準のセキュアな運用基盤の構築へと段階的にステップアップ。「本格的な自律型AIシステム」を自分の手で作り上げるための根本的な技術を把握できます。
※本書は『Learn Model Context Protocol with Python: Build agentic systems in Python with the new standard for AI capabilities』の翻訳書です。
書誌情報
- 著者: Christoffer Noring(著), 株式会社クイープ(訳)
- 発行日: 2026-09-24 (紙書籍版発行日: 2026-09-24)
- 最終更新日: 2026-09-24
- バージョン: 1.0.0
- ページ数: 296
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
著者について
Christoffer Noring
最新のWeb技術とAI統合を専門とする開発者兼教育者。Microsoftでエンジニアとして勤務。オックスフォード大学のチューターでもあり、Angular、RxJS、生成AIに関する書籍の著者でもある。約20年のソフトウェア開発経験を持ち、複雑な技術概念をシンプルで分かりやすく解説する点が評価され、世界中の技術カンファレンスで頻繁に登壇。
株式会社クイープ

コンピュータシステムの開発、ローカライズ、コンサルティングを手がけている。最近の訳書に『モダンTransformer モデルの内部構造から、マルチモーダル/RAG/SLMの実装と最適化まで』がある。そのほかに『Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践』『LLM本番システム構築ノウハウ 基礎から実装・運用の方法、アプリ構築の実例まで』などを翻訳(いずれもインプレス発行)。
目次
サンプルコード・正誤表・免責など
献辞
まえがき
はじめに
第1章 Model Context Protocolの意義
- 1.1 これまでの歩み:SOAPからREST、GraphQL、gRPC、そしてMCPへ
- 1.2 標準の必要性
- 1.3 無限の可能性:プロンプトの与え方さえ知っていれば、MCPサーバーの世界は思いのまま
- 1.4 MCPとは何か
- 1.5 本章のまとめと次のステップ
第2章 詳解MCP
- 2.1 MCPを実装しながら学ぶ
- 2.2 MCPにおけるトランスポート
- 2.2.1 STDIOトランスポート
- 2.2.2 MCPの初期化プロセス
- 2.2.3 各種機能のサポート
- 2.2.4 通知、進捗の報告、重要な更新
- 2.2.5 サンプリング:サーバーによるリクエストの完了を支援する
- 2.2.6 SSEトランスポート
- 2.2.7 Streamable HTTP
- 2.3 本章のまとめ
第3章 サーバーの構築とテスト
- 3.1 STDIOサーバー
- 3.2 概念:リソース、ツール、プロンプト
- 3.2.1 リソース
- 3.2.2 ツール
- 3.2.3 プロンプト
- 3.3 ランタイム
- 3.4 サーバーのテスト
- 3.4.1 Inspector
- 3.4.2 cURL
- 3.4.3 テスト
- 3.5 最初のサーバー
- 3.5.1 ステップ1:新しいプロジェクトを作成する
- 3.5.2 ステップ2:依存パッケージをインストールする
- 3.5.3 ステップ3:サーバーコードを追加する
- 3.5.4 ステップ4:Inspectorを使ってサーバーをテストする
- 3.5.5 ステップ5:InspectorのCLIモードを使ってサーバーをテストする
- 3.6 本章のまとめ
第4章 SSEサーバーの構築:動的でリアルタイム性の高いアプリの実現
- 4.1 SSEの概念
- 4.2 SSEサーバーをWebアプリケーションとして構築する
- 4.2.1 Starlette
- 4.2.2 StarletteとMCP
- 4.3 SSEを使ったテスト
- 4.3.1 Inspectorを使ったテスト
- 4.3.2 Webクライアントを使ったテスト
- 4.4 SSEサーバーの構築
- 4.4.1 プロジェクトをセットアップする
- 4.4.2 サーバーコードを追加する
- 4.4.3 機能を追加する
- 4.4.4 サーバーを起動する
- 4.4.5 サーバーをテストする
- 4.5 本章のまとめ
第5章 Streamable HTTP:MCPサーバーのHTTPストリーミング技術
- 5.1 なぜStreamable HTTPは新しい標準になったのか
- 5.2 MCPにおけるStreamable HTTP
- 5.3 再開可能性
- 5.4 通知
- 5.4.1 通知の生成
- 5.4.2 通知の処理
- 5.4.3 Inspectorでの通知
- 5.4.4 再開可能性を持つ通知
- 5.5 Streamable HTTPを使ったサーバーの構築とテスト
- 5.6 サーバーのテスト
- 5.6.1 Inspectorを使ってテストする
- 5.6.2 cURLを使ってテストする
- 5.6.3 通知を処理するクライアントを構築する
- 5.7 再開可能性のテスト
- 5.8 本章のまとめ
第6章 高度なMCPサーバー構築法
- 6.1 なぜこの低レベルなアプローチを使うのか
- 6.2 コンテキストマネージャー
- 6.2.1 contextlibを使ったコンテキストマネージャーの作成
- 6.2.2 コンテキストマネージャーの実装
- 6.3 MCPサーバーのコンテキストマネージャー
- 6.4 低レベルアクセス
- 6.5 アーキテクチャの整理
- 6.5.1 低レベルサーバーでlist_toolsレスポンスを構築する
- 6.5.2 コードを整理し、ツールとスキーマを作成する
- 6.5.3 ツールの呼び出しを処理する
- 6.6 本章のまとめ
第7章 MCPクライアントの構築
- 7.1 クライアントの構築
- 7.2 演習:クライアントを構築する
- 7.2.1 クライアントをサーバーに接続する
- 7.2.2 サーバーの機能のリストを取得する
- 7.2.3 利用する機能を選択する
- 7.2.4 完全なコード
- 7.3 LLMを統合したクライアント
- 7.3.1 LLMを統合する前
- 7.3.2 LLMを統合した後
- 7.4 LLMを利用する
- 7.5 演習:LLMを統合する
- 7.5.1 サーバーの機能のリストを取得する
- 7.5.2 機能のリストをLLMツールに変換する
- 7.5.3 ユーザー入力を管理する
- 7.5.4 クライアントが利用するサーバー機能と送信するパラメータを判断する
- 7.6 本章のまとめ
第8章 MCPサーバーの効果的な利用法
- 8.1 Claude DesktopやVS CodeなどのホストによるMCPサーバーの利用
- 8.1.1 VS CodeでのMCPサポート
- 8.1.2 Claude Desktop
- 8.2 インストールプロセス
- 8.2.1 mcp.jsonファイル
- 8.3 MCPサーバーの追加
- 8.3.1 ステップ1:サーバーをインストールする
- 8.3.2 ステップ2:サーバーを管理する
- 8.3.3 ステップ3:サーバーを利用する
- 8.4 ローカルインストールとグローバルインストール
- 8.5 ヒントとコツ
- 8.5.1 デバッグ
- 8.5.2 トラブルシューティング
- 8.5.3 ツールの管理
- 8.5.4 その他の設定
- 8.6 セキュリティの適用
- 8.7 お勧めのMCPサーバー
- 8.8 本章のまとめ
第9章 サンプリング:サーバーからクライアントへの依頼
- 9.1 サンプリングの目的
- 9.1.1 サンプリングの流れ
- 9.1.2 シナリオ
- 9.1.3 メッセージ
- 9.2 サンプリングの実装
- 9.2.1 サーバー実装
- 9.2.2 クライアント実装
- 9.3 本章のまとめ
第10章 エリシテーション:サーバーからユーザーへの依頼
- 10.1 エリシテーションの目的
- 10.2 エリシテーションの実装
- 10.3 エリシテーションの流れ
- 10.4 JSON-RPCメッセージ
- 10.4.1 リクエストスキーマのデータ型
- 10.5 サーバー側でのエリシテーションの実装
- 10.5.1 VS Codeによるエリシテーションのテスト
- 10.6 クライアント側でのエリシテーションの実装
- 10.7 本章のまとめ
第11章 アプリケーションのセキュリティ対策
- 11.1 Basic認証
- 11.2 Bearerトークン認証
- 11.2.1 MCPサーバーに認証を適用する
- 11.2.2 MCPサーバーを実装し、Webアプリケーションとして起動する
- 11.2.3 ミドルウェアを作成する
- 11.2.4 ミドルウェアをテストする
- 11.3 JWTによるセキュリティの強化
- 11.3.1 JWTはどのように機能するか
- 11.3.2 JWTを作成する
- 11.3.3 JWTを検証する
- 11.3.4 JWTをミドルウェア(およびMCPサーバー)に統合する
- 11.4 OAuth2
- 11.4.1 OAuth 2.1の処理の流れ
- 11.4.2 OAuth 2.1の内部の仕組み
- 11.4.3 OAuth 2.1によるセキュリティに関する総括
- 11.5 本章のまとめ
第12章 MCPアプリケーションの本番環境への導入
- 12.1 アーキテクチャと設計
- 12.1.1 統合パターン
- 12.1.2 ドキュメント化
- 12.1.3 アーキテクチャレビュー
- 12.2 パッケージ化と配布
- 12.2.1 パッケージ化の選択肢
- 12.2.2 配布チャネル
- 12.2.3 セマンティックバージョニングの採用
- 12.3 テスト戦略とデプロイの自動化
- 12.3.1 テスト戦略
- 12.3.2 デプロイの自動化
- 12.4 運用と可観測性
- 12.4.1 可観測性
- 12.4.2 スケーラビリティとレジリエンス
- 12.4.3 監視とフィードバック
- 12.4.4 ガバナンスとコンプライアンス
- 12.4.5 将来を見据えた設計
- 12.5 本章のまとめ
付録A モダンPythonでのWebの構築
- A.1 型ヒントとデータモデリング
- A.1.1 型ヒントを使ってコードを改善する
- A.1.2 Pydanticを追加する
- A.2 asyncとawait
- A.3 Uvicorn:ASGIサーバー
- A.4 コンテキストマネージャー
- A.4.1 contextmanagerデコレータ
- A.5 uv:開発環境マネージャー
