見出し画像

「CLAUDE Desktop とセキュアなMCP AIエージェント (Anthropic)」

11,736 文字

最近のAnthropicによるAI機能と、新しいCLAUDE DesktopおよびセキュアなMCPプロトコルについて見ていきましょう。
数日前、Anthropicは新しいモデルコンテキストプロトコルを発表しました。このプロトコルを使ってAIエージェントを構築できるという話題になりましたが、同時にWindowsやmacOS向けのCLAUDE Desktopも公開されました。この新しいデスクトップアプリの素晴らしい特徴は、ローカルMCPサーバーのサポートを備えていることです。
実際どういうことが起こっているのか見ていきましょう。というのも、AIエージェントで何でも構築できるというわけではなく、むしろ逆なんです。
まず、私たちが知っているOpenAIについて。OpenAIは外部データやサービスとAIモデルが対話できるAPIを提供していますが、各データソースにカスタム実装が必要で、独自のプロトコルを使用しています。これは有料のサービスですね。
次にLangChainについて。これはオープンソースコミュニティと言語モデルを活用したアプリケーション開発のための新しいフレームワークです。複雑なアプリケーション向けに様々なコンポーネントを連携させることに焦点を当てています。しかし、残念ながら普遍的な標準を提供していないため、実装時にスケーラビリティや安定性の課題、さらにはデバッグなどの問題が生じる可能性があります。
そしてAnthropicが戦略的な動きを見せました。独自の普遍的なオープン標準プロトコルを提供し、AIデータソース接続を簡素化、セキュア化、スケール化しようとしています。オープンソースコミュニティが無償でこのプロトコルを採用し、さらに発展させることを期待しているのです。
他のシステムと異なる主なアイデアは、クライアント・サーバーアーキテクチャを実装する必要があるということです。つまりAnthropicの場合、特にCLAUDE Desktopでは、デスクトップアプリをダウンロードしてコンピュータにインストールし、アクセス権を付与した上で、クライアント・サーバーアーキテクチャを構築する必要があります。
MCP Python SDKがあり、これはモデルコンテキストプロトコルのPython実装で、AnthropicのLLMと統合するためのクライアントとサーバーの両方の機能を提供します。標準化された方法でLLMにコンテキストを提供できるようにするものです。
Python SDKは完全なMCP仕様を実装しており、以下のことが可能です:

どのMCPサーバーにも接続できるMCPクライアントの構築
リソース、プロンプト、ツールを公開するMCPサーバーの作成
標準I/OやSSEなどの標準化された転送プロトコルの使用
すべてのMCPプロトコルメッセージとライフサイクルイベントの処理

これがクライアント側とサーバー側のPython実装となります。
LangChainとMCPを比較してみましょう。LangChainは不要になったのでしょうか?いいえ、そうではありません。
LangChainの主な目的は、タスク、モデル、ツールを連鎖させて複雑なAIワークフローを構築するためのフレームワークを提供することです。一方MCPは、アプリケーションと外部システム間の標準化されたセキュアな接続を提供します。これにはツールとデータも含まれます。
LangChainはツール使用とAPIコールを抽象化して組み合わせ可能なワークフローを作成します。MCPは定義されたセキュアなクライアント・サーバーモデルを使用して、リソースとツールへのアクセス制御された接続を安全に行います。
MCPは医療業界や民間企業、重要な個人データを扱うアプリケーションなどで使用することを想定しています。ローカルおよびリモートのリソースやツールにセキュアにアクセスするための普遍的なプロトコルを提供し、アプリケーション間の相互運用性を実現するように設計された完全にオープンで拡張可能なプロトコルです。
UIがデータベース、ファイルシステム、APIなど限られたリソースとやり取りする必要がある場合、新しいMCPはLangChainよりもオーバーヘッドを抑えて処理できます。例えばSQLiteデータベースへのアクセスやファイルシステムからのファイル取得をセキュアに行えます。
Anthropicの戦略的なポジショニングは「セキュア」という言葉にあります。これは商用サービスを市場に提供する企業や、米国政府機関・機関向けの公共サービス市場、さらには非民間の米国機関向けにサービスを展開する際に非常に重要なポイントとなります。例えばペンタゴンにセールスピッチを行う際には、LangChainには提供できないセキュアなシステムであることを強調することができます。
MCPは、セキュアで明確に定義されたリソースとツールへのアクセスが必要なシナリオで真価を発揮します。これは特に金融やヘルスケアなどのコンプライアンス要件の厳しい業界で重要です。取締役会やCEOに対して、このシステムが完全なコンプライアンスリストを持ち、何が起こっているかを理解し、すべてをデバッグできることを証明する必要があるからです。
MCPはローカルファーストのプライバシーとベンダー中立性に焦点を当てており、これがさらに魅力的な特徴となっています。このローカルファーストのプライバシーは、米国政府機関にとって特に重要です。各機関の「ローカル」の定義が異なるためです。例えば、あなたが親の家の地下室にいる場合のローカルとは異なり、米国機関の場合は独自のローカルコンピュータシステムのプライバシーが重要になります。
LangChainは通常、動的なワークフローが必要な場合に使用します。例えば、ユーザーのプロンプトを読み取ってタスクを定義し、データベースやAPIからデータを取得し、テキストの要約やエンティティの抽出、インサイトの生成などの複数の操作を実行し、構造化されたレポート形式で出力する、といった場合です。これがLangChainが得意とする領域であり、私も使用しています。
しかし、企業がグローバル市場でセキュアな運用というラベルで自社を位置づけたい場合、マーケティング的な観点からLangChainは確実にセキュアとは言えません。そこでAnthropicが新しいアイデアを実装したのです。
例えば、あなたがAIプロジェクトのリーダーで、コードを書いてワークフローを管理する必要があり、ローカルデータベース、クラウドベースのAPI、セキュアなファイルシステムなどすべてをセキュアな方法で統合する必要があるとします。Anthropicのペンタゴン向けセールスピッチによると、セキュリティがシステムに組み込まれており、承認された対話のみを許可し、統合は標準化され、単一のプロトコルで無限の可能性とスケーラビリティを提供するフレームワークということになります。
このセキュリティの側面は、金融、民間、非民間のアプリケーションにおいて、新しいプロトコルの主要な差別化要因となっています。
アーキテクチャをより詳しく見ていきましょう。PCにCLAUDE Desktopをインストールすると、その中にはCLAUDE LLM(料金を支払う必要があります)とMCPプロトコルが含まれています。このプロトコルはクライアント・サーバーベースでのみ動作します。
CLAUDE Desktop内には、前述の通りMCPクライアントがあり、各クライアントは特定のMCPサーバーに接続します。例えばSQLiteデータベースへのアクセス用のサーバーや、セキュアなファイルシステム用のサーバーなどです。このMCPクライアントは、コンピュータ上のアプリケーション用のトランスポートレイヤーと共に構築されています。
これはすべてローカルシステム上で動作します。米国政府機関の場合はそのローカルシステム内、親の家の地下室にいる場合はそのローカルPC内ということになります。
なぜこのような構築が必要なのかというと、クライアント・サーバーアーキテクチャを採用しているためです。クライアントとサーバーの両方を構築する必要があります。これから5分ほどで、最初のMCPサーバーを一緒に構築し、特定のタスク用のサーバーを構築するための完全なコードをお見せします。
ホスト、クライアント、サーバーという3つの用語があります。ホストは簡単で、Mac や PC 上の CLAUDE Desktop のような LLM アプリケーションのことです。これらは LLM が外部データを必要とする際に接続を開始します。クライアントはホストアプリケーション内にあり、特定の専用サーバーと1対1の接続を維持します。そしてこれらのサーバーは、クライアントにコンテキスト、ツール、プロンプトを提供します。
実装については、現在2つの可能性があります。私はMCP Python SDKを使用しますが、TypeScript SDKも利用可能だと思います。MCPクライアントを構築してMCPサーバーに接続し、クライアントに特定のリソース、プロンプト、ツールを公開するMCPサーバーを構築します。内部的には標準I/Oを使用し、外部向けにはHTTPを使用します。
ユースケースをいくつか見てみましょう。構造化データをローカルのSQLiteデータベースから取得するAIアシスタント(注意:AnthropicではAIエージェントという言葉はあまり使用されず、AIアシスタントという表現が好まれます)や、特定のGitHubとの統合、外部のGoogle Maps APIを使用して道順を提供するなどです。
Anthropicはオープンソースコミュニティを引き付けるため、MCPプロトコル用のサーバーの参照実装コレクションを提供しています。各MCPサーバーはPythonかTypeScriptで実装されています。公式ドキュメントには右側にリンクがあります。
デモンストレーション用のMCPサーバーと、SQLiteやファイルシステムなどのデータ用に埋められる空のシェルがあります。セキュアなファイル操作には明確な規制されたアクセス制御があります。
LangChainと比較すると、サーバーの構築、クライアントのコーディング、新しいプロトコルとトランスポートレイヤーの管理が必要になりますが、これはセキュアなシステムを実現するためです。
フィーチャーサーバーを見てみましょう。Anthropicのエコシステムにユーザーを引き込むため、CLAUDEのLLMをインターネットに接続したい場合、Brave検索用の特定のMCPサーバーが用意されています。Braveはプライバシーを重視した検索APIを提供していますが、もちろん使用料を支払う必要があります。
サーバーを構築してこれらのMCPサーバーを外部サーバー(Braveはおそらく米国のどこかにあります)に接続します。サーバープロバイダーにサービス料金を支払う必要がありますが、単にそのサービスに接続するだけです。これはOpenAIやOmniなどと比べると、インターネットアクセスが組み込まれていないため、簡単ではありません。これは戦略的なポジショニングなのです。
システムを見ていきましょう。ファイルシステムMCPサーバーの機能には、ファイルの読み書き、ディレクトリの作成・一覧表示・削除、ファイルやディレクトリの移動、ファイルの検索、ファイルメタデータの取得などがあります。サーバーは指定したディレクトリ内の操作のみを許可するため、セキュアで制限されたアクセスが可能です。
CLAUDE Desktopの設定ファイル(config.json)で、ファイルシステム用のMCPサーバーを追加し、接続先を指定するだけです。インターネットに接続したい場合は、Brave検索APIを統合するMCPサーバーの実装を構築する必要があります。
これはウェブ検索とローカル検索の両方の機能を提供し、フィルタリングやフォールバックソリューションなどの機能があります。APIキーを購入して統合する必要があり、無料枠もありますが、システムを本格的に使用する場合はほとんど意味をなしません。CLAUDE Desktopにはクライアント設定をホストする機能があるため、デスクトップのconfig.jsonにBrave検索用のMCPサーバーを追加し、購入したAPIキーを挿入するだけです。
では、アーキテクチャをもっと詳しく見て、実際に何が起こっているのか理解しましょう。あなたのコンピュータ(米国機関の場合はそのシステムやクラスタ、個人の場合はPCやMac)にCLAUDE Desktopをダウンロードし、コンピュータ上のSQLiteデータベースにアクセスするためのSQLite MCPサーバーアーキテクチャを構築します。
CLAUDE Desktop内のLLMとSQLite専用のMCPサーバーの間にはMCPプロトコルがあり、クエリと結果のやり取りを行います。そしてこのサーバーからローカルのSQLiteデータベースにローカルアクセスして、プライベートなローカルデータを扱います。
つまり、好きなエージェントを自由に構築できるわけではなく、むしろその逆で、SQLiteからLLMがリクエストできることを制限するプロトコルサーバーを持つことになります。事前定義されたテンプレートがあり、制限の実装には異なる強度レベルを設けることができます。
CLAUDE Desktopは前述の通りMCPクライアントとして機能し、複数のクライアントを構築する必要があります。次に、ローカルのSQLデータベースへのアクセスを提供するSQLite MCPサーバーを構築します。
Anthropicによると、SQLite MCPサーバーとローカルSQLiteデータベース間の通信は完全にマシン上で行われます。これがAnthropicのアイデアであり、「セキュア」という特徴が市場での他の競合との主な差別化要因となっています。ローカルのSQLiteデータベースはインターネットに公開されず、MCPは明確に定義されたインターフェースを通じて、CLAUDE Desktopが承認されたデータベース操作のみを実行できるようにします。
つまり、エージェントを構築することが目的ではなく、Anthropicが商業・産業顧客、政府顧客、非民間顧客を引き付けるための戦略的なポジショニングとして、引用符付きの「セキュア」なプロトコルを持つことが目的なのです。
別のレベルで見てみましょう。インターネットアクセスなどの外部世界を含めると、CLAUDE Desktop上にIDEやその他のインストールされたツールがあり、ローカルリソース(SQLiteや他の数学的シミュレーションソフトウェア)があり、ニュース機関や気象観測所などへのアクセスが必要になります。
MCPホストはCLAUDE Desktop、IDEs、AIツールなどのプログラムです。MCPクライアントはサーバーと1対1の接続を維持するプロトコルクライアントです。サーバーには既に説明したローカルリソース(データ、ファイル、サービス)と、単なる関数呼び出しやかつてのAPIコールと呼ばれた外部リモートリソースがあります。
簡単な例を見てみましょう。Windowsでサンプルデータベースを作成し、SQLite MCPサーバーに接続します。その方法はすぐにお見せします。ローカルデータベースに対してクエリを実行し(例:100ドル以下の商品を表示など)、結果を表示します。
CLAUDE Desktopアプリでは、「ローカルのSQLデータベースに接続して、利用可能な商品と価格を教えてください」といった質問ができ、このMCPプロトコルレイヤーを通じて応答が得られます。
これにはいくつかの利点があります:

クライアントの複雑さが軽減されます。アプリケーションは「前四半期の売上データを取得」といった高レベルのリクエストを送信し、MCPサーバーが適切なSQLクエリに変換します。
アクセス制御が可能です。MCPサーバーは事前に定義された特定の操作のみを許可し、許可されていないアクセスや悪意のあるコマンドを防ぎます。
データ保護が実現します。MCPサーバーがゲートキーパーとして機能し、機密データがクライアントに直接さらされることを防ぎます。
プロトコル抽象化が提供されます。JSON-RPC 2.0を使用して標準化されたプロトコルで通信を行い、基盤となるデータベースの種類(SQLite、PostgreSQL、MySQLなど)に関係なく、データベースとの対話を統一します。

SQLite MCPサーバーは、データベース操作を提供するモデルコンテキストプロトコルサーバーの実装です。ビジネスインテリジェンス機能を組み込むことができ、SQLクエリの実行、ビジネスデータの分析、インサイトやレポートの生成などが可能です。
Anthropicが現在提供しているSQLite用のツールは6つあります:

クエリの読み取り(データベースからデータを選択するSELECTクエリの実行)
クエリの書き込み(INSERT、UPDATE、DELETEクエリの実行)
テーブルの作成
テーブルの一覧表示
テーブルの説明
メモへのインサイトの追加

これをメインシステム(コンピュータ上で動作するCLAUDE Desktop)に統合するのは簡単で、config.jsonにMCPサーバー(SQLite)のディレクトリとデータベースを追加するだけです。そうすると、MCPプロトコルが起動してローカルマシン上でこれをセキュアにします。
ローカルマシンでこれが必要かと思うかもしれませんが、1万人の従業員と1万台のコンピュータを持つ米国機関や政府機関の場合、このシステムがどのように最適化されているかがわかります。
では、最初のMCPサーバーを構築してみましょう。これまでの説明を聞いて、簡単だと思われるかもしれません。
必要なものをインポートし、MCPサーバーからサーバーをインポートし、types からリソース、ツール、コンテキスト、画像、埋め込み、ロギングをインポートします。例えば気象観測所(OpenWeatherMap)に接続したい場合、そこでAPIキーを購入する必要があります。デフォルトの都市をロンドンに設定し、天気と天気予報を取得します。
次のステップでは、再利用可能なパラメータを作成します。気温、状態、湿度、風速、タイムスタンプなどの天気情報を取得します。そしてリソース関連のハンドラをメイン関数に追加します。
ツール関連のハンドラも追加します。これは1点からデータを取得するだけの簡単な例です。もちろんメイン関数も追加し、エントリーポイントをチェックし、CLAUDE Desktopのconfig.jsonファイルでクラウド設定を更新します。
これで最初のMCPサーバーの構築は完了です。標準I/Oトランスポートを使用していますが、サービスやイベントなどの追加のトランスポートオプションもあります。
Anthropicは開発者の探索を支援するため、Google Drive、GitHub、PostgreSQL、Puppeteerなどの一般的なエンタープライズシステム用の事前構築されたMCPサーバーや空のシェルを共有しています。これらの事前構築されたMCPサーバーはCLAUDE Desktopを通じてインストールできます。
しかし、これらのサーバーは単独では十分ではありません。独自のデータ構造、クエリ、データアーキテクチャがあり、データパイプラインを構築する必要があるためです。そのため、LLM用のセキュアなシステムを持つために、最初のMCPサーバーを構築する必要があります。
今、最も簡単なサーバーを一緒に構築しましたが、これから多くのサーバーを構築することになります。特定のタスクごとに、特定のクライアント・サーバーアーキテクチャとプロトコルレイヤーを自分で構築する必要があります。
もちろん、プロトコルレイヤーについて私以上に詳しい方もいらっしゃると思います。メッセージフレーミング、リクエスト・レスポンスのリンク、高レベルの通信パターンを扱うプロトコルレイヤーと、標準I/OトランスポートやHTTP/SSEトランスポートがあり、すべてのトランスポートでメッセージの交換にJSON-RPC 2.0を使用します。
3種類のメッセージがあります:リクエスト、通知、結果とエラーです。ここでリソースに焦点を当てて、それらが何であり、どのようにコーディングできるかを見てみましょう。サーバーを構築する際には、リソース、ツール、その他すべてをコーディングする必要があるためです。
まずリソースについて。リソースはサーバーからLLMにデータとコンテンツを公開します。各リソースは固有のURIで識別され、テキストまたはバイナリデータを含むことができます。これらのリソースは、MCPサーバーが明確に定義されたインターフェースを通じてクライアントに提供したいあらゆる種類のデータを表します。
ファイルの内容、データベースレコード、APIレスポンス、ライブシステムデータ、スクリーンショット、画像、ログファイルなど、あらゆるデータを含めることができます。実装は簡単で、URI、名前、説明、MIMEタイプだけです。
プロンプトも興味深い特徴です。再利用可能なプロンプトテンプレートとワークフローを作成できます。サーバーが再利用可能なプロンプトテンプレートとワークフローを定義し、クライアントがユーザーやLLMに簡単に提供できるようにします。
より具体的には、MCPのプロンプトは動的な引数を受け入れる事前定義されたテンプレートで、リソースからのコンテキストを含めることができ、複数の対話を連鎖させることができます(LangChain、L-graphなどを思い出してください)。特定のワークフローを好きな方法で導くことができ、UIエレメントやSQLコマンドとして表面化させることができます。
プロンプトの構造のデモ実装例として、gitコミットとコード説明ツールがあります。ツールはサーバーを通じてLLMにアクションを実行させる機能を提供します。これはモデルコンテキストプロトコルの強力なプリミティブで、サーバーが実行可能な機能をクライアントに公開することを可能にします。
ツールを通じて、LLMは外部システムと対話し、計算を実行し、現実世界でアクションを起こすことができます。このツール定義は、特定のツールを使用するAIエージェントに近いものですが、MCPのツールはクライアント・サーバーアーキテクチャを常に持つことを忘れないでください。
ツールの主な特徴は以下の通りです:

クライアントは tools/list エンドポイントを通じて利用可能なツールを一覧表示できます
ツールは tools/call エンドポイントを使用して呼び出され、サーバーが要求された操作を実行して結果を返します
ツールは単純な計算から複雑なAPI対話まで幅広く対応できます

リソースとは異なり、ツールはデータを修正したり外部システムと対話したりできる動的な操作を表します。これが構築する理由です。
簡単な例を見てみましょう:
1行目:サーバーインスタンスを初期化
2行目:この関数をサーバーツール定義関数としてマーク
3行目:サーバーが公開するツールを定義(名前は「calculate_sum」、説明は「2つの数字を足す」、入力スキーマはオブジェクトとプロパティ)
これがサーバーによって公開され、クライアントに「これができます」と伝えます。次に、この関数をツール呼び出しのエンドポイントとしてマークし、ツールの実行を処理します。
具体的には、2つの数字(AとB)が与えられ、A+Bの演算を行い、特定の型とともにテキストコンテンツを返します。これが典型的なツールの使用例です。この関数はサーバーが公開するツールを定義し、「こんにちは、これができます」と伝えます。
ワークフローは非常に単純です:

サーバーが起動し、2つの値の合計を計算するツールを公開
クライアントはツールのリストをクエリして、サーバーが提供する特定のツールを発見
3. クライアントは名前(calculate_sum)と引数(AとB)を渡してcalculate_sumツールを呼び出し
4. サーバー(MCPサーバー)がAとBの合計を計算し、結果を返します
簡単そうに見えますよね。例えば、クライアントが「name: calculate_sum, arguments: a=10, b=20」というリクエストをサーバーに送信すると、サーバーはtype: text、content: 30(A+Bの結果)と応答します。単純な足し算のためにこの複雑なクライアント・サーバーアーキテクチャを構築する必要があるのかと思うかもしれませんが、数値計算、金融演算、シミュレーションなど、より複雑な操作を実行したい場合を想像してみてください。
このレベルのセキュリティが必要な環境で、どのように実現するかがわかると思います。私はクライアント・サーバーアーキテクチャやトランスポートプロトコルの専門家ではありませんが、このシステムを最適化するアイデアはいくつかあります。
サンプリングも興味深い機能です。サーバーがLLMに完了をリクエストできます。つまり、サーバーが「こんにちは、LLMさん、何が起こっているのか教えてください、返事を待っています」と言えるのです。
より正確には、サンプリングはサーバーがクライアントを通じてLLMの完了をリクエストできる強力なMCP機能で、セキュリティとプライバシーを維持しながら洗練されたエージェント的な振る舞いを可能にします。Anthropicのマーケティングスローガンですが、まさに会社とそのモデルのポジショニングが表れています。
サンプリングのフローは簡単なステップです:

サーバーがクライアントにサンプリング作成メッセージリクエストを送信
クライアントがリクエストを確認し、必要に応じて修正
クライアントがLLMからサンプリング
クライアントが完了を確認
クライアントが結果をサーバーに返信

これにより、多くの興味深いアプリケーションを構築できます。次のビデオでより詳しく説明します。サンプリングリクエストは標準のメッセージフォーマットを使用します。
以上が、Anthropicが新しい標準プロトコルとして導入した新しいMCPサーバーアーキテクチャについての洞察です。これが世界中のAIコミュニティで実装される唯一の将来のプロトコルになるかどうかはわかりません。これらのサーバーを構築すること自体が一つの芸術であり、プロトコルがオープンコミュニティによってさらに開発され、新しいレイヤーやアイデア、修正が常に実装されていくと、このMCPクライアント・サーバーアーキテクチャの提案がどのように発展していくか興味深いところです。
OpenAIは2025年初頭に独自のエージェントシステムを発表する予定であり、AWSも新しいエージェントシステムを持ち、Microsoftは既に複数のAIエージェントを使用したエージェントシステムを運用しています。私は12の異なるAIマルチエージェントコミュニティシステムの構築方法を知っています。
これはAnthropicによるCLAUDEモデルへの貢献と言えるでしょう。スタンドアローンアプリケーションとして使用できるだけでなく、CLAUDE Desktopが現在Anthropicによって開発され、オープンソースコミュニティが無償で継続開発することを期待している安全なプロトコルを実装するために不可欠であることを理解していただけたと思います。
商業・産業顧客だけでなく、政府顧客や非民間顧客に対してもセキュアなシステムを提供するというAnthropicの戦略的なポジショニングを見るのは興味深いですね。新しいMCP、このプロトコルクライアント・サーバーアーキテクチャについて基本的な洞察を提供できたと思います。
技術文献を読んでみたり、独自のMCPサーバーを構築してコミュニティのAIシステムの複雑さをさらに発展させるために公開したりするのもいいかもしれません。次回のビデオでは、AWS、OpenAI、その他のマルチエージェント開発プラットフォームについてより詳しく見ていきます。私のチャンネルの新しい登録者になっていただければ幸いです。

いいなと思ったら応援しよう!