MCP採用の拡大: エンタープライズMCP導入をシンプル、安全、低コストにするための参照アーキテクチャ
2026-04-14 Sharon Goldberg Matt Carey Ivan Anguiano 10分読了
Cloudflareでは、Model Context Protocol (MCP)をAI戦略の中核として積極的に採用しています。この転換は工学部門を超えて広がり、製品、営業、マーケティング、財務チームの従業員が日々のタスクの効率化を推進するためにエージェントワークフローを使用しています。
しかし、MCPを使用したエージェントワークフローの採用には、セキュリティリスクが伴います。これには認可の拡散、プロンプトインジェクション、サプライチェーンリスクなどが含まれます。この広範な企業全体の採用を保護するため、Cloudflare One (SASE)プラットフォームとCloudflare Developerプラットフォームの両方からセキュリティコントロールスイートを統合し、ワークフォースの速度を落とさずにMCPを使用したAI使用を管理しています。
このブログでは、MCPワークフローを保護するための独自のベストプラクティスを紹介し、プラットフォームの異なる部分を組み合わせて、自律型AIの時代のための統一されたセキュリティアーキテクチャを作成します。また、エンタープライズMCP導入をサポートする2つの新しいコンセプトを共有します:
- Code Mode with MCP server portalsを立ち上げ、MCP使用に関連するトークンコストを大幅に削減します
- Cloudflare Gateway for Shadow MCP detectionの使用方法を説明し、認可されていないリモートMCPサーバーの使用を検出します
また、MCPを導入するための組織的なアプローチと、リモートMCPサーバー、Cloudflare Access、MCP server portals、AI Gatewayを含むCloudflareプロダクトを使用してMCPセキュリティアーキテクチャを構築した方法についても説明します。
リモートMCPサーバーはより良い可視性と制御を提供
MCPはオープンスタンダードで、開発者がAIアプリケーションと必要なデータソースの間に双方向接続を構築できるようにします。このアーキテクチャでは、MCPクライアントはLLMまたは他のAIエージェントとの統合ポイントであり、MCPサーバーはMCPクライアントと企業リソースの間に位置します。MCPクライアントとMCPサーバー間の分離により、エージェントは目標を自律的に追求し、アクション実行できる一方で、AI (MCPクライアントで統合)と企業リソースの認証情報およびAPI (MCPサーバーで統合)の間に明確な境界を維持できます。
Cloudflareのワークフォースは、プロジェクト管理プラットフォーム、内部wiki、ドキュメント、コード管理プラットフォームなど、様々な内部リソースの情報にアクセスするためにMCPサーバーを常に使用しています。
早い段階で、ローカルホストMCPサーバーはセキュリティ上の負債であることに気付きました。ローカルMCPサーバーの導入は、未検証のソフトウェアソースとバージョンに依存する可能性があり、サプライチェーン攻撃またはツールインジェクション攻撃のリスクが増加します。また、IT およびセキュリティ管理者がこれらのサーバーを管理することを防ぎ、個々の従業員と開発者が実行するMCPサーバーと更新方法を選択することになります。これは負け戦です。
代わりに、Cloudflareには企業全体のMCPサーバー導入を管理する集中チームがあります。このチームは、monorepo内に共有MCPプラットフォームを構築し、デフォルトで管理されたインフラストラクチャを提供しています。従業員がMCP経由で内部リソースを公開したい場合、まずAIガバナンスチームから承認を得て、テンプレートをコピーし、ツール定義を記述して導入します。その過程で、デフォルト拒否の書き込みコントロール、監査ログ、自動生成されたCI/CDパイプライン、シークレット管理を継承します。つまり、新しい管理されたMCPサーバーを立ち上げるのは数分のスキャフォルディングです。ガバナンスはプラットフォーム自体に組み込まれており、これが採用の急速な拡大を可能にしました。
CI/CDパイプラインは、Cloudflareの開発者プラットフォーム上のカスタムドメイン上のリモートMCPサーバーとしてそれらを導入します。これにより、従業員がどのMCPサーバーを使用しているかを可視化できる一方で、ソフトウェアソースに対する制御を維持できます。さらに、Cloudflareの開発者プラットフォーム上のすべてのリモートMCPサーバーは、グローバルなデータセンターネットワーク全体に自動的に導入されるため、MCPサーバーは世界中のどこにいる従業員でも低レイテンシーでアクセスできます。
Cloudflare Accessは認証を提供
一部のMCPサーバーは、Cloudflareドキュメント MCPサーバーやCloudflare Radar MCPサーバーなどの公開リソースの前に位置しており、誰でもアクセスできるようにしたいと考えています。しかし、ワークフォースが使用するMCPサーバーの多くは、プライベート企業リソースの前に位置しています。これらのMCPサーバーは、認可されたCloudflare従業員以外の誰もがアクセスできないようにするため、ユーザー認証が必要です。
これを実現するため、MCPサーバーのmonorepoテンプレートはCloudflare AccessをOAuthプロバイダーとして統合しています。Cloudflare Accessはログインフローを保護し、リソースへのアクセストークンを発行しながら、エンドユーザーのシングルサインオン (SSO)、多要素認証 (MFA)、およびIPアドレス、場所、デバイス証明書などの様々なコンテキスト属性を検証するアイデンティティアグリゲータとして機能します。
MCP server portalsはディスカバリーとガバナンスを一元化
MCP server portalsはすべてのAIアクティビティのガバナンスと制御を統一します。リモートMCPサーバーの数が増えるにつれて、新しい課題に直面しました: ディスカバリーです。すべての従業員 (特にMCPに新しい従業員)が、利用可能なすべてのMCPサーバーを簡単に見つけて操作できるようにしたいと考えていました。MCP server portalsプロダクトは便利なソリューションを提供しました。
従業員はMCPクライアントをMCP server portalに接続するだけで、ポータルは彼らが使用を認可されているすべての内部およびサードパーティMCPサーバーを即座に表示します。これ以上に、MCP server portalsは集中ログ、一貫したポリシー実行、データ損失防止 (DLPガードレール)を提供します。
管理者は誰がどのMCPポータルにログインしたかを確認でき、個人識別情報 (PII)などの特定のデータが特定のMCPサーバーと共有されるのを防ぐDLPルールを作成できます。また、ポータル自体へのアクセス権を持つユーザーを制御し、各MCPサーバーからどのツールを公開すべきかを制御するポリシーを作成することもできます。
例えば、財務グループに属する従業員のみがアクセス可能で、内部コードリポジトリの前のMCPサーバーの読み取り専用ツールのみを公開するMCP server portalを設定できます。一方、企業ラップトップ上にいるエンジニアリングチームの従業員のみがアクセス可能な別のMCP server portalは、コードリポジトリMCPサーバーへのより強力な読み取り/書き込みツールを公開できます。
MCP server portalアーキテクチャの概要は上記に示されています。ポータルはCloudflareでホストされているリモートMCPサーバーと、他の場所でホストされているサードパーティMCPサーバーの両方をサポートしています。このアーキテクチャを独自に高性能にするのは、これらすべてのセキュリティおよびネットワーキングコンポーネントがグローバルネットワーク内の同じ物理マシン上で実行されることです。従業員のリクエストがMCP server portal、CloudflareホストのリモートMCPサーバー、Cloudflare Accessを通過する場合、トラフィックは同じ物理マシンを離れる必要がありません。
Code Mode with MCP server portalsはコストを削減
数ヶ月間の大量MCPデプロイメント後、かなりのトークンを消費してきました。また、ほとんどの人がMCPを間違った方法で行っていると考え始めました。MCPへの標準的なアプローチでは、MCPサーバー経由で公開されるすべてのAPI操作に対して個別のツールを定義する必要があります。しかし、この静的で網羅的なアプローチは、特に数千のエンドポイントを持つ大規模プラットフォームの場合、エージェントのコンテキストウィンドウをすぐに消費します。
以前、Cloudflare MCPサーバーを強化するためにサーバー側Code Modeを使用した方法について書きました。これにより、Cloudflare APIの数千のエンドポイントを公開しながら、トークン使用量を99.9%削減できました。Cloudflare MCPサーバーは2つのツールのみを公開します: 検索ツールはモデルがJavaScriptを記述して利用可能なものを探索できるようにし、実行ツールはモデルがJavaScriptを記述して見つけたツールを呼び出すことができるようにします。モデルは事前にすべてを受け取るのではなく、必要に応じて発見します。
このパターンが気に入ったので、すべての人が利用できるようにする必要がありました。したがって、MCP server portalsで「Code Mode」パターンを使用する機能を立ち上げました。これで、すべてのMCPサーバーを、監査コントロールと段階的なツール開示を実行する一元化されたポータルで前面に配置し、トークンコストを削減できます。
仕組みは次の通りです。すべてのツール定義をクライアントに公開する代わりに、すべての基盤となるMCPサーバーは2つのMCPポータルツールに折りたたまれます: portal_codemode_searchとportal_codemode_execute。検索ツールは、接続されているすべてのアップストリームMCPサーバーからすべてのツール定義を返すcodemode.tools()関数へのアクセスをモデルに提供します。モデルはJavaScriptを記述してこれらの定義をフィルタリングして探索し、すべてのスキーマがコンテキストに読み込まれることなく必要なツールを正確に見つけます。実行ツールは、各アップストリームツールが呼び出し可能な関数として利用可能なcodemodeプロキシオブジェクトを提供します。モデルはこれらのツールを直接呼び出すJavaScriptを記述し、複数の操作をチェーンし、結果をフィルタリングし、コード内でエラーを処理します。これはすべてDynamic Workersで動作するMCP server portalのサンドボックス環境で実行されます。
Jiraチケットを見つけてGoogle Driveの情報で更新する必要があるエージェントの例を次に示します。まず、適切なツールを検索します:
async () => {
const tools = await codemode.tools();
return tools
.filter(t => t.name.includes("jira") || t.name.includes("drive"))
.map(t => ({
name: t.name,
params: Object.keys(t.inputSchema.properties || {})
}));
}
モデルは、ツールの完全なスキーマがコンテキストに入ることなく、必要な正確なツール名とパラメータを知っています。その後、操作をチェーンするために単一の実行呼び出しを記述します:
async () => {
const tickets = await codemode.jira_search_jira_with_jql({
jql: 'project = BLOG AND status = "In Progress"',
fields: ["summary", "description"]
});
const doc = await codemode.google_workspace_drive_get_content({
fileId: "1aBcDeFgHiJk"
});
await codemode.jira_update_jira_ticket({
issueKey: tickets[0].key,
fields: {
description: tickets[0].description + "\n\n" + doc.content
}
});
return { updated: tickets[0].key };
}
これはわずか2つのツール呼び出しです。最初は利用可能なものを発見し、2番目は作業を行います。Code Modeがない場合、同じワークフローでは、モデルが両方のMCPサーバーからすべてのツールの完全なスキーマを事前に受け取り、3つの個別のツール呼び出しを行う必要があります。
節約を視点に入れましょう: 内部MCP server portalが4つの内部MCPサーバーに接続されている場合、定義だけで約9,400トークンのコンテキストを消費する52のツールを公開します。Code Modeが有効な場合、これら52のツールは約600トークンを消費する2つのポータルツールに折りたたまれ、94%削減されます。そして重要なことに、このコストは固定されたままです。ポータルにより多くのMCPサーバーを接続しても、Code Modeのトークンコストは増加しません。
Code Modeは、URLにクエリパラメータを追加することでMCP server portalで有効化できます。通常のURL (例: https://myportal.example.com/mcp) でポータルに接続する代わりに、?codemode=search_and_executeをURLに付加します (例: https://myportal.example.com/mcp?codemode=search_and_execute)。
AI Gatewayは拡張性とコスト制御を提供
まだ終わりではありません。MCPクライアントとLLM間の接続にAI Gatewayを配置することで、アーキテクチャに接続します。これにより、様々なLLMプロバイダー間を迅速に切り替え (ベンダーロックインを防ぐため)、コスト制御を実行 (各従業員が消費できるトークン数を制限することで) できます。完全なアーキテクチャは下記に示されています。
Cloudflare Gatewayはシャドウ MCPを検出してブロック
認可されたMCPサーバーへの管理されたアクセスを提供したので、認可されていないMCPサーバーに対処することを見てみましょう。