Skip to Content

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:

string
サーバーの名前(例:「My Weather Server」など)。

version:

string
サーバーのバージョン(例:「1.0.0」など)。

tools:

ToolsInput
利用可能にしたいツールを含むオブジェクトです。これにはMastraやVercel AI SDKで作成したツールを含めることができます。

例えば、新しい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:

URL
ユーザーがリクエストしているウェブアドレス。

ssePath:

string
クライアントが SSE 用に接続する URL の特定部分(例: '/sse')。

messagePath:

string
クライアントがメッセージを送信する URL の特定部分(例: '/message')。

req:

any
ウェブサーバーからのリクエストオブジェクト。

res:

any
ウェブサーバーからのレスポンスオブジェクト。データを返すために使用します。

getStdioTransport()

startStdio() でサーバーを起動した場合、stdio 通信を管理するオブジェクトを取得できます。これは主に内部チェックやテスト用です。

getStdioTransport(): StdioServerTransport | undefined

getSseTransport()

startSSE() でサーバーを起動した場合、SSE 通信を管理するオブジェクトを取得できます。getStdioTransport と同様に、主に内部チェックやテスト用です。

getSseTransport(): SSEServerTransport | undefined

tools()

このメソッドでは、サーバー作成時に設定されたツールの一覧を確認できます。これは読み取り専用リストで、デバッグ用途に便利です。

tools(): Readonly<Record<string, ConvertedTool>>

MCPServer のセットアップとデプロイの実践的な例については、MCPServer のデプロイ例をご覧ください。

関連情報