MCP を使い始めるために必要なものすべて – Anthropic の AI 向け USB-C

Table of Contents

MCP を使い始めるために必要なものすべて – Anthropic の AI 向け USB-C

ハンズオン:大規模な言語モデルを実際に有用なものにするには、通常、外部データ、ツール、またはAPIに接続する必要があります。問題は、まだそれを実現する標準的な方法がないことです。

Anthropicは、その答えを見つけたと考えています。それは、AI用のUSB-Cとなることを約束するオープンプロトコル、MCPです。そこで、実際に試してみて、何が機能するのかを確かめてみました。

昨年末に導入されたオープンソースの Model Context Protocol (MCP) プロジェクトは、Claude のモデル ビルダーによって「AI システムとデータ ソースを接続するための汎用的なオープン スタンダード」として開発されました。

データベースのようなデータストアだけではありません。MCPサーバーは、AIモデルにさまざまなツールやリソースを公開できるため、データベースのクエリ、Dockerコンテナの起動、SlackやDiscordなどのメッセージングプラットフォームとのやり取りなどの機能を実現できます。

MCPという言葉に聞き覚えがあるとすれば、それはここ数ヶ月で大きな注目を集めているからです。公式MCPサーバーのGitHubリポジトリだけでも、Grafana、Heroku、Elastisearchといった主要ソフトウェアベンダーとの公式統合が数十件、さらに200台以上のコミュニティサーバーとデモサーバーが存在します。

LLMをSQLデータベースに接続したり、Kubernetesクラスターを管理したり、Jiraを自動化したりしたい場合、すでにMCPサーバーが利用可能になっている可能性が高いです。実際、MCPは非常に大きな注目を集めており、OpenAIとGoogleもこのプロジェクトに力を入れています。

この実践ガイドでは、MCP の実際の仕組み、MCP で何ができるか、MCP が直面する課題、Claude Desktop または Open WebUI を使用した独自のモデルの両方を使用して MCP サーバーを展開および統合する方法について詳しく説明します。

MCPの概要

MCP サーバーを起動する方法を説明する前に、内部で何が起こっているかを簡単に見てみましょう。

大まかに言えば、MCP は、ホスト、クライアント、サーバーという 3 つの主要コンポーネントを持つ一般的なクライアント サーバー アーキテクチャを使用します。

MCPのアーキテクチャの概要は次のとおりです。出典:modelcontextprotocol.io

MCPのアーキテクチャの概要は次のとおりです… 出典: modelcontextprotocol.io。画像をクリックすると拡大します

  • ホスト通常​​、Claude Desktop や Cursor のような IDE などのユーザーがアクセス可能なフロントエンドであり、1 つ以上の MCP クライアントの管理を担当します。 
  • クライアントは、MCPプロトコルを介してサーバーと1対1の接続を維持します。クライアントとサーバー間のすべてのメッセージはJSON-RPCを使用して交換されますが、トランスポート層は、現在サポートされているStdio、HTTP、およびサーバー送信イベント(SSE)の実装によって異なります。
  • MCPサーバー自体が特定の機能をクライアントに公開し、ホストから標準化された方法でアクセスできるようにします。そのため、ドキュメントではMCPはAI用のUSB-Cのようなものだと説明されています。

USB によって周辺機器やストレージ デバイスと対話するためのさまざまなインターフェイスの必要性が大幅に減少したのと同様に、MCP はモデルが共通言語を使用してデータやツールと対話できるようにすることを目的としています。

リソースがローカル(例えばSQLiteデータベース)かリモート(例えばS3バケット)かによって、MCPサーバーはリソースに直接アクセスするか、API呼び出しを中継するブリッジとして機能します。USB-Cのアナロジーは特に後者のケースに当てはまります。多くのMCPサーバーは実質的にアダプターとして機能し、ベンダー固有のインターフェースを言語モデルがより容易に操作できる標準化された形式に変換するからです。

ただし、重要なのは、これらのリソースが公開され、応答がモデルに返される方法が一貫していることです。

MCPの興味深い特徴の一つは、双方向に機能することです。ホストアプリケーションがサーバーにデータを要求できるだけでなく、サーバーもクライアントへのsampling/createMessageリクエストを介してLLMと通信できます。残念ながら、この機能はまだ広くサポートされているわけではありませんが、興味深いエージェント型ワークフローへの道を開く可能性があります。

MCP とは何か、どのように機能するかについて理解が深まったので、次は MCP の使い方について詳しく見ていきましょう。

Claude Desktop で MCP をテストする

Claude DesktopはMCPを試す最も簡単な方法の一つです

Claude DesktopはMCPを試す最も簡単な方法の一つです

Anthropic が MCP を生み出したことを考えれば、MCP を実際に使ってみる最も簡単な方法の 1 つは、当然のことながら、Claude Desktop を使用することです。

Anthropic などの外部の LLM プロバイダーを使用したくない場合は、次のセクションで、MCP サーバーをローカル モデルと一般的な Open WebUI インターフェイスに接続する方法について説明します。

MCPサーバーは様々な環境で実行できるため、Claude Desktopに加えていくつかの依存関係が必要になります。このデモでは、Node.js、Python 3、そしてPython用のUVXパッケージマネージャーをインストールする必要があります。

依存関係をインストールしたら、Claude Desktopを起動し、Anthropicアカウントでサインインします。次に、アプリケーション設定に移動し、「開発者」タブに移動します。

Claude Desktop の設定から、「開発者」タブを開き、「構成の編集」をクリックして新しい MCP 構成ファイルを生成します。

Claude Desktopの設定から、「開発者」タブを開き、「設定の編集」をクリックして新しいMCP設定ファイルを生成します。

そこに到達したら、「Edit Config」ボタンをクリックします。すると、Macの場合は フォルダ、 Windowsの場合は フォルダclaude_desktop_config.jsonの下に空のファイルが自動的に生成されます。ここにMCPクライアントの設定を追加します。テストのため、システムタイムとファイルシステムのMCPサーバーを使用します。~/Library/Application Support/Claude/%APPDATA%\Claude\

お好みのテキストエディタまたはIDE(ここではVSCodiumを使用)でファイルを開きclaude_desktop_config.json、内容を以下のタイムサーバー設定に置き換えてください。お好みのタイムゾーンに合わせて調整してください。

{
"mcpServers": { "time": { "command": "uvx", "args": ["mcp-server-time", "--local-timezone=UTC"] }
}
}

ファイルを保存し、Claude Desktop を再起動します。再起動すると、チャットボックスにツールが使用可能であることを示す新しいアイコンが表示されます。

次に、「ニューヨークは何時ですか?」のような簡単な質問をしてテストします。Claude 自体は現地時間を認識しませんが、タイム サーバーにクエリを実行してそれを把握できるようになりました。

Claude は単独では特定の時点での時刻を認識しますが、MCP タイム サーバーにアクセスできるようになると、時刻を知ることができるようになります。

クロード自身は、特定の時点で何時なのか知ることはできないが、MCPタイムサーバーにアクセスできれば、時間を知ることができる。

claude_desktop_config.jsonここで、次のファイルを更新して、ファイル システム MCP サーバーを試してみます。

{ "mcpServers": { "time": { "command": "uvx", "args": ["mcp-server-time", "--local-timezone=UTC"] }, "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Desktop", "/path/to/other/allowed/dir" ] } }
}

保存する前に、モデルにアクセスを許可するファイル システム上のディレクトリを/Users/username/Desktop必ず更新してください。/path/to/other/allowed/dir

Claude Desktopを再起動すると、以前よりも多くのツールにアクセスできるようになっていることに気づくはずです。具体的には、File System MCPサーバーにより、モデルは以下のような様々なファイルシステム機能を実行できます。

  • ファイルの読み書き
  • ファイルの編集
  • ディレクトリの作成または一覧表示
  • ファイルの移動または検索
  • サイズや作成日などのファイル情報を取得する
  • アクセスできるディレクトリの一覧

今回は、Claudeにデスクトップへのアクセスを許可しました。そこで、次のような質問をします。

  • プロンプト:「デスクトップには何がありますか」
  • プロンプト:「デスクトップを整理してもらえますか?」
  • プロンプト:「file.txt の名前を doc.md に変更します」

Vulture の技術文書デスクからの観察事項:

  • 長時間のタスクではファイル システム MCP サーバーで多少の不安定さが見られましたが、状況は異なる可能性があります。
  • PIP または Docker を使用する場合は、MCP タイム サーバーおよびファイル サーバーの代替構成をこちらで見つけることができます。

独自のモデルと Open WebUI で MCP を使用する

バージョンv0.6.0以降、Open WebUIはOpenAPIブリッジ経由でMCPサーバーをサポートします。

バージョン v0.6.0 以降、Open WebUI は OpenAPI ブリッジ経由で MCP サーバーをサポートします - クリックして拡大

弊社独自のセルフホスト モデルで MCP を試してみたい場合は、Open WebUI が最近、OpenAPI 互換プロキシ経由でプロトコルのサポートを統合しました。

Open WebUI をよく知らない方のために説明すると、これは ChatGPT に似た人気の高いオープンソースの Web インターフェースで、Ollama、Llama.cpp、vLLM などの推論サーバーや、OpenAI と互換性のあるあらゆる API エンドポイントと統合されます。

前提条件

  • このガイドは、ローカルでのモデル実行に慣れていることを前提としています。ご不明な点がございましたら、ほぼあらゆるハードウェアにローカルLLMを数分でデプロイする方法を説明したガイドをこちらでご用意しています。
  • また、Open WebUIをDockerにデプロイして設定する必要があります。設定方法については、こちらに詳細なガイドをご用意しています。
  • Docker といえば、コンテナ ランタイムを使用して MCP サーバーを起動することになります。

ローカルにホストされたモデルで Open WebUI を起動して実行したら、Docker を使用して MCP ツールのサポートを拡張するのは非常に簡単です。

前述の通り、Open WebUIはOpenAPIプロキシサーバーを介してMCPをサポートし、標準のRESTful APIとして公開します。開発者によると、これにより、セキュリティの強化、互換性の向上、エラー処理の簡素化といったメリットが得られる一方で、シンプルさも維持できるとのことです。

結果として、MCP サーバーの構成はおそらくより簡単になります。ただし、Claude Desktop で使用される JSON 構成を標準の実行可能文字列に変換する必要があります。

たとえば、入力プロンプトから必要に応じて Brave 検索をクエリする Brave Search MCP サーバーを起動する場合、構成を単純なdocker runコマンドに分解します。

config.json:

{ "mcpServers": { "brave-search": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-brave-search" ], "env": { "BRAVE_API_KEY": "YOUR_API_KEY_HERE" } } }
}

Docker 実行コマンド:

docker run -p 8001:8000 --name MCP-Brave-Search -e BRAVE_API_KEY=YOUR_API_KEY_HERE ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- npx -y @modelcontextprotocol/server-brave-search

Brave Search APIキーをお持ちでない場合は、こちらから無料で取得して、 を置き換えてくださいYOUR_API_KEY_HERE。また、top-secretAPIキーは後で必要になるので、一意でプライベートかつ安全なものに変更してください。

ヒント: このサーバーをバックグラウンドで実行したい場合は、 の-d後にを追加してくださいrun。その後、 を実行してサーバーログを確認できますdocker logs MCP-Brave-Search

Docker で複数の MCP サーバーを起動する場合は、次のコマンドでこのコマンドを再度実行できます。

  • 8001別の開いているポートに変更する
  • --name値を更新する
  • それに応じてサーバーコマンドを調整する

サーバーをOpen WebUIに接続する

MCPサーバーが起動したら、ユーザーレベルまたはシステムレベルで接続できます。システムレベルで接続する場合は、ユーザーとモデルがモデルを利用できるようにするために、追加のアクセス制御リスト(ACL)設定が必要です。ここでは、分かりやすくするために、個々のユーザーレベルでMCPサーバーに接続する方法について説明します。

Open WebUIダッシュボードからユーザー設定に移動し、「ツール」タブを開きます。そこから新しい接続を作成し、URL(通常は以下のような形式http://Your_IP_Address_Here:8001)とtop-secret先ほど設定したAPIキーを入力します。

ユーザー設定の「ツール」タブで、MCP サーバーを追加します。

ユーザー設定の「ツール」タブでMCPサーバーを追加します。

すべてが正しく機能している場合は、右上隅に緑色のトーストメッセージがいくつか表示され、チャット ボックスの横にモデルが使用できるツールの数を示す新しいアイコンが表示されます。

ローカルにインストールされ、選択されたモデルに、そのモデルが知らないことを尋ねてみましょう。モデルは自動的に検索クエリをトリガーし、結果を返すことができます。

有効にすると、国際スーパーコンピューティング会議がいつ開始されるかなど、通常はわからない質問をモデルに尋ねると、モデルは Brave 検索を実行します。

有効にすると、今年の国際スーパーコンピューティング会議がいつ始まるかなど、通常は分からない質問をすると、モデルはブレイブ検索を実行します。

このMCPサーバーには検索APIしか含まれておらず、実際にページをスクレイピングする機能はありません。そのため、Puppeteer MCPサーバーのような機能を検討するか、Open WebUIに組み込まれているWeb検索およびクロール機能(以前のRAGチュートリアルで解説しました)を活用することをお勧めします。

Open WebUI でのネイティブ関数呼び出しについて

デフォルトでは、Open WebUI はツールの呼び出しを内部的に処理し、新しいメッセージが送信されるたびに適切なツールを決定します。ただし、ツールは交換ごとに一度しか呼び出せないという欠点があります。

このアプローチの利点は、ほぼあらゆるモデルで動作し、実行において一貫性があることです。しかし、例えば、モデルがユーザーのリクエストを満たすためにツールに複数回アクセスする必要がある場合、問題が発生する可能性があります。例えば、モデルがSQLデータベースにアクセスしている場合、実際のクエリのフォーマット方法を判断するために、そのスキーマを取得する必要があるかもしれません。

これを回避するには、推論アクション (ReACT) スタイルの呼び出しでツールにアクセスできるモデルのネイティブ ツール呼び出し機能を利用できます。

難しいのは、多くのモデルがネイティブツールのサポートを謳っている一方で、小規模なモデルの多くはそれほど信頼性が高くないということです。とはいえ、Qwen 2.5ファミリーのモデルはOllamaで動作し、良好な結果を得ています。

Open WebUI でネイティブ関数呼び出しを有効にするのは比較的簡単で、Open WebUI の右上にある「コントロール」メニューから切り替えることができます。ネイティブ関数呼び出しを有効にすると、Ollama などの多くの推論サーバーでトークンストリーミングが無効になることに注意してください。そのため、通常のようにメッセージがストリーミングされるのではなく、メッセージが一斉に表示され始めても驚かないでください。

Open WebUI のチャットコントロールメニュー (右上の小さなハンバーガーメニュー) からネイティブ関数の呼び出しを有効にすることができます。

Open WebUI のチャットコントロールメニュー (右上の小さなハンバーガーメニュー) からネイティブ関数の呼び出しを有効にすることができます。

ツール呼び出しをトリガーすると、使用されたツールを示す別のツールヒントが表示され、返された情報(ある場合)を確認するためのドロップダウンが表示されます。

既存の MCP サーバーを比較的簡単に統合できるようにすることに加えて、開発者はサーバーの構築も簡単にできるようにするために多大な努力を払いました。

既存のコードを MCP サーバーでの使用に合わせて簡単に適応できるように、Python、Typescript、Java、Kotlin、C# などの複数の言語用の SDK を提供しています。

これをテストするために、Python のサンプル テンプレートを使用して、このシンプルな計算機 MCP サーバーを約 5 分でモックアップしました。

計算機/calculator_server.py

mcp.server.fastmcp から FastMCP をインポート mcp = FastMCP("MathSupport") @mcp.tool()
def calculator(equation: str) -> str: """ 方程式の答えを計算します。 """ try: result = eval(equation) return f"{equation} = {result}" except Exception as e: print(e) return "Invalid equation"

そこから、Open WebUI に接続するのは、Docker で別の MCP プロキシ サーバーを起動するのと同じくらい簡単です。

docker run -p 8002:8000 --name MCP-Calculator -v ~/calculator/calculator_server.py:/calculator_server.py ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- uv run --with 'mcp[cli]' mcp run /calculator_server.py

あるいは、Claude Desktop をご希望の場合:

{ "mcpServers": { "MathSupport": { "command": "uv", "args": [ "run", "--with", "mcp[cli]", "mcp", "run", "/PATH_TO_PYTHON_SCRIPT_HERE/calculator_server.py" ] } }
}

もちろん、これは MCP でサポートされているすべての機能の表面に触れたに過ぎませんが、少なくともプロトコルで使用するためにコードをどのように適応させることができるかについて、ある程度のアイデアを与えてくれます。

MCPは完璧からは程遠い

何千ものサーバーが利用可能であり、現在 OpenAI と Google がオープンソース プロトコルをサポートしていることから、MCP は AI 統合の事実上の標準になりつつあります。

しかし、このプロトコルはデビュー以来数か月にわたってかなりの注目を集めてきましたが、特にセキュリティ、複雑さ、スケーラビリティに関して、現在の実装に誰もが満足しているわけではありません。

セキュリティはMCPに対する最大の批判の一つです。これらのサーバーの導入の容易さと、多くのサーバーが任意のコードを実行できる能力を併せ持つことから、適切な審査、安全対策、サンドボックス化が実施されない限り、潜在的に問題となる可能性があります。

MCP サーバーが悪用され、WhatsApp のメッセージ履歴が漏洩する事例が少なくとも 1 つ確認されています。

明らかなセキュリティ上の懸念に加え、MCPはサービスとデータの統合を大幅に簡素化できるものの、そのメリットを活用するには依然としてLLMに依存しているという問題もあります。また、最近の生成モデルの多くは何らかのツール呼び出し機能を備えていると主張していますが、Berkeley Function-Calling Leaderboardをざっと見てみると、その優劣が明らかになります。

このため、Open WebUI は、多くのモデルの組み込みツール呼び出し機能よりも信頼性が高いため、統合された(ただし基本的な)関数呼び出し機能をデフォルトに設定しています。

そしてもちろん、管理性の観点から見ると、数十台もの MCP サーバーを管理すると、より成熟した AI 統合を構築または展開する場合よりも作業量が少なくて済むとしても、展開の運用が複雑になります。

とはいえ、発表からまだ6ヶ月も経っていないプロジェクトですから、こうしたことは予想通りであり、プロジェクトが成熟するにつれて、こうした懸念の多くは解決されるでしょう。少なくともそう願っています。私たちが楽観主義者ではないと言う人がいるでしょうか?

追加リソース

さらに多くの MCP サーバーを試してみたい場合は、GitHub の公式プロジェクト ページと、執筆時点で 3,500 台を超えるサーバーが含まれている Frank Fiegel のオープン ソース MCP サーバー カタログを確認することをお勧めします。

一方、独自の MCP サーバーまたはクライアントを構築することに興味がある場合は、詳細情報とサンプル コードについては、公式の MCP ドキュメントを確認することをお勧めします。

The Register は、近い将来、このようなローカル AI コンテンツをさらに提供することを目指しています。ぜひ、コメント セクションで熱い質問を共有し、次にどのようなコンテンツをご覧になりたいかをお知らせください。®

Discover More