メインコンテンツまでスキップ

MCPクライアントの作成

🔗 MCP クライアントの作成

このレッスンでは、Section 3で作成したMCPサーバーと通信するためのMCPクライアントを実装します。

MCPクライアントは、AI AgentからMCPサーバーに接続し、ツールのリストを取得する役割を担います。

📝 実装するファイル

src/lib/mastra/mcp/client.tsファイルを作成し、以下のコードを記述します。

import { MCPClient } from "@mastra/mcp";

/**
* JPYC MCPサーバーを呼び出すためのMCPクライアント
*/
export const jpycMCPClient = new MCPClient({
servers: {
// JPYC MCPサーバーのURLを設定する(MCPサーバー事前に起動しておくこと)
"jpyc:mcp-server": {
url: new URL(
process.env.JPYC_MCP_SERVER_URL || "http://localhost:3001/sse",
),
},
},
});

💡 コードの解説

このファイルは非常にシンプルですが、重要な役割を果たします。

主要なポイントを見ていきましょう。

1. MCPClientのインポート

import { MCPClient } from "@mastra/mcp";

MastraのMCPクライアントをインポートします。
このクライアントは、MCPプロトコルを使用してサーバーと通信します。

2. MCPClientインスタンスの作成

export const jpycMCPClient = new MCPClient({
servers: {
"jpyc:mcp-server": {
url: new URL(
process.env.JPYC_MCP_SERVER_URL || "http://localhost:3001/sse",
),
},
},
});

MCPClientは、複数のMCPサーバーに接続できるように設計されています。
serversオブジェクトで、各サーバーの名前とURLを定義します。

主要なパラメータ:

  • サーバー名: "jpyc:mcp-server" - MCPサーバーを識別するための名前
  • url: MCPサーバーのSSEエンドポイントURL

3. 環境変数の使用

process.env.JPYC_MCP_SERVER_URL || "http://localhost:3001/sse"

環境変数JPYC_MCP_SERVER_URLが設定されている場合はそれを使用し、設定されていない場合はデフォルトのhttp://localhost:3001/sseを使用します。

これにより、本番環境と開発環境で異なるMCPサーバーURLを使い分けることができます。

4. SSEエンドポイント

"http://localhost:3001/sse"

Section 3で作成したMCPサーバーのSSEエンドポイントに接続します。
このエンドポイントは、サーバーからクライアントへのイベント送信に使用されます。

🔄 MCPクライアントの動作

MCPクライアントは、AI Agentから以下のような流れで使用されます:

1. AI Agent起動

2. jpycMCPClient.getTools() 呼び出し

3. MCPサーバー (http://localhost:3001/sse) に接続

4. サーバーからツールリストを取得

5. ツール(jpyc_balance, jpyc_transfer, etc.)をAI Agentに登録

6. ユーザーの指示に応じてツールを実行

次のレッスンでAI Agentを実装する際、このクライアントを使ってツールを動的に取得します。

🌐 複数サーバーへの対応

MCPClientは、複数のMCPサーバーに同時に接続できます。
例えば、JPYC操作用のサーバーと、天気情報用のサーバーを同時に使用する場合:

export const multiServerClient = new MCPClient({
servers: {
"jpyc:mcp-server": {
url: new URL("http://localhost:3001/sse"),
},
"weather:mcp-server": {
url: new URL("http://localhost:3002/sse"),
},
},
});

このようにすることで、AI Agentは両方のサーバーのツールを使用できるようになります。

🧪 動作確認

この段階では、まだAI Agentが完成していないため、動作確認はできません。

次のレッスンでAI Agentを実装することで、MCPクライアントが正しくサーバーに接続し、ツールを取得できることを確認できます。

🙋‍♂️ 質問する

ここまでの作業で何かわからないことがある場合は、Discordの#jpycで質問をしてください。

ヘルプをするときのフローが円滑になるので、エラーレポートには下記の4点を記載してください ✨

  1. 質問が関連しているセクション番号とレッスン番号
  2. 何をしようとしていたか
  3. エラー文をコピー&ペースト
  4. エラー画面のスクリーンショット

次のレッスンでは、いよいよAI Agentを実装します!