MCP採用の拡大:よりシンプルで安全、かつコスト効率の良い企業向けMCP導入のためのリファレンスアーキテクチャ
本文の状態
日本語全文を表示中
詳細モードで約19分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Cloudflare Blog
Cloudflareは、AI戦略の一環としてModel Context Protocol(MCP)を積極的に採用し、エンジニアリング組織を超えて社内全体でエージェントワークフローを活用している。同社は、認可の拡散やプロンプトインジェクションなどのセキュリティリスクに対処するため、企業全体での安全なMCP導入を支援するリファレンスアーキテクチャを提供している。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
Cloudflareでは、Model Context Protocol(MCP)をAI戦略の中核として積極的に採用しています。この取り組みはエンジニアリング組織の枠を超え、製品、営業、マーケティング、財務などの各部門の従業員が、日々の業務効率化のためにエージェント型ワークフローを活用するまでに広がっています。しかし、MCPを用いたエージェント型ワークフローの導入には、セキュリティリスクが伴います。これには権限管理の散逸(authorization sprawl)、プロンプトインジェクション、サプライチェーンリスクなどが含まれます。社全体でのこの広範な採用を安全なものとするため、Cloudflare One(SASE)プラットフォームとCloudflare Developerプラットフォームの両方から一連のセキュリティ制御を統合し、業務速度を落とすことなくMCPによるAI利用をガバナンスできるようにしました。
このブログ記事では、自律型AI時代の統一されたセキュリティアーキテクチャを構築するためにプラットフォームの異なる要素を組み合わせて、MCPワークフローを保護するための当社のベストプラクティスをご紹介します。また、エンタープライズ向けMCP導入を支える2つの新しい概念についても共有します。
MCPサーバーポータルとCode Modeをリリースし、MCP利用に関連するトークンコストを大幅に削減します。
Cloudflare Gatewayを使用してShadow MCPを検出する方法について説明し、認可されていないリモートMCPサーバーの使用状況を把握します。
さらに、当組織がMCPの導入にどのように取り組み、Cloudflare製品(リモートMCPサーバー、Cloudflare Access、MCPサーバーポータル、AI Gatewayなど)を使用してMCPセキュリティアーキテクチャを構築したかについても言及します。
リモートMCPサーバーは、より優れた可視性と制御性を提供します
MCPは、開発者がAIアプリケーションとアクセスが必要なデータソースの間に双方向接続を構築できるようにするオープン標準です。このアーキテクチャでは、MCPクライアントはLLM(大規模言語モデル)やその他のAIエージェントとの統合ポイントであり、MCPサーバーはMCPクライアントと企業リソースの間に位置します。
image
MCPクライアントとMCPサーバーの分離により、エージェントは自律的に目標を追求し行動を取ることができます。同時に、AI(MCPクライアントで統合)と企業リソースの資格情報およびAPI(MCPサーバーで統合)の間には明確な境界が維持されます。
Cloudflareの従業員は、プロジェクト管理プラットフォーム、社内Wiki、ドキュメントおよびコード管理プラットフォームなど、さまざまな内部リソースへのアクセスにMCPサーバーを絶えず使用しています。
非常に初期の段階で、ローカルホスト型のMCPサーバーはセキュリティ上のリスクであることに気づきました。ローカルのMCPサーバー導入では、審査されていないソフトウェアソースやバージョンに依存する可能性があり、サプライチェーン攻撃やツールインジェクション攻撃のリスクが高まります。また、ITおよびセキュリティ管理者がこれらのサーバーを管理できず、どのMCPサーバーを実行し、どのように最新状態を維持するかを個々の従業員や開発者に委ねることになります。これは勝算のないゲームです。

その代わりに、Cloudflareでは社内チームが企業全体のMCPサーバー導入を一元管理しています。このチームは、モノレポ内に標準でガバナンスされたインフラストラクチャを提供する共有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サーバー用モノレポテンプレートには、OAuthプロバイダーとしてCloudflare Accessが統合されています。Cloudflare Accessはログインフローを保護し、リソースへのアクセストークンを発行するとともに、ID集約体として機能し、エンドユーザーのシングルサインオン(SSO)、マルチファクター認証(MFA)、およびIPアドレス、場所、デバイス証明書などのさまざまなコンテキスト属性を検証します。
MCPサーバーポータルによる発見とガバナンスの一元化

MCPサーバーポータルは、すべてのAIアクティビティに対するガバナンスと制御を一元化します。
リモートMCPサーバーの数が増加するにつれ、私たちは新たな壁に直面しました:それは「発見(ディスカバリー)」の問題です。私たちは、すべての従業員(特にMCPに慣れていない新規社員)が、利用可能なすべてのMCPサーバーを簡単に見つけ、活用できるようにしたかったのです。私たちの「MCPサーバーポータル」製品が、このための便利なソリューションを提供しました。従業員は単に自身のMCPクライアントをMCPサーバーポータルに接続するだけで、ポータルが直ちに、彼らがアクセス権を持つ内部およびサードパーティのMCPサーバーをすべて表示します。
さらに、私たちのMCPサーバーポータルは、集中型ログ管理、一貫したポリシーの適用、およびデータ損失防止(DLPガードレール)を提供します。管理者は、誰がどのMCPポータルにログインしたかを確認でき、個人識別情報(PII)などの特定のデータが特定のMCPサーバーと共有されないようにするDLPルールを作成することができます。
また、ポータル自体へのアクセス権限を持つユーザーを制御し、各MCPサーバーからどのツールを公開するかを管理するポリシーを作成することもできます。例えば、社内コードリポジトリの背後にあるMCPサーバーの読み取り専用ツールのみを公開するポータルを、財務グループに所属する従業員のみがアクセスできるように設定できます。一方、エンジニアリングチームの社員が社用ラップトップからアクセスできる別のMCPサーバーポータルでは、コードリポジトリ用のMCPサーバーに対してより強力な読み書きツールを公開することも可能です。
上記は当社のMCPサーバーポータルのアーキテクチャの概要です。このポータルは、Cloudflare上でホストされるリモートMCPサーバーと、その他の場所にあるサードパーティのMCPサーバーの両方をサポートしています。このアーキテクチャが独自に高いパフォーマンスを発揮する理由は、すべてのセキュリティおよびネットワークコンポーネントが、当社のグローバルネットワーク内にある同一の物理マシン上で動作している点にあります。従業員の要求がMCPサーバーポータル、Cloudflareホスト型リモートMCPサーバー、そしてCloudflare Accessを通過する際、そのトラフィックは同一の物理マシンから外に出る必要がありません。
MCPサーバーポータルを使用したコードモードによるコスト削減
高ボリュームのMCPデプロイメントを数ヶ月にわたって実施した結果、私たちは当然のごとく多くのトークンを消費しました。さらに、多くの人がMCPの使い方を誤っていることに気づき始めています。
MCP の標準的なアプローチでは、MCP サーバーを介して公開されるすべての API 操作に対して個別のツールを定義する必要があります。しかし、この静的で網羅的なアプローチは、特にエンドポイントが数千ある大規模なプラットフォームでは、エージェントのコンテキストウィンドウをすぐに枯渇させてしまいます。
以前の記事で、Cloudflare の MCP サーバーを動かすためにサーバーサイドの Code Mode をどのように使用したかについて解説しました。これにより、Cloudflare API の数千のエンドポイントを公開しつつ、トークン使用量を 99.9% 削減することが可能になりました。Cloudflare の MCP サーバーは、わずか 2 つのツールだけを公開しています。検索ツールではモデルが JavaScript を記述して利用可能なリソースを探索でき、実行ツールでは見つけたツールを呼び出すための JavaScript を記述できます。モデルは事前にすべてを受け取るのではなく、必要に応じて必要なものを発見します。
このパターンを非常に気に入ったため、誰もが利用できるようにしました。そこで現在、「Code Mode」パターンを MCP サーバーポータルで使用する機能をリリースしました。これにより、すべての MCP サーバーを中央のポータルでフロントエンド化でき、監査制御と段階的なツール公開を行うことで、トークンコストを削減できます。
動作原理は以下の通りです。すべてのツール定義をクライアントに公開するのではなく、基盤となるMCPサーバーは2つのMCPポータルツール(portal_codemode_search および portal_codemode_execute)に集約されます。検索ツールは、接続されているすべての上位MCPサーバーから取得したツール定義を返す codemode.tools() 関数へのモデルのアクセスを提供します。その後、モデルはJavaScriptを記述してこれらの定義をフィルタリングおよび探索し、コンテキストにすべてのスキーマを読み込むことなく、必要なツールを正確に見つけ出します。実行ツールは、各上位ツールが呼び出し可能な関数として利用可能な codemode プロキシオブジェクトを提供します。モデルはこれらのツールを直接呼び出すJavaScriptを記述し、複数の操作をチェーンしたり、結果をフィルタリングしたり、コード内でエラー処理を行います。これらすべての処理は、Dynamic Workers によって駆動されるMCPサーバーポータル上のサンドボックス環境で実行されます。
Jiraのチケットを検索し、Google Driveからの情報でそれを更新する必要があるエージェントの例を示します。まず、適切なツールを検索します:
// portal_codemode_search
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 || {}) }));
}
モデルは、ツールの完全なスキーマがコンテキストに入る必要なく、必要な正確なツール名とパラメータを把握します。その後、操作をチェーンする単一のexecute呼び出しを記述します:
// portal_codemode_execute
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サーバー(Model Context Protocolサーバー)から提供されるすべてのツールの完全なスキーマを事前に受け取り、その後3回の別々のツール呼び出しを行う必要がありました。
節約効果を数字で見てみましょう。内部のMCPサーバーポータルが、単に4つの社内MCPサーバーと接続されているだけで、52個のツールを公開しており、それらの定義だけで約9,400トークンのコンテキスト(文脈)を消費します。Code Modeを有効にすると、これら52個のツールは約600トークンを消費する2つのポータルツールに圧縮され、94%の削減となります。さらに重要なのは、このコストが固定されることです。ポータルに接続するMCPサーバーが増加しても、Code Modeのトークンコストは増大しません。
Code Mode は、MCP サーバーポータルの URL にクエリパラメータを追加することで有効化できます。通常の URL(例:https://myportal.example.com/mcp)経由でポータルに接続する代わりに、URL に ?codemode=search_and_execute を付加します(例:https://myportal.example.com/mcp?codemode=search_and_execute)。
AI Gateway は拡張性とコスト制御を提供します
私たちの取り組みはここで終わりではありません。MCP クライアントと LLM(大規模言語モデル)の接続間に AI Gateway を配置することで、アーキテクチャに組み込みます。これにより、ベンダーロックインを防ぐためにさまざまな LLM プロバイダ間で迅速に切り替えることができ、また各従業員が消費できるトークン数を制限することでコスト制御を適用できます。完全なアーキテクチャは以下に示されています。
image
Cloudflare Gateway はシャドウ MCP を発見してブロックします
許可された MCP サーバーへの管理されたアクセスを提供したところで、次に認可されていない MCP サーバーへの対処について見ていきましょう。Cloudflare Gateway を使用してシャドウ MCP の検出を行うことができます。Cloudflare Gateway は包括的なセキュア Web ゲートウェイであり、エンタープライズセキュリティチームに対して従業員のインターネットトラフィックに関する可視性と制御を提供します。
Cloudflare Gateway API を使用して、MCP サーバー ポータル経由でアクセスされていないリモート MCP サーバーを検出するための多層スキャンを実行できます。これには、以下の既存の Gateway および Data Loss Prevention (DLP) セレクターを組み合わせて使用することが可能です:
Gateway の httpHost セレクターを使用して、既知の MCP サーバー ホスト名(mcp.stripe.com など)や、ワイルドカード ホスト名パターンによる mcp.* サブドメインを検出します。
Gateway の httpRequestURI セレクターを使用して、/mcp や /mcp/sse といった MCP 固有の URL パスを検出します。
DLP ベースの本文検査を使用して、URI に「mcp」や「sse」といった明らかなキーワードが含まれていない場合でも MCP トラフィックを検出します。具体的には、MCP が HTTP 上で JSON-RPC を使用するという特性を利用し、すべてのリクエストに「tools/call」、「prompts/get」、または「initialize」などの値を持つ「method」フィールドが含まれる点を利用します。以下は、HTTP 本文内の MCP トラフィックを検出するために使用できる正規表現ルールです:
const DLP_REGEX_PATTERNS = [
{
name: "MCP Initialize Method",
regex: '"method"\\s{0,5}:\\s{0,5}"initialize"',
},
{
name: "MCP Tools Call",
regex: '"method"\\s{0,5}:\\s{0,5}"tools/call"',
},
{
name: "MCP Tools List",
regex: '"method"\\s{0,5}:\\s{0,5}"tools/list"',
},
{
name: "MCP Resources Read",
regex: '"method"\\s{0,5}:\\s{0,5}"resources/read"',
},
{
name: "MCP Resources List",
regex: '"method"\\s{0,5}:\\s{0,5}"resources/list"',
},
{
name: "MCP Prompts List",
regex: '"method"\\s{0,5}:\\s{0,5}"prompts/(list|get)"',
},
{
name: "MCP Sampling Create Message",
regex: '"method"\\s{0,5}:\\s{0,5}"sampling/createMessage"',
},
{
name: "MCP Protocol Version",
regex: '"protocolVersion"\\s{0,5}:\\s{0,5}"202[4-9]',
},
{
name: "MCP Notifications Initialized",
regex: '"method"\\s{0,5}:\\s{0,5}"notifications/initialized"',
},
{
name: "MCP Roots List",
regex: '"method"\\s{0,5}:\\s{0,5}"roots/list"',
},
];
The Gateway API supports additional automation. For example, one can use the custom DLP profile we defined above to block traffic, or redirect it, or just to log and inspect MCP payloads. Put this together, and Gateway can be used to provide comprehensive detection of unauthorized remote MCP servers accessed via an enterprise network.
For more information on how to build this out, see this tutorial.
パブリック向けMCPサーバーは、アプリ用AIセキュリティで保護されています
これまで私たちは、社内MCPサーバーへの従業員のアクセスを保護することに注力してきました。しかし、多くの他の組織と同様に、当社の顧客がエージェントを通じてCloudflare製品を管理・運用するために利用する、パブリック向けのMCPサーバーも保有しています。これらのMCPサーバーは、Cloudflareのデベロッパープラットフォーム上にホストされています。(特定の製品用の個別MCPの一覧はここでご覧いただけます。また、Code Modeを使用してCloudflare API全体へのより効率的なアクセスを提供する私たちの新しいアプローチについてもご参照ください。)
私たちは、すべての組織が自社の製品に対して公式かつファーストパーティのMCPサーバーを公開すべきだと考えています。その代替案として、顧客がパブリックリポジトリから審査されていないサーバーを取得するケースがあります。そのようなパッケージには、危険な信頼関係の前提、非開示のデータ収集、およびあらゆる種類の認可されていない動作が含まれている可能性があります。独自のMCPサーバーを公開することで、顧客が使用するツールのコード、更新頻度、セキュリティ姿勢を制御できます。
すべてのリモートMCPサーバーはHTTPエンドポイントであるため、Cloudflare Web Application Firewall (WAF) の背後に配置することができます。顧客はWAF内で「アプリ用AIセキュリティ」機能を有効化し、プロンプトインジェクションの試行、機密データの漏洩、およびトピック分類について、受信MCPトラフィックを自動的に検査することができます。パブリック向けのMCPは、他のWeb APIと同様に保護されます。
エンタープライズにおけるMCPの未来
私たちの経験、製品、および参照アーキテクチャが、MCP の広範な企業全体への導入に向けた独自の取り組みを続ける他の組織にとって有用であることを願っています。
私たちは以下の方法で、自社内の MCP ワークフローを安全に確保しました:
Cloudflare Access を認証手段として使用し、開発者プラットフォーム上でリモート MCP サーバーの構築とデプロイを行うためのテンプレート化されたフレームワークを開発者に提供すること
組織全体の従業員を MCP サーバーポータルに接続することで、認可された MCP サーバーへの安全なアイデンティティベースのアクセスを確保すること
AI Gateway を使用して、従業員の MCP クライアントを動かす大規模言語モデル(LLM)へのアクセスを仲介し、MCP サーバーポータルの Code Mode を使用してトークン消費とコンテキストの肥大化を削減することで、コストを管理すること
Cloudflare Gateway によってシャドウ MCP の使用を発見すること
独自の企業向け MCP 導入を進めている組織に対しては、既存のリモートおよびサードパーティ製 MCP サーバーを Cloudflare MCP サーバーポータルの背後に配置し、Code Mode を有効化して、より安価で安全かつ簡素な MCP の企業向けデプロイメントの恩恵を受けることから始めることを推奨します。
謝辞:
この参照アーキテクチャおよびブログ記事は、Cloudflare 内の多くの異なる役割やビジネスユニットにまたがる多くの人々の作業の成果を表しています。貢献者の一部を以下に列挙します:Ann Ming Samborski、Kate Reznykova、Mike Nomitch、James Royal、Liam Reese、Yumna Moazzam、Simon Thorpe、Rian van der Merwe、Rajesh Bhatia、Ayush Thakur、Gonzalo Chavarri、Maddy Onyehara、および Haley Campbell。
Cloudflare TV で視聴
MCP(Model Context Protocol)の採用を拡大するための当社の参照アーキテクチャは、よりシンプルで安全かつ低コストなエンタープライズ(企業向け)デプロイメントを実現することを目的としています。このアーキテクチャは、大規模な組織が AI モデルと外部データソースやツールを安全かつ効率的に統合するためのベストプラクティスを定義しています。
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み