🧠 serverless-mcp-server について
Serverless Framework を使い、MCP サーバーを AWS Lambda にデプロイして Amazon API Gateway 経由で公開する最小構成のテンプレートです。MCP ツールを構築する開発者向けで、ローカル実行機能と add ツールの例を備えています。
主な機能
- 01AWS Lambda へのデプロイ
- 02API Gateway の HTTP POST エンドポイント
- 03serverless-offline によるローカル開発
- 04add ツールのサンプル
- 05Jest テスト
活用シーン
- 01AWS Lambda での MCP サーバー公開
- 02ローカルでの MCP リクエスト検証
- 03最小構成テンプレートを基にした拡張
MCP 対応
/mcp の HTTP POST エンドポイントを通じて MCP サーバーを公開します。サンプルの add ツールで JSON-RPC のやり取りを確認できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 serverless-mcp-server
AWS Lambda にデプロイし、Amazon API Gateway 経由で公開する、Serverless Framework を使用した非常にシンプルな Model Context Protocol(MCP)サーバーです。 このスケルトンは、このリポジトリで AWS Lambda 関数と Model Context Protocol(MCP)サーバーを統合するための middy ミドルウェアを開発した、Frédéric Barthelet の素晴らしい成果をもとにしています。
長い説明
🛠 特長
- 🪄 @modelcontextprotocol/sdk を使用した最小限の MCP サーバー構成
- 🚀 単一の AWS Lambda 関数としてデプロイ
- 🌐 API Gateway 経由で /mcp に HTTP POST エンドポイントを公開
- 🔄 serverless-offline によるローカル開発をサポート
- 🧪 JSON-RPC のやり取りを使ったシンプルなサンプルツール(add)を収録
📦 プロジェクト構成
serverless-mcp-server/
├── src/ # Source code
│ └── index.js # MCP server handler
├── .gitignore # Git ignore file
├── package.json # Project dependencies
├── package-lock.json # Project lock file
├── README.md # This documentation file
└── serverless.yml # Serverless Framework config
🛠 前提条件
- Node.js v22+
- Open Source Serverless または Serverless Framework v3+
- Serverless Offline
🚀 はじめに
- 依存関係をインストールします:
npm install
- open source severless をグローバルにインストールします(まだインストールしていない場合):
npm install -g osls
- serverless-offline でローカル実行します
npm sls offline
ローカルエンドポイントは次の場所で利用できます:
POST http://localhost:3000/dev/mcp
serverless-offline を使用すると、Api Gateway V1(REST API)の動作を反映して、デフォルトで /dev/ ステージが追加されます。
Api Gateway V2(HTTP API)への切り替え
API Gateway V2 を使用する場合は、serverless.yml ファイルの events セクションで http の代わりに httpApi を使用するよう変更できます。これにより、REST API ではなく HTTP API を使用できます。
これにより、REST API ではなく HTTP API を使用できます。
functions:
mcpServer:
handler: src/index.handler
events:
- httpApi:
path: mcp
method: post
ローカルエンドポイントは次の場所で利用できます:
POST http://localhost:3000/mcp
API Gateway V2 を使用する場合、/dev/ ステージは不要です。
テスト用の curl および Postman リクエストも、それに応じて変更してください。
🧪 MCP inspector でテストする
実行します
npx @modelcontextprotocol/inspector node src/index.mjs
これにより、MCP inspector がポート 6274 で起動します。その後、ブラウザーで http://127.0.0.1:6274 にアクセスして inspector を開けます。
inspector でパラメーターを設定します:
Transport TypeとしてHTTP Streamableを選択しますURLにhttp://localhost:3000/dev/mcpを設定します- Connect をクリックします
inspector でツールの一覧とそのパラメーターを確認できます。
🧪 curl リクエストでテストする
ツールの一覧表示
curl --location 'http://localhost:3000/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
➕ add ツールを使用する
curl --location 'http://localhost:3000/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "add",
"arguments": {
"a": 5,
"b": 3
}
}
}'
🧪 jest でテストする
__tests__ フォルダーには基本的なテストがいくつか含まれています。次のコマンドで実行できます:
npm run test
🧬 コードの概要
このコードは、このリポジトリで AWS Lambda 関数と Model Context Protocol(MCP)サーバーを統合するための middy ミドルウェアを開発した、Frédéric Barthelet の素晴らしい成果をもとにしています。
src/index.js
import middy from "@middy/core";
import httpErrorHandler from "@middy/http-error-handler";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import mcpMiddleware from "middy-mcp";
const server = new McpServer({
name: "Lambda hosted MCP Server",
version: "1.0.0",
});
server.tool("add", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}));
export const handler = middy()
.use(mcpMiddleware({ server }))
.use(httpErrorHandler());
📡 AWS にデプロイする
次のコマンドを実行するだけです:
sls deploy
デプロイ後、コマンドの出力に表示された URL で MCP サーバーを利用できます。
🔖 引用
このリポジトリは、次のニュースレターで紹介されました:
- Serverless Advocate Newsletter #33 — Lee Gilmore(AWS Hero)
📘 ライセンス
MIT — 自由にフォーク、調整して、ご自身のバージョンをデプロイしてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。