モデル・コンテキスト・プロトコル:Anthropic Claude DesktopとDockerによるAIアプリの構築の簡素化

Anthropicは最近、AIアシスタントとモデルを信頼性の高いデータやツールに接続するための新しい標準である Model Context Protocol (MCP)を発表しました。 ただし、MCP サーバーのパッケージ化と配布は、複数のアーキテクチャとオペレーティング システムにわたる複雑な環境セットアップのため、非常に困難です。 Dockerは、開発者が開発環境をコンテナにカプセル化し、すべてのチームメンバーのマシンとデプロイメントの一貫性と予測可能性を確保できる、これに最適なソリューションです。 このブログ記事では、Docker を使用して Model Context Protocol (MCP) をコンテナ化し、AI アプリケーションの構築を簡素化する例をいくつか紹介します。 

2400x1260 evergreen docker ブログ c

モデルコンテキストプロトコル(MCP)とは何ですか?

Anthropicがオープンソース化した新しいプロトコルであるMCP(Model Context Protocol)は、LLMアプリケーションが外部のデータソースやツールと統合するための標準化されたインターフェースを提供します。 MCPを使用すると、AIを活用したアプリケーションは、外部ソースからデータを取得したり、サードパーティのサービスで操作を実行したり、ローカルファイルシステムと対話したりできます。

このプロトコルによって可能になるユースケースの中には、カスタムツールをAIモデルに公開する機能があります。 これにより、次のような主要な機能が提供されます。

  • ツールディスカバリー:LLMが実行可能なツールを特定するのを支援します
  • ツール呼び出し:適切なコンテキストと引数で正確な実行を可能にする

リリース以来、開発者コミュニティは特に活気づいています。 AnthropicのテクニカルスタッフメンバーであるDavid Soria Parra氏に、MCPがこれほどの影響を与えていると感じた理由を尋ねました。 私たちは、開発者が特定のワークフローに合わせて構築する力を提供しています。」

MCPはどのように機能しますか? どのような課題がありますか?

MCPは、 MCPクライアントと MCPサーバーの概念を導入することで機能します。クライアントはリソースを要求し、サーバーは要求を処理し、要求されたアクションを実行します。 MCP クライアントは、多くの場合、Claude デスクトップ アプリなどの LLM ベースのアプリケーションに組み込まれます。 MCP サーバーはクライアントによって起動され、作業の実行に必要な追加のツール、言語、またはプロセスを使用して目的の作業を実行します。

ツールの例としては、ファイルシステムへのアクセス、GitHubおよびGitLabリポジトリ管理、Slackとの統合、Kubernetesクラスターの状態の取得または変更などがあります。

図 1:MCPクライアントとサーバーの相互作用の高レベルのアーキテクチャ図

MCPサーバーの目標は、再利用可能なツールセットを提供し、Claude Desktopのように クライアント間で再利用することです。つまり、1つのツールセットを作成し、それらを多くのLLMベースのアプリケーションで再利用することです。 しかし、これらのサーバーをパッケージ化して配布することは、現在のところ課題です。 具体的には:

  1. 環境の競合: MCP サーバーのインストールには、多くの場合、特定のバージョンの Node.js が必要です。 Python、およびその他の依存関係は、ユーザーのマシン上の既存のインストールと競合する可能性があります
  2. ホストの分離の欠如:MCPサーバーは現在ホスト上で実行されており、すべてのホストファイルとリソースへのアクセスが許可されています
  3. 複雑なセットアップ: MCP サーバーでは、現在、ユーザーがすべてのコードをダウンロードして構成し、環境を構成する必要があるため、導入が困難になっています
  4. クロスプラットフォームの課題:異なるアーキテクチャ(x86 とARM、WindowsとMacなど)やオペレーティングシステム間でサーバーを一貫して実行すると、複雑さが増します
  5. 依存関係: サーバー固有のランタイム依存関係がカプセル化され、安全に配布されるようにします。

Docker はどのように役立ちますか?

Docker は、MCP サーバーを含むアプリケーションを開発、パッケージ化、配布するための標準化された方法とツールを提供することで、これらの課題を解決します。 これらの MCP サーバーをコンテナとしてパッケージ化することで、分離や環境の違いという課題が解消されます。 ユーザーは、依存関係のインストールやランタイムの構成に時間を費やすことなく、コンテナを実行するだけで済みます。

Docker Desktop は、これらの MCP サーバーをビルド、テスト、および実行するための開発プラットフォームを提供します。 Docker Hub は、コンテナイメージの世界最大のリポジトリであり、コンテナ化されたMCPサーバーを配布するのに理想的な選択肢です。 Docker Scout は、イメージが安全に保たれ、脆弱性がないようにするのに役立ちます。 Docker Build Cloud は、特にクロスプラットフォーム ビルドが必要な場合に、イメージをより迅速かつ確実にビルドするのに役立ちます。

Docker製品スイートは、パブリッシャーとコンシューマーの両方にメリットをもたらします — パブリッシャーはサーバーを簡単にパッケージ化して配布でき、コンシューマーは設定をほとんどまたはまったく行わずにサーバーを簡単にダウンロードして実行できます。

再びデビッド・ソリア・パラを引用します。 

「ffmpeg 用の MCP サーバーの構築は、Docker なしでは非常に困難な作業になります。 Dockerは、開発者にとって最も広く使用されているパッケージングソリューションの1つです。 クラウドのパッケージング問題を解決したのと同じように、今ではリッチなAIエージェントのパッケージング問題を解決する可能性を秘めています。」 

図 2:Dockerコンテナで実行されているMCPサーバーを示すアーキテクチャ図

MCPによって既存のツールのエコシステムに接続する方法を探求し続ける一方で、既存のコンテナ化されたツールへの橋渡しも想定しています。

図 3:単一のMCPサーバーが独自のコンテナ内の複数のツールを呼び出すことを示すアーキテクチャ図

コンテナ化された参照サーバーで自分で試してみてください

仕様の公開の一環として、Anthropic は参照サーバーの初期セットを公開しました。私たちはAnthropicチームと協力して、これらのサーバー用のDockerイメージを作成し、新しいDocker Hub mcp名前空間から利用できるようにしました。

開発者は、Claude DesktopをMCPクライアントとして使用し、Docker Desktopを使用して claude_desktop_config.json ファイルを更新することで任意の参照サーバーを実行することで、今すぐこれを試すことができます。

現在のサーバーの一覧には、ローカル ホストでこれらの MCP サーバー Docker コンテナーをアクティブ化するためにclaude_desktop_config.jsonを更新する方法が記載されています。

Puppeteerを使用してDockerでスクリーンショットを撮ったり変更したりする

このデモでは、 Puppeteer MCPサーバー を使用してWebサイトのスクリーンショットを撮り、Claude DesktopとDocker Desktopを使用して色を反転します。 コンテナ化された環境を使用せずにこれを行うには、かなりのセットアップが必要ですが、コンテナを使用するとかなり簡単です。

  1. claude_desktop_config.json ファイルを更新して、次の設定を含めます。

たとえば、Claude Desktopを拡張してブラウザの自動化とWebスクレイピングにpuppeteerを使用するには、次のエントリが必要です(これについては、 こちらで詳しく説明しています)。

{
  "mcpServers": {
    "puppeteer": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "-e", "DOCKER_CONTAINER=true", "mcp/puppeteer"]
    }
  }
}
  1. Claude Desktopを再起動して、変更した設定ファイルを適用します。
  2. Sonnet 3を使用して次のプロンプトを送信します。5 モデル:

    docs.docker.com のスクリーンショットを撮ってから、色を反転します」
  3. クロードは、これらの新しいツールを実行しても問題ないことを確認するために、いくつかの同意画面を実行します。
  4. しばらくすると、リクエストしたスクリーンショットが届きます

どうされました。 クロードは、コンテナ内で人形遣いのMCPサーバーを起動し、そのコンテナ内のヘッドレスブラウザを使用してサイトに移動し、スクリーンショットを取得し、ページの色を反転し、最後に変更されたページのスクリーンショットを取得するという一連のツールコールを計画しました。

図4:Docker化されたPuppeteerをClaude Desktopで実行して、https://docs.docker.com/ の色を反転する

次のステップ

開発者がこの最初のサーバーセットで試すことができることはすでにたくさんあります。 データベース コンテナーで何ができるかを垣間見るには、 sqlite サーバー コンテナーを接続し、提供されるサンプル プロンプトを実行することをお勧めします。 これは、今日すでに可能になっていることの目を見張るような展示です。 さらに、デモはコンテナ化されています。

現在、独自の MCP Docker イメージを簡単にビルドして配布できるように、コンテンツの追加に取り組んでいます。 また、コミュニティと緊密に連携して、より多くの Docker コンテナをパッケージ化することを奨励しています。 ディスカッショングループで質問があればご連絡ください。  

さらに詳しく