MCP Serverless について
MCP Serverlessは、サーバーレスMCPサーバーの構築とツール管理に使うパッケージです。インメモリのクライアント・サーバー接続に対応し、リクエストのコンテキストでクライアントの認証情報を渡せます。
主な機能
- 01ツールの登録と管理
- 02ツールリクエストの処理
- 03インメモリの接続作成
- 04リクエストコンテキストでの認証情報の受け渡し
活用シーン
- 01サーバーレスMCPサービスの構築
- 02インメモリでのクライアントとサービスの接続
- 03リクエストコンテキストを使ったクライアント認証情報の転送
MCP 対応
MCPサーバーとインメモリのクライアント・サーバーサービスを作成するAPIを提供し、stdioトランスポートの例も含みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Serverless
使いやすいインターフェースを通じたツール管理を可能にする、Model Context Protocol(MCP)アーキテクチャのサーバーレス実装です。
概要
このパッケージは、次のことができるMCP サーバーのサーバーレス実装を提供します。
- ツールを登録および管理する
- ツール関連のリクエストを処理する
- インメモリのクライアントとサーバー間の接続を作成する
- クライアントからの認証情報の送信を可能にするため、リクエストにコンテキストを追加する
インストール
npm install @tilfin/mcp-serverless
使い方
ツールの登録と、サービス実装用のクライアントの作成
import { createService, ToolManager } from '@tilfin/mcp-serverless';
// Create a tool manager
const toolManager = new ToolManager();
// Register tools
toolManager.registerTools([
{
name: 'calculator',
description: 'Performs basic arithmetic operations',
inputSchema: {
type: 'object',
properties: {
operation: { type: 'string' },
numbers: { type: 'array', items: { type: 'number' } }
},
required: ['operation', 'numbers']
},
toolFunction: async (params, ctx) => {
if (ctx.apiKey !== 'xyz') throw new Error('Invalid API Key');
let result;
if (params.operation === 'add') {
result = params.numbers.reduce((sum, n) => sum + n, 0);
}
return { result };
}
}
]);
// Create a serverless client
const client = createService(toolManager);
// List available tools
const toolsList = await client.listTools();
// Call a tool
try {
const result = await client.callTool({
name: 'calculator',
arguments: {
operation: 'add',
numbers: [1, 2, 3]
}
});
} catch (err) {
// raise Invalid API Key error
}
// Call a tool with context
const result = await client.callTool({
name: 'calculator',
arguments: {
operation: 'add',
numbers: [1, 2, 3]
},
ctx: { apiKey: 'xyz' }
});
API リファレンス
ToolManager クラス
ツールの登録と処理を管理します。
Tool インターフェース
ツールは次のインターフェースを実装する必要があります。
interface Tool {
name: string;
description: string;
inputSchema: ToolInput;
toolFunction: (args: CallToolRequestArguments, ctx: CallToolRequestContext) => Promise<CallToolResultContent>;
}
createServer(serverInfo, toolManager)
指定されたツールマネージャーを使用してMCP サーバーを作成します。
createService(toolManager)
サーバーレスで動作するインメモリのクライアントとサーバーのセットアップを作成します。
例
標準入出力トランスポート
このパッケージには、クライアントとサーバーの通信にstdioトランスポートを使用する例が含まれています。
StdioClientTransport:クライアントが標準入出力を介してサーバーと通信できるようにしますStdioServerTransport:サーバーが標準入出力を介してリクエストを処理できるようにします
実装例をご覧ください。
- クライアント:stdio_client.mjs
- サーバー:stdio_server.mjs
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。