Skip to Content

MCP 概要

Model Context Protocol (MCP)は、AIモデルが外部ツールやリソースを発見し、相互作用できるように設計されたオープンスタンダードです。これはAIエージェント向けの汎用プラグインシステムと考えることができ、エージェントがツールの記述言語やホスティング場所に関係なくツールを使用できるようにします。

Mastraは、エージェントを外部ツールサーバーに接続するためにMCPを使用しています。

MCPクライアントでサードパーティツールを使用する

Mastraは、1つまたは複数のMCPサーバーへの接続を管理し、そのツールにアクセスするためのMCPClientクラスを提供しています。

インストール

まだインストールしていない場合は、Mastra MCPパッケージをインストールしてください:

npm install @mastra/mcp@latest

MCPClientの設定

MCPClientは、接続したいサーバーのマップで設定します。サブプロセス(Stdio)またはHTTP(SSEフォールバック付きのストリーム可能なHTTP)を介した接続をサポートしています。

import { MCPClient } from "@mastra/mcp"; const mcp = new MCPClient({ servers: { // Stdioの例 sequential: { command: "npx", args: ["-y", "@modelcontextprotocol/server-sequential-thinking"], }, // HTTPの例 weather: { url: new URL("http://localhost:8080/mcp"), requestInit: { headers: { Authorization: "Bearer your-token", }, }, }, }, });

詳細な設定オプションについては、MCPClientリファレンスドキュメントを参照してください。

静的vs動的ツール設定

MCPClientは、接続されたサーバーからツールを取得するための2つのアプローチを提供し、異なるアプリケーションアーキテクチャに適しています:

機能静的設定 (await mcp.getTools())動的設定 (await mcp.getToolsets())
ユースケース単一ユーザー、静的設定(CLIツールなど)複数ユーザー、動的設定(SaaSアプリなど)
設定エージェント初期化時に固定リクエストごとに動的
認証情報すべての使用で共有ユーザー/リクエストごとに変更可能
エージェント設定Agentコンストラクタでツールを追加generate()またはstream()オプションでツールを渡す
  • 静的設定(getTools()): 設定されたすべてのサーバーからすべてのツールを取得します。ツール設定(APIキーなど)が静的で、すべてのユーザーまたはリクエスト間で共有される場合に最適です。通常、これを一度呼び出し、結果をAgentを定義する際のtoolsプロパティに渡します。 リファレンス:getTools()

    import { Agent } from "@mastra/core/agent"; // ... mcpクライアントの設定 const agent = new Agent({ // ... その他のエージェント設定 tools: await mcp.getTools(), });
  • 動的設定(getToolsets()): 設定がリクエストごとまたはユーザーごとに変更される可能性があるシナリオ(例:マルチユーザーアプリケーションの異なるテナントに対する異なるAPIキー)向けに設計されています。getToolsets()の結果をエージェントのgenerate()またはstream()メソッドのtoolsetsオプションに渡します。 リファレンス:getToolsets()

    import { Agent } from "@mastra/core/agent"; // ... 最初はツールなしでエージェントを設定 async function handleRequest(userPrompt: string, userApiKey: string) { const userMcp = new MCPClient({ /* userApiKeyを含む設定 */ }); const toolsets = await userMcp.getToolsets(); const response = await agent.stream(userPrompt, { toolsets, // 動的ツールセットを渡す }); // ... レスポンスを処理 await userMcp.disconnect(); }

MCPレジストリへの接続

MCPサーバーはレジストリを通じて発見できます。以下は、MCPClientを使用して人気のあるレジストリに接続する方法です:

mcp.runは事前認証済みの管理されたMCPサーバーを提供しています。ツールはプロファイルにグループ化され、それぞれに固有の署名付きURLがあります。

import { MCPClient } from "@mastra/mcp"; const mcp = new MCPClient({ servers: { marketing: { // プロファイル名の例 url: new URL(process.env.MCP_RUN_SSE_URL!), // mcp.runプロファイルからURLを取得 }, }, });

重要: mcp.run SSE URLはパスワードのように扱ってください。環境変数などに安全に保存してください。

.env
MCP_RUN_SSE_URL=https://www.mcp.run/api/mcp/sse?nonce=...

MCPサーバーでツールを共有する

独自のMastraツールを作成した場合、MastraのMCPServerクラスを使用して、MCP互換のクライアントにそれらを公開することができます。

これにより、他のユーザーはあなたのコードベースに直接アクセスすることなく、あなたのツールを使用できるようになります。

MCPServerの使用方法

MCPServerは、名前、バージョン、共有したいMastraツールで初期化します。

import { MCPServer } from "@mastra/mcp"; import { weatherTool } from "./tools"; // Your Mastra tool const server = new MCPServer({ name: "My Weather Server", version: "1.0.0", tools: { weatherTool }, // Provide your tool(s) here }); // Start the server (e.g., using stdio for a CLI tool) // await server.startStdio(); // Or integrate with an HTTP server using startSSE() // See MCPServer reference for details

詳細な使用方法と例については、MCPServerリファレンスドキュメントを参照してください。