HubSpot - AI Studio|HubSpotと生成AIの技術特化メディア

MCPサーバーの構築ガイド|自社データをAIに接続するための設計と実装手順 | StartLink

作成者: 今枝 拓海|2026/03/10 17:40:49

MCP(Model Context Protocol)は、AIモデルと外部データソースを標準化されたプロトコルで接続するためのオープンスタンダードです。2025年3月にAnthropicが公開して以降、OpenAI・Google・Microsoftといった主要AI企業が相次いで採用し、月間9,700万回以上のSDKダウンロードを記録するまでに成長しました。

自社の業務データをAIエージェントから安全に利用するには、MCPサーバーの構築が不可欠です。本記事では、MCPサーバーの設計思想からStreamable HTTPトランスポートの実装、ツール定義のベストプラクティスまでを段階的に解説します。

この記事でわかること

  • MCPサーバーのアーキテクチャと3つの主要コンポーネント(ツール・リソース・プロンプト)の役割が理解できます
  • Streamable HTTPトランスポートを使ったサーバー構築の具体的な手順がわかります
  • ツール定義における入力スキーマ設計とアノテーション設定のベストプラクティスを学べます
  • 認証・認可の実装パターンとOAuth 2.1対応の方法を把握できます
  • 本番環境へのデプロイ時に必要なセキュリティ設定と監視体制の構築方法がわかります

MCPサーバーの基本アーキテクチャ

MCPの3層構造を理解する

MCPサーバーは、AIモデル(クライアント)からのリクエストを受け取り、外部データソースやツールへの橋渡しを行うミドルウェアです。プロトコルはJSON-RPC 2.0をベースとしており、以下の3つのプリミティブで構成されています。

コンポーネント 役割 具体例
ツール(Tools) AIが実行できるアクション データベース検索、API呼び出し、ファイル操作
リソース(Resources) AIが参照できるデータ ドキュメント、設定ファイル、データベースレコード
プロンプト(Prompts) 事前定義されたテンプレート レポート生成テンプレート、分析クエリテンプレート

クライアントとサーバーの通信フロー

MCPの通信は、クライアント(Claude、ChatGPT、Cursorなど)がサーバーに対してinitializeリクエストを送信するところから始まります。サーバーはサポートする機能(capabilities)を返し、クライアントはtools/listで利用可能なツールを取得します。この動的ディスカバリーの仕組みにより、事前のハードコーディングなしにAIが利用可能な機能を把握できます。

Streamable HTTPトランスポートの採用理由

2025年3月のプロトコル更新で、従来のSSE(Server-Sent Events)に代わりStreamable HTTPトランスポートが標準となりました。単一のHTTPエンドポイントでPOSTとGETの両方を処理でき、双方向通信やチャンク転送エンコーディングに対応しています。既存のHTTPインフラ(ロードバランサー、CDN、WAF)との親和性が高いことも、エンタープライズ導入を加速している要因です。

開発環境の準備とプロジェクト構成

必要な開発環境

MCPサーバーの開発には、Node.js(TypeScript)またはPythonが主要な選択肢です。公式SDKはTypeScript版とPython版が提供されており、いずれも@modelcontextprotocol/sdkまたはmcpパッケージとしてインストールできます。

プロジェクトのディレクトリ構成

推奨されるプロジェクト構成は、src/配下にサーバー本体、ツール定義、リソースハンドラーを分離する形です。ツールごとにファイルを分割することで、チーム開発時の競合を防ぎ、テストの粒度を細かくできます。

設定ファイルの管理

MCPサーバーの設定は、接続先のデータソース情報、認証トークン、ログレベルなどを環境変数で管理します。.well-known/mcp.jsonにサーバーのメタデータを配置することで、クライアントが自動的にサーバーを発見できる仕組み(Server Discovery)にも対応できます。

ツール定義の設計と実装

ツールスキーマの設計原則

MCPのツール定義では、1つのツールにつき1つの入力スキーマ(JSON Schema)を定義します。ツール名は英数字とアンダースコアで構成し、説明文(description)にはAIが適切にツールを選択できるよう、具体的なユースケースと制約条件を記述します。

Salesforceの事例では、CRMデータへのアクセスツールを「検索」「取得」「更新」の3つに分割し、それぞれの責務を明確にすることで、AIの判断精度を向上させています。

ツールアノテーションの活用

2025年11月のプロトコル更新で追加されたツールアノテーション機能により、ツールが「読み取り専用(readOnly)」か「データ変更あり(destructive)」かをメタデータとして宣言できるようになりました。これにより、クライアント側でユーザー確認のフローを自動的に挿入するなど、安全性の高いエージェント体験を構築できます。

エラーハンドリングのベストプラクティス

ツールの実行結果はisErrorフラグで成功・失敗を明示します。エラーメッセージはAIが次のアクションを判断できるよう、「何が起きたか」だけでなく「何をすべきか」の情報も含めることが推奨されます。例えば「認証エラー」ではなく「トークンの有効期限が切れています。再認証が必要です」のように記述します。

認証・認可の実装

OAuth 2.1による認証フロー

MCPプロトコルは2025年11月の仕様更新でOAuth 2.1認証を標準サポートしました。クライアントがサーバーに初めてアクセスする際、サーバーは認証が必要なことを通知し、OAuth認可フローを開始します。PKCE(Proof Key for Code Exchange)が必須となっており、認可コードの横取り攻撃を防止します。

スコープベースの権限管理

ツールごとにアクセススコープを定義し、クライアントに対して必要最小限の権限のみを付与する「最小権限の原則」を徹底します。HubSpotのMCPサーバーでは、CRMオブジェクトの読み取りと書き込みを別スコープとして定義し、AIエージェントの操作範囲を厳密に制御しています。

詳しいセキュリティ対策については、MCPのセキュリティリスクと対策で解説しています。

リソースとプロンプトの実装

リソースの定義方法

リソースはURI形式で識別し、AIが参照できるデータを公開します。静的リソース(設定ファイル、ドキュメント)はサーバー起動時に登録し、動的リソース(データベースレコード、APIレスポンス)はリソーステンプレートを使って定義します。

プロンプトテンプレートの活用

プロンプトテンプレートは、特定のワークフローに最適化された入力パターンを事前定義する機能です。たとえば「月次売上レポートの生成」というプロンプトテンプレートを定義しておけば、AIは必要なパラメータ(対象月、部門)を自動的にユーザーに確認し、適切なツールを順番に呼び出します。

本番環境へのデプロイ

インフラ構成の選択

MCPサーバーのデプロイ先は、コンテナ(Docker/Kubernetes)、サーバーレス(AWS Lambda、Cloud Functions)、従来のVMなど、Streamable HTTPに対応していれば自由に選択できます。Cloudflareは自社のWorkers環境でMCPサーバーのホスティングを公式サポートしており、エッジ環境での低レイテンシ運用が可能です。

ヘルスチェックと監視

本番環境では、MCPサーバーのヘルスチェックエンドポイントを設置し、接続先データソースの可用性を定期的に確認します。ツール呼び出しのレイテンシ、エラー率、同時接続数をメトリクスとして収集し、異常時にアラートを発報する体制を整えましょう。

ログ管理とデバッグ

MCPの通信はJSON-RPCベースのため、リクエストとレスポンスのペイロードを構造化ログとして記録できます。ただし、ログにユーザーの機密データが含まれる可能性があるため、PII(個人識別情報)のマスキング処理を実装することが重要です。

実践的な構築事例

Notion社のMCPサーバー構築事例

Notion社は、自社のワークスペースデータをAIエージェントから利用可能にするMCPサーバーを2025年に公開しました。ページの検索・取得・作成・更新に対応するツールを提供し、10,000以上の開発者が自社のワークフロー自動化に活用しています。

Supabase社のデータベースMCPサーバー

Supabase社は、PostgreSQLデータベースへのアクセスをMCPサーバー経由で提供しています。SQLクエリの実行、テーブル定義の取得、マイグレーションの適用といったツールを公開し、AIによるデータベース操作の効率化を実現しました。ただし、2025年中頃にはサービスロールキーの不適切な権限設定に起因するセキュリティインシデントも発生しており、権限管理の重要性が再認識されています。

MCPの基本概念やプロトコルの詳細については、MCPとは何かも併せてご確認ください。

まとめ

本記事では、MCPサーバーの構築方法について、設計思想からStreamable HTTPトランスポートの実装、本番デプロイまでを解説しました。

ポイントを振り返ります。

  • MCPサーバーはツール・リソース・プロンプトの3つのプリミティブで構成され、JSON-RPC 2.0ベースの動的ディスカバリーによりAIエージェントが利用可能な機能を自動把握します
  • ツール定義では1ツール1スキーマの原則に従い、説明文にはAIが適切に選択できるよう具体的なユースケースと制約条件を記述することが重要です
  • OAuth 2.1認証(PKCE必須)とスコープベースの権限管理により、AIエージェントの操作範囲を最小権限の原則で制御します
  • 本番環境ではヘルスチェック・レイテンシ監視・PIIマスキングを含むログ管理体制を整え、Streamable HTTPの特性を活かしたスケーラブルなインフラ構成を選択してください

CRMを活用した業務効率化やAIとの連携に関するご相談は、CRM特化型コンサルティングのStartLinkまでお気軽にお問い合わせください。

よくある質問(FAQ)

Q. MCPサーバーの構築にはどのプログラミング言語が適していますか?

公式SDKはTypeScriptとPythonの2言語で提供されています。Webアプリケーション開発チームにはTypeScript、データサイエンスチームにはPythonが適しています。いずれのSDKもStreamable HTTP、OAuth 2.1、ツールアノテーションなどの最新仕様に対応しています。

Q. MCPサーバーは既存のREST APIと共存できますか?

はい、MCPサーバーは既存のREST APIのラッパーとして構築するのが一般的なパターンです。既存のAPIロジックはそのまま活用し、MCPのツール定義とスキーマ定義のレイヤーを追加することで、AIエージェントからのアクセスを可能にします。

Q. 1台のMCPサーバーで複数のデータソースに接続できますか?

技術的には可能ですが、責務の分離とセキュリティの観点から、データソースごとにMCPサーバーを分割することが推奨されます。MCPクライアントは複数のサーバーに同時接続できるため、ユーザー体験を損なうことなく分割できます。

Q. MCPサーバーのパフォーマンスチューニングで注意すべき点は何ですか?

Streamable HTTPトランスポートでは、コネクションプーリング、レスポンスのストリーミング、適切なタイムアウト設定が重要です。特に大量のデータを返すツールでは、ページネーションを実装してレスポンスサイズを制限し、クライアント側のコンテキストウィンドウを圧迫しないよう設計してください。