注目の AI 企業 Anthropic 社の新ツール MCP と Docker で AI アプリのビルドを簡素化

先日 Anthropic 社は、AI アシスタントとモデルを信頼性の高いデータやツールに繋ぐための新しい標準である、Model Context Protocol (MCP) をリリースしました。一方で、MCP サーバーのパッケージ化と配布は、複数のアーキテクチャとオペレーティング システムをまたぐ、複雑な環境セットアップを必要とします。Docker は、開発環境をコンテナーにカプセル化し、すべてのマシンとデプロイメントの一貫性と予測可能性を確保できるため、この課題を解決します。このブログ記事では、Docker を使用して Model Context Protocol (MCP) をコンテナー化し、AI アプリケーションのビルドを簡素化する例を紹介します。 

Model Context Protocol (MCP) とは?

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

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

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

MCP リリース以来、開発者コミュニティはさらに活気づきました。Anthropic 社のテクニカル スタッフ メンバーである David Soria Parra 氏に、なぜ MCP がこれほどの影響を与えているのかを尋ねたところ、「開発者向けのアプローチにより、特定のツール セットに縛られなくなりました。これにより、開発者は自分のワークフローに最適な形で開発を進められます」と述べています。

MCP はどのように機能するのか、またどのような課題があるのか

MCP は、 MCP クライアントと MCP サーバーの概念を導入することで機能します。クライアントはリソースを要求し、サーバーは要求を処理してアクションを実行します。MCP クライアントは多くの場合、Claude Desktop アプリなどの 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 エージェントのパッケージング問題を解決する可能性を秘めています」 (David Soria Parra 氏)

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

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

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

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

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

Docker Desktop と (MCP クライアントとして) Claude 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. これらの新しいツールを実行しても問題ないことを確認するために、Claude にいくつかの同意画面が表示されます。
  4. しばらくすると、リクエストしたスクリーンショットが届きます。

どうでしょうか。Claude は、ツール呼び出しの一連を計画しました。まず、コンテナー内で Puppeteer MCP サ ーバーを起動し、その後、コンテナー内のヘッドレス ブラウザーを使ってサイトにアクセスし、スクリーンショットを撮り、ページの色を反転させ、最後に変更されたページのスクリーンショットを再度撮影しました。

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

次のステップ

このサーバー セットで試せることはたくさんあります。 データベース コンテナーで何ができるかを確認するには、sqlite サーバー コンテナーを接続し、提供されるサンプル プロンプトを実行してみてください。これは、今できることをわかりやすく示す素晴らしい例です。さらに、デモはコンテナー化されています。

現在、独自の MCP Docker イメージを簡単にビルドして配布できるように、コンテンツの追加に取り組んでいます。また、コミュニティと密に連携して、より多くの Docker コンテナーをパッケージ化することを奨励しています。


エクセルソフトは Docker の Preferred Reseller として、Docker Business を販売しています。Docker 製品のライセンスや機能に関するご質問、製品デモのご要望を承っています。お問い合わせはこちらから。


*本記事は、Docker 社が提供している以下の記事から抜粋・転載したものです。

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

Docker の最新情報をお届けするエクセルソフトのメールニュース登録はこちら

 

タイトルとURLをコピーしました