mcpField
M
MCP Serverless

MCP Serverless

ローカル
github.com/tilfinクラウド・インフラ185 週間前に更新

MCP Serverless について

MCP Serverlessは、サーバーレスMCPサーバーの構築とツール管理に使うパッケージです。インメモリのクライアント・サーバー接続に対応し、リクエストのコンテキストでクライアントの認証情報を渡せます。

主な機能

  1. 01ツールの登録と管理
  2. 02ツールリクエストの処理
  3. 03インメモリの接続作成
  4. 04リクエストコンテキストでの認証情報の受け渡し

活用シーン

  1. 01サーバーレスMCPサービスの構築
  2. 02インメモリでのクライアントとサービスの接続
  3. 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:サーバーが標準入出力を介してリクエストを処理できるようにします

実装例をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。