エンジニア選書 MCPサーバー開発大全 ――独自サーバーの実装から自動テストの構築まで
-
岡翔子 著
高山洪銘,餌打優太 監修 - 定価
- 3,300円(本体3,000円+税10%)
- 発売日
- 2025.11.25
- 判型
- B5変形
- 頁数
- 280ページ
- ISBN
- 978-4-297-15327-4
サポート情報
概要
MCP(Model Context Protocol)は、LLM(大規模言語モデル)とツールを連携させる革新的なプロトコルとして急速に普及しています。MCPによって、AIエージェントに各種のタスクを任せることが現実になりました。
同時に重要性を増しているのが、自サービスのMCPサーバーを完備してAIフレンドリーにすることです。サービスやデータベースは「AIから使えるかどうか」によってその価値が大きく変わります。
本書はMCPの基礎概念からMCPサーバー開発のための環境構築、基本的な実装、複雑なドメインヘの応用、そして品質保証を扱います。書籍内では実例として、初歩的な天気予報サーバーや、実践的な社内ドキュメントサーバーを作成します。
また、著者が独自に考案した「4層テスト戦略」は、従来のAPIテストでは対応困難なMCP特有の課題に対する解決策を提示します。さらにはCI/CDおよび自動テストの構築という運用面まで、MCPサーバー開発のすべてを学べる1冊です!
こんな方にオススメ
- 実践的なMCPサーバーを作りたい方
- 自身や自社の持つデータ資源をAIエージェントに活用させたい方
- LLMが介在するシステムのテストや品質保証に関心のある方
目次
第1章 MCPサーバー開発の基礎知識
- 1.1 MCPとは何か
- 1.1.1 MCPの概要
- 1.1.2 MCP の全体像:プロトコル、クライアント、サーバーの関係
- 1.1.3 MCPの3つの主要コンポーネント
- 1.1.4 従来のAPI連携との違い
- 1.1.5 従来の課題とMCPの特長
- 1.1.6 LLMエコシステムにおけるMCP
- 1.1.7 MCPが解決する課題
- 1.1.8 実用例とユースケース
- 1.1.9 主要な実装言語とライブラリ
- 1.2 MCPサーバーの基本アーキテクチャ
- 1.2.1 サーバー・クライアント間の通信フロー
- 1.2.2 関数定義とスキーマ設計
- 1.2.3 エラーハンドリングの基本概念
- 1.3 開発環境の構築
- 1.3.1 Python環境のセットアップ
- 1.3.2 MCPライブラリのインストール
- 1.3.3 プラットフォーム別の注意事項
- 1.3.4 開発ツールと推奨エディタ設定
- 1.3.5 デバッグ環境の構築
- 1.4 まとめ
第2章 MCPアーキテクチャの理解
- 2.1 MCPプロトコルの全体像
- 2.1.1 クライアント・サーバーモデルの詳細
- 2.1.2 JSON-RPCベースの通信仕様
- 2.1.3 stdioとSSEの使い分け
- 2.1.4 メッセージフロー
- 2.1.5 その他の通信
- 2.2 MCPサーバーの設計パターン
- 2.2.1 シンプルラッパーパターン:単一APIをそのまま呼び出す場合
- 2.2.2 カスケード処理パターン:複数APIを統合して使用する場合
- 2.2.3 ナレッジベースパターン:内部情報を提供する場合
- 2.2.4 ステートフルパターンvsステートレスパターン
- 2.2.5 各パターンの使い分け
- 2.3 MCPサーバーのスケーラビリティ
- 2.3.1 ステートレス設計の重要性
- 2.3.2 キャッシュ戦略の理論的背景
- 2.4 セキュリティアーキテクチャ
- 2.4.1 認証と認可の分離
- 2.4.2 APIキー管理のベストプラクティス
- 2.4.3 レート制限の実装戦略
- 2.4.4 プライバシー保護:ログに何を記録すべきか/すべきでないか
- 2.4.5 マルチテナンシーにおけるデータ分離
- 2.5 他のプロトコル・アーキテクチャとの比較
- 2.5.1 REST API、gRPC、GraphQLとの違い
- 2.5.2 Function Calling/Tool Useとの関係性
- 2.5.3 MCPの強み
- 2.5.4 MCPの制約:何に向いていて、何に向いていないか
- 2.6 まとめ
第3章 基本的なサーバー実装
- 3.1 公式サンプルの解析
- 3.1.1 MCPサーバーを立てて使ってみよう
- 3.1.2 公式サンプルコードの詳細解説
- 3.1.3 公式サンプルコードの特徴
- 3.1.4 コード構造の理解
- 3.1.5 エラーハンドリングの階層
- 3.1.6 実装パターンの抽出
- 3.2 HTTP APIとの連携
- 3.2.1 APIキー管理の実践的手法
- 3.2.2 ハードコーディングの危険性と対策
- 3.2.3 レート制限への対応
- 3.2.4 MCPサーバーでのレート制限対策の実装
- 3.3 天気予報MCPサーバーの構築
- 3.3.1 Open Weather Map APIの登録とセットアップ
- 3.3.2 基本的な天気取得機能の実装
- 3.3.3 Claude for Desktopでの動作確認
- 3.4 まとめ
第4章 複雑なサーバー設計
- 4.1 複雑な処理フローの設計
- 4.1.1 複数APIの連携パターン
- 4.1.2 複数API連携の戦略
- 4.1.3 処理順序の最適化
- 4.1.4 データ依存関係の管理
- 4.1.5 キャッシュとデータの鮮度管理
- 4.1.6 データ変換パイプライン
- 4.2 実例:過ごし方提案MCPサーバー
- 4.2.1 chillax-mcp-serverのシステム全体像
- 4.2.2 chillax-mcp-serverのコードの全体構造
- 4.2.3 chillax-mcp-serverの設計
- 4.2.4 カスケード処理のアーキテクチャパターン
- 4.2.5 本番環境を想定した実装
- 4.2.6 パフォーマンスとコスト最適化
- 4.2.7 運用監視とトラブルシューティング
- 4.2.8 セキュリティとマルチテナンシー
- 4.3 応用:社内ドキュメントサーバー
- 4.3.1 Claude CodeとMCPサーバーの連携
- 4.3.2 DocuMentorを動かしてみよう
- 4.3.3 DocuMentorの機能を体験する
- 4.3.4 DocuMentorをカスタマイズする
- 4.3.5 MCPサーバー開発のベストプラクティス
- 4.4 スケーラビリティとパフォーマンス
- 4.4.1 非同期処理の活用
- 4.4.2 キャッシュ戦略
- 4.4.3 メモリ管理とリソース最適化
- 4.4.4 パフォーマンスの測定と最適化
- 4.5 設定管理とデプロイメント
- 4.5.1 環境別設定の管理
- 4.5.2 コンテナ化とデプロイ戦略
- 4.5.3 運用時の監視ポイント
- 4.6 まとめ
第5章 MCPサーバーのテスト戦略
- 5.1 4層テスト戦略
- 5.1.1 なぜMCPテストが難しいのか
- 5.1.2 LLMが介在する非決定性
- 5.1.3 現状のテスト手法の限界
- 5.1.4 4層テスト戦略の概要
- 5.2 Layer 1:単体テストの実装
- 5.2.1 関数単位のテスト設計
- 5.2.2 モック化とスタブの活用
- 5.2.3 テストデータの準備
- 5.3 Layer 2:プロトコルテストの実装
- 5.3.1 MCPプロトコルレベルのテスト
- 5.3.2 通信フローの検証
- 5.3.3 エラーケースの網羅
- 5.4 Layer 3:カスケードテストの実装
- 5.4.1 複数API連携のテスト戦略
- 5.4.2 データ依存関係の検証
- 5.4.3 パフォーマンステスト
- 5.4.4 エラー伝播とリカバリー
- 5.5 Layer 4:E2Eテストの実装
- 5.5.1 なぜE2Eテストが必要なのか
- 5.5.2 LLM統合がもたらす課題
- 5.5.3 E2Eテストの基本アプローチ
- 5.5.4 意味的一致の評価手法
- 5.5.5 非決定性への対応策
- 5.5.6 フォールバック戦略のテスト
- 5.5.7 実践的なE2Eテストシナリオ
- 5.6 まとめ
第6章 CI/CD統合
- 6.1 GitHub Actionsでの自動テスト
- 6.1.1 ワークフロー設定
- 6.1.2 環境変数とシークレット管理
- 6.1.3 並列テスト実行
- 6.2 テストカバレッジの測定と改善
- 6.2.1 カバレッジツールの導入
- 6.2.2 品質メトリクスの設定
- 6.2.3 継続的改善プロセス
- 6.3 デプロイメント自動化
- 6.3.1 段階的デプロイ戦略
- 6.3.2 ロールバック機能
- 6.3.3 本番環境での監視
- 6.4 その他の品質保証のベストプラクティス
- 6.4.1 ドキュメント管理
- 6.4.2 継続的な品質改善
- 6.4.3 セキュリティとコンプライアンス
- 6.5 まとめ
プロフィール
岡翔子
大阪在住。AWSジャパンを経て現在はLINEヤフー株式会社でエンジニアとして勤務。LLMの応答に関する論文執筆経験をもち、個人でMCPサーバーの開発を行っている。趣味は読書と現代美術鑑賞。X:@0xshooka
高山洪銘
どちらかといえばソフトウェアエンジニア。モバイルアプリケーション開発やSDK開発のほか、ソフトウェアテストの自動化にも長年従事。近年は開発者支援や組織的なナレッジ共有にも注力する傍ら、機械学習やデータ分析にも関心を持ち、一部のAI作曲コンテスト等にも出没している。
餌打優太
LINEヤフー株式会社でエンジニアとして勤務。LINE公式アカウントのMCP Server(line-bot-mcp-server)の立ち上げを行う。また、株式会社Bocekでエンジニアリングマネージャーを務める。ポートフォリオ:https://euchi.jp
