MCPServer
MCPServer
クラスは、既存のMastraツールをModel Context Protocol (MCP) サーバーとして公開する機能を提供します。これにより、任意のMCPクライアント(Cursor、Windsurf、Claude Desktopなど)がツールに接続し、エージェントで利用できるようになります。
なお、Mastraエージェント内でのみツールを使用する場合は、MCPサーバーを作成する必要はありません。このAPIは、Mastraツールを外部のMCPクライアントに公開するためのものです。Mastra内では、MCPを介さずにツールを直接利用できます。
stdio(サブプロセス)およびSSE(HTTP)MCPトランスポート の両方に対応しています。
プロパティ
新しいMCPServerを作成するには、サーバーと提供するツールに関する基本的な情報を入力する必要があります。
name:
version:
tools:
例えば、新しいMCPServer
インスタンスを作成する方法は次のとおりです。
import { MCPServer } from "@mastra/mcp";
import { weatherTool } from "./tools"; // Assuming you have a weather tool defined in this file
const server = new MCPServer({
name: "My Weather Server",
version: "1.0.0",
tools: { weatherTool },
});
メソッド
これらは、MCPServer
インスタンスで呼び出して動作を制御したり情報を取得したりできる関数です。
startStdio()
このメソッドを使うと、サーバーが標準入力および標準出力(stdio)を使って通信を開始します。これは、サーバーをコマンドラインプログラムとして実行する場合によく使われます。
async startStdio(): Promise<void>
stdio を使ってサーバーを起動する方法は次のとおりです:
const server = new MCPServer({
// example configuration above
});
await server.startStdio();
startSSE()
このメソッドは、既存のウェブサーバーと MCP サーバーを統合し、Server-Sent Events(SSE)を使った通信を可能にします。ウェブサーバーのコード内で、SSE やメッセージ用のパスへのリクエストを受け取ったときにこのメソッドを呼び出します。
async startSSE({
url,
ssePath,
messagePath,
req,
res,
}: {
url: URL;
ssePath: string;
messagePath: string;
req: any;
res: any;
}): Promise<void>
HTTP サーバーのリクエストハンドラー内で startSSE
を使う例を以下に示します。この例では、MCP クライアントが http://localhost:1234/sse
で MCP サーバーに接続できます:
import http from "http";
const httpServer = http.createServer(async (req, res) => {
await server.startSSE({
url: new URL(req.url || "", `http://localhost:1234`),
ssePath: "/sse",
messagePath: "/message",
req,
res,
});
});
httpServer.listen(PORT, () => {
console.log(`HTTP server listening on port ${PORT}`);
});
startSSE
メソッドで必要となる値の詳細は以下のとおりです:
url:
ssePath:
messagePath:
req:
res:
getStdioTransport()
startStdio()
でサーバーを起動した場合、stdio 通信を管理するオブジェクトを取得できます。これは主に内部チェックやテスト用です。
getStdioTransport(): StdioServerTransport | undefined
getSseTransport()
startSSE()
でサーバーを起動した場合、SSE 通信を管理するオブジェクトを取得できます。getStdioTransport
と同様に、主に内部チェックやテスト用です。
getSseTransport(): SSEServerTransport | undefined
tools()
このメソッドでは、サーバー作成時に設定されたツールの一覧を確認できます。これは読み取り専用リストで、デバッグ用途に便利です。
tools(): Readonly<Record<string, ConvertedTool>>
例
MCPServer のセットアップとデプロイの実践的な例については、MCPServer のデプロイ例をご覧ください。
関連情報
- MastraでMCPサーバーに接続する方法については、MCPClientのドキュメントをご覧ください。
- Model Context Protocolの詳細については、@modelcontextprotocol/sdkのドキュメント をご参照ください。