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

投皿日 12月 23日, 2024幎

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 コンテナをパッケヌゞ化するこずを奚励しおいたす。 ディスカッショングルヌプで質問があればご連絡ください。  

さらに詳しく

関連蚘事