Anthropicは最近、AIアシスタントとモデルを信頼性の高いデータやツールに接続するための新しい標準である Model Context Protocol (MCP)を発表しました。 ただし、MCP サーバーのパッケージ化と配布は、複数のアーキテクチャとオペレーティング システムにわたる複雑な環境セットアップのため、非常に困難です。 Dockerは、開発者が開発環境をコンテナにカプセル化し、すべてのチームメンバーのマシンとデプロイメントの一貫性と予測可能性を確保できる、これに最適なソリューションです。 このブログ記事では、Docker を使用して Model Context Protocol (MCP) をコンテナ化し、AI アプリケーションの構築を簡素化する例をいくつか紹介します。
モデルコンテキストプロトコル(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クラスターの状態の取得または変更などがあります。
MCPサーバーの目標は、再利用可能なツールセットを提供し、Claude Desktopのように クライアント間で再利用することです。つまり、1つのツールセットを作成し、それらを多くのLLMベースのアプリケーションで再利用することです。 しかし、これらのサーバーをパッケージ化して配布することは、現在のところ課題です。 具体的には:
- 環境の競合: MCP サーバーのインストールには、多くの場合、特定のバージョンの Node.js が必要です。 Python、およびその他の依存関係は、ユーザーのマシン上の既存のインストールと競合する可能性があります
- ホストの分離の欠如:MCPサーバーは現在ホスト上で実行されており、すべてのホストファイルとリソースへのアクセスが許可されています
- 複雑なセットアップ: MCP サーバーでは、現在、ユーザーがすべてのコードをダウンロードして構成し、環境を構成する必要があるため、導入が困難になっています
- クロスプラットフォームの課題:異なるアーキテクチャ(x86 とARM、WindowsとMacなど)やオペレーティングシステム間でサーバーを一貫して実行すると、複雑さが増します
- 依存関係: サーバー固有のランタイム依存関係がカプセル化され、安全に配布されるようにします。
Docker はどのように役立ちますか?
Docker は、MCP サーバーを含むアプリケーションを開発、パッケージ化、配布するための標準化された方法とツールを提供することで、これらの課題を解決します。 これらの MCP サーバーをコンテナとしてパッケージ化することで、分離や環境の違いという課題が解消されます。 ユーザーは、依存関係のインストールやランタイムの構成に時間を費やすことなく、コンテナを実行するだけで済みます。
Docker Desktop は、これらの MCP サーバーをビルド、テスト、および実行するための開発プラットフォームを提供します。 Docker Hub は、コンテナイメージの世界最大のリポジトリであり、コンテナ化されたMCPサーバーを配布するのに理想的な選択肢です。 Docker Scout は、イメージが安全に保たれ、脆弱性がないようにするのに役立ちます。 Docker Build Cloud は、特にクロスプラットフォーム ビルドが必要な場合に、イメージをより迅速かつ確実にビルドするのに役立ちます。
Docker製品スイートは、パブリッシャーとコンシューマーの両方にメリットをもたらします — パブリッシャーはサーバーを簡単にパッケージ化して配布でき、コンシューマーは設定をほとんどまたはまったく行わずにサーバーを簡単にダウンロードして実行できます。
再びデビッド・ソリア・パラを引用します。
「ffmpeg 用の MCP サーバーの構築は、Docker なしでは非常に困難な作業になります。 Dockerは、開発者にとって最も広く使用されているパッケージングソリューションの1つです。 クラウドのパッケージング問題を解決したのと同じように、今ではリッチなAIエージェントのパッケージング問題を解決する可能性を秘めています。」
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を使用して色を反転します。 コンテナ化された環境を使用せずにこれを行うには、かなりのセットアップが必要ですが、コンテナを使用するとかなり簡単です。
- claude_desktop_config.json ファイルを更新して、次の設定を含めます。
たとえば、Claude Desktopを拡張してブラウザの自動化とWebスクレイピングにpuppeteerを使用するには、次のエントリが必要です(これについては、 こちらで詳しく説明しています)。
{
"mcpServers": {
"puppeteer": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "-e", "DOCKER_CONTAINER=true", "mcp/puppeteer"]
}
}
}
- Claude Desktopを再起動して、変更した設定ファイルを適用します。
- Sonnet 3を使用して次のプロンプトを送信します。5 モデル:
「docs.docker.com のスクリーンショットを撮ってから、色を反転します」 - クロードは、これらの新しいツールを実行しても問題ないことを確認するために、いくつかの同意画面を実行します。
- しばらくすると、リクエストしたスクリーンショットが届きます
どうされました。 クロードは、コンテナ内で人形遣いのMCPサーバーを起動し、そのコンテナ内のヘッドレスブラウザを使用してサイトに移動し、スクリーンショットを取得し、ページの色を反転し、最後に変更されたページのスクリーンショットを取得するという一連のツールコールを計画しました。
図4:Docker化されたPuppeteerをClaude Desktopで実行して、https://docs.docker.com/ の色を反転する
次のステップ
開発者がこの最初のサーバーセットで試すことができることはすでにたくさんあります。 データベース コンテナーで何ができるかを垣間見るには、 sqlite サーバー コンテナーを接続し、提供されるサンプル プロンプトを実行することをお勧めします。 これは、今日すでに可能になっていることの目を見張るような展示です。 さらに、デモはコンテナ化されています。
現在、独自の MCP Docker イメージを簡単にビルドして配布できるように、コンテンツの追加に取り組んでいます。 また、コミュニティと緊密に連携して、より多くの Docker コンテナをパッケージ化することを奨励しています。 ディスカッショングループで質問があればご連絡ください。
さらに詳しく
- Docker Desktop のリリース コレクションを読んで、さらに多くの更新情報やイノベーションの発表をご覧ください。
- Docker Navigator ニュースレターを購読します。
- Docker Labs: GenAI ニュースレターを購読してください。
- アップグレードされたDockerプランをご覧ください。
- Docker Desktop の新機能をご覧ください。