>_tech-draft
Mastra AIのアイコン
Mastra AI
動画公開日
タイトル

The State of MCP Auth - Michael Grinich, WorkOS

再生時間

15分 14秒

AI統合の未来を担うMCP(Model Context Protocol)とは?認証とセキュリティの重要性を徹底解説

ポイント

  • MCP(Model Context Protocol)はAI統合の未来を担い、LLMとアプリケーション間の連携を標準化する技術です。
  • 本記事は、MCP導入における最大の課題であるセキュリティ、特にOAuth 2.1を用いた認証とアクセス管理の重要性を掘り下げます。
  • 開発者や企業がMCPの安全な実装と運用を進める上で不可欠な、堅牢なセキュリティモデル構築の知見を提供します。

AI統合の未来を担うMCP(Model Context Protocol)とは?認証とセキュリティの重要性を徹底解説

はじめに

近年、AI技術の進化は目覚ましく、特に大規模言語モデル(LLM)の登場は、アプリケーション開発に新たな可能性をもたらしています。この急速な変化の中で、AI統合の主要なインターフェースとして注目されているのが、MCP(Model Context Protocol)です。

MCPは、LLMがアプリケーションと連携する方法、エージェントが互いに、そして世界と対話する方法、そしてChatGPTのようなアプリケーションがどのように機能するかを根本から支える技術です。実際、ChatGPTアプリケーションは既にMCPを基盤としています。MCPは昨年11月25日に発表されましたが、AIの世界ではこの期間は「100年」にも相当するほど進化が速いです。もしまだMCPに触れていないのであれば、今こそ学習を始めるべき時だと言えるでしょう。

本記事では、MCPがどのようなプロトコルであるか、その基本的な使い方、そして特にその導入において最も困難とされるセキュリティ、特に認証について詳しく解説していきます。

1. MCP (Model Context Protocol) とは何か?

MCPは、従来のコマンドラインインターフェース(CLI)に似ていますが、重要な点で異なります。CLIがAPIエンドポイントや引数によって操作されるのに対し、MCPは根本的に「ツール呼び出し(tool calling)」によって機能します。

例えば、GitHubのCLIツール(gh)を使用してコマンドを実行すると、内部ではGit操作やAPIとの連携が行われます。MCPも同様に、エージェントが特定のツールを呼び出す形で機能しますが、最大の利点は「コンテキスト」をエージェントに提供できる点です。MCPの「C」はまさにこの「コンテキストプロトコル」を意味します。

MCPは、エージェントに対して、プロジェクト、ツール、サービスに関するあらゆる情報をコンテキストとして注入します。これにより、エージェントは状況を理解し、適切な意思決定を行うことが可能になります。これは、CLIのマンページ(--help)が提供するような詳細な情報を、エージェントが直接利用できる状態にすることに例えられます。

このコンテキストは、クラウド体験にも統合されます。例えば、Claude OpusのようなAIチャットサービスでは、MCPサーバーから得られたコンテキストがチャット体験の中に組み込まれ、より賢明な応答やアクションが可能になります。

2. MCPサーバーの構築の基本

MCPサーバーの構築自体は、実はそれほど難しくありません。例として、Pythonで書かれたFast MCPというフレームワークがあります。

# これは概念的なPythonの例です。実際のコードは提供されません。
# @mcp_tool
# def get_feature_flag_status(feature_name: str):
#     """
#     指定された機能フラグのステータスを取得します。
#     feature_name: ステータスを取得したい機能フラグの名前。
#     """
#     pass

この例のように、関数を定義し、その上に特定のデコレータ(例: @mcp_tool)を適用します。そして、その関数が何をするのかを自然言語(英語)で記述するだけです。この自然言語による説明がLLMに公開され、LLMはツールをどのように呼び出し、どのような引数を渡すべきかを理解します。

3. MCPにおけるセキュリティの重要性

MCPプロトコルは比較的新しいため、これまで多くのセキュリティ脆弱性が報告されてきました。これは、開発者たちがまず「コア機能(ツール呼び出しとその構造)」を正しく動作させることに注力してきたためです。これは、初期のインターネットがHTTPSではなくHTTPだった時代と似ています。セキュアな側面が後から追加されるのが一般的であり、MCPもその段階にあると言えるでしょう。

MCPを実運用で展開する上で、最も困難な部分の一つが「セキュリティ」です。具体的には、認証(Authentication)、監査ログ(Audit logs)、内部レジストリ、そしてセキュリティスクリーニングといった要素が挙げられます。MCPサーバーが意図しない動作をしないように検証し、安全性を確保することは非常に重要です。

「間違いを犯すのは人間だが、毎秒1万回間違いを犯すにはコンピューターが必要だ」という有名な言葉がありますが、MCPのエージェントはまさにそれを実行できてしまいます。セキュリティ境界やセキュリティモデルを慎重に検討することは、ツールの定義を行うよりもはるかに難しい課題です。

4. MCPセキュリティの主要な側面

MCPの現実世界でのセキュリティにおいて重要な側面は主に以下の3つです。

4.1. OAuthとアクセス管理

MCPの認証は、OAuth 2.1をベースとしています。OAuth 2.1は、従来のOAuth 2.0とは異なる点が多いため、安易に以前の知識を当てはめることはできません。特に、**OAuth動的クライアント登録(OAuth Dynamic Client Registration)**の使用が必須とされており、これはMCP仕様で完全に承認されています。クライアントを構築する際には、この方法で認証を行う必要があります。

動的クライアント登録は、MCPサーバーが匿名であることができるという素晴らしい機能を提供します。これは標準として約10年間存在していましたが、他のシステムで実装されることはほとんどありませんでした。そのため、この機能に関する豊富なサンプルコードやオープンソースパッケージはまだ少ないのが現状です。

しかし、この動的クライアント登録システムをOIDC(OpenID Connect)のような他のOAuth形式と組み合わせることで、企業が現在も求めているエンタープライズ向けの認証(SSOやSAMLなど)を実現することが可能です。

残念ながら、現在のところ、MCPサーバーの約65%はOAuthをサポートしておらず、代わりにAPIキーを使用して認証を行っています。これはユーザーエクスペリエンスの点で非常に扱いにくいものです。

4.2. レジストリを通じた発見

セキュリティのもう一つの側面は、信頼できるMCPサーバーをユーザーが発見できることです。現在、公式のMCPレジストリが存在します。ユーザーは、信頼できるソースからMCPサーバーをインストールできるように、自身のサービスをこのレジストリに登録することが重要です。

4.3. 監査ログと説明責任

MCPサーバーが何らかのアクションを実行した際に、それが何であったかを把握するための監査ログと説明責任の仕組みは不可欠です。エージェントがバックグラウンドで活動する場合、必ずしも実際のクラウドセッションやChatGPTセッション中に操作が行われるとは限りません。そのため、何がいつ、誰によって行われたのかを記録するログが非常に重要になります。

まとめ

MCP(Model Context Protocol)は、AI統合の未来を形作る上で極めて重要な技術となるでしょう。LLM、エージェント、そしてAIアプリケーションが連携する方法を標準化し、より強力で柔軟なシステム構築を可能にします。

しかし、その導入と普及には「セキュリティ」という大きな課題が伴います。特に、OAuth 2.1に基づく動的クライアント登録システムの実装と、それを通じた堅牢な認証、アクセス管理が成功の鍵を握ります。また、公式レジストリを通じた信頼性の確保、そして監査ログによる説明責任の確立も忘れてはなりません。

MCPの真の可能性を引き出すためには、開発者コミュニティ全体でセキュリティへの意識を高め、より安全な統合方法を確立していくことが求められています。今からMCPを学び、そのセキュリティの側面にも深く理解を深めることが、これからのAI時代において不可欠となるでしょう。

参考動画

How authentication works in MCP | Nickolas Schorsch