通貨換算で学ぶMCPの仕組み:AIが外部ツールと連携するプロトコルを実践的に理解する

通貨換算で学ぶMCPの仕組み:AIが外部ツールと連携するプロトコルを実践的に理解する Claude Code

新しいプロトコルやフレームワークが登場したとき、まず知りたいのは「これは何の問題を解決するのか?」ということではないでしょうか。この記事では、通貨換算という身近な例を通じてMCP(Model Context Protocol)の仕組みを理解します。MCPがないと「現在の為替レートはわかりません」と返すしかなかったAIが、MCPを通じて外部ツールを呼び出し、実際の為替レートを取得して回答できるようになる。その仕組みを段階的に解説します。

この記事のポイント

  • MCPはAIが外部ツールを発見・使用するための標準化されたプロトコル
  • 8ステップのフローでAIと外部ツールが連携する仕組みを解説
  • 通貨換算という実用的な例で、ツール定義から実行までを理解
  • サンプルコードで実際に動かして学べる

MCPが解決する問題

MCPを使わない場合、AIとの会話は以下のようになります。「1万円は60ドルのゲームを買うのに足りる?」と聞くと、「現在の為替レートにアクセスできないため、判断できません」という回答が返ってきます。AIには最新の外部データを取得する手段がないからです。

MCPを使うと、同じ質問に対して以下のような処理が行われます。AIは為替レートが必要だと認識し、利用可能なget_exchange_rateツールを発見します。そしてツールを呼び出し(from="JPY", to="USD", amount=10000)、結果として「10000 JPY = 65.83 USD」を取得。最終的に「はい、1万円は約65.83ドルなので、60ドルのゲームを買っても5.83ドル残ります」と回答できます。

重要な洞察は、MCPはAIがあなたのツールを発見し使用するための標準化された方法だということです。

8ステップのアーキテクチャ

この通貨換算の例は、8ステップのフローで動作します。

ステップ1-2:ユーザーからAPIへ。ユーザーが自然言語でクエリを送信し、Hono APIがプロンプトを受信します。

ステップ3-4:ツール情報の取得とClaudeへの送信。APIはmcpClient.listTools()を使って利用可能なMCPサーバーツールを取得し、プロンプトとツール情報を一緒にClaude AIに送信します。

ステップ5-6:ツールの使用判断と実行。Claudeはツールの使用が必要かどうかを判断し、必要と判断した場合はAPIがツール呼び出しを傍受してmcpClient.callTool()経由で実行します。

ステップ7-8:結果の統合と応答。APIはツールの実行結果をClaudeに送り返し、Claudeがその情報を使って自然言語の回答を生成。最終的にユーザーに回答が返されます。

ツールの定義方法

MCPでツールを定義する際は、名前、説明、入力スキーマを指定します。この通貨換算の例では、get_exchange_rateという名前で、「通貨間の為替レートを取得する」という説明を持ち、入力スキーマとしてfrom_currency(変換元通貨)、to_currency(変換先通貨)、amount(金額)の3つのプロパティを定義しています。

この定義により、Claudeは「このツールが何をするのか」「どんなパラメータが必要か」を理解し、適切なタイミングで適切なパラメータを指定してツールを呼び出すことができます。

ツール呼び出しの検知と実行

実装の鍵となるのは、Claudeがツールを使いたいと判断したことを検知する仕組みです。APIはresponse.stop_reason === 'tool_use'をチェックするwhileループを使用します。この条件が真の場合、Claudeがツールの使用を要求していることがわかります。

ツール呼び出しを検知したら、toolUse.inputからパラメータを抽出し、実際のツールを実行します。その結果をtool_result形式でClaudeに返すことで、Claudeは取得した情報を使って最終的な回答を生成できます。

実践してみよう

元記事で紹介されているサンプルプロジェクトを使って、実際にMCPを体験できます。

# リポジトリをクローン
git clone https://github.com/hshoja/Currency-Exchange-MCP-Service

# 依存関係をインストール
npm install

# 環境変数を設定
cp env.example .env
# .envファイルを編集してAPIキーを設定

# 開発サーバーを起動
npm run dev

使用するには、POSTリクエストをJSON形式で送信します:

{"prompt": "What is 100 USD in EUR?"}

必要なAPIキー: Anthropic APIキー(Claude用)とFreecurrencyapiキー(為替レート取得用)が必要です。

知っておくと便利なTips

  • ツールの説明は重要: Claudeはツールの説明を読んで使用するかどうかを判断します。明確で具体的な説明を書くことで、適切なタイミングでツールが呼び出されます。

  • 入力スキーマの設計: 入力パラメータは必要最小限に抑え、型を明確に定義しましょう。Claudeがパラメータを正しく抽出できるかどうかに影響します。

  • エラーハンドリング: 外部APIの呼び出しは失敗する可能性があります。ツール実行時のエラーハンドリングを適切に実装し、Claudeに有用なエラーメッセージを返すようにしましょう。

  • ツールの組み合わせ: MCPの強みは、複数のツールを組み合わせて複雑なタスクを実行できることです。通貨換算に加えて、価格検索やショッピングカート機能なども追加することで、より実用的なアシスタントを構築できます。

まとめ

MCPは、AIが外部ツールを発見し使用するための標準化されたプロトコルです。この通貨換算の例を通じて、MCPの基本的な仕組みを理解できたのではないでしょうか。ユーザーの自然言語クエリから始まり、ツールの発見、呼び出し、結果の統合、そして自然言語での応答まで、8つのステップで処理が行われます。

MCPの真価は、この仕組みがあらゆる種類のツールに適用できることです。為替レートだけでなく、データベースクエリ、ファイル操作、外部API呼び出しなど、想像できるあらゆるツールをAIと連携させることができます。この通貨換算の例を出発点に、独自のMCPサーバーを構築してみてはいかがでしょうか。


📎 元記事: https://dev.to/hashcode01/understanding-mcp-through-a-simple-example-a-practical-introduction-3bp7

コメント

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