🧠 cdk-serverless-mcp-server について
cdk-serverless-mcp-serverは、AWS CDKでAWS Lambdaにデプロイし、API Gateway経由でHTTP公開するMCPサーバーのサンプルです。クラウド配置のひな型として、加算ツールとローカル開発用のJestテストを含みます。
主な機能
- 01AWS CDKによるデプロイ
- 02単一のAWS Lambda関数で実行
- 03API Gateway経由でHTTP公開
- 04サンプルのaddツールを収録
- 05Jestによるローカルテスト
活用シーン
- 01クラウドMCPサーバーのひな型作成
- 02HTTP経由でMCPサーバーを公開
- 03JSON-RPCツールのローカルテスト
MCP 対応
AWS Lambda上で動作するMCPサーバーを提供し、API Gatewayの/mcpパスでHTTP POSTを受け付けます。サンプルサーバーにはaddツールが用意されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 cdk-serverless-mcp-server
AWS Lambda にデプロイし、Amazon API Gateway 経由で公開する、AWS CDK を使用してデプロイする非常にシンプルな 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 エンドポイント
- 🔄 jest を使用したローカル開発テストに対応
- 🧪 JSON-RPC 連携を使ったシンプルなサンプルツール(add)を収録
📦 プロジェクト構成
cdk-serverless-mcp-server/
├── __tests__/ # Jest tests
├── bin/ # CDK entry point
├── cdk-serverless-mcp-server.ts # CDK app
├── lib/ # CDK stack
│ └── cdk-serverless-mcp-server-stack.ts # CDK stack
├── src/ # Source code
│ └── index.mjs # MCP server handler
├── .gitignore # Git ignore file
├── cdk.json # CDK Project config
├── package.json # Project dependencies
├── package-lock.json # Project lock file
├── README.md # This documentation file
🛠 前提条件
- Node.js v22+
- AWS CDK v2+
🚀 はじめに
- 依存関係をインストールします:
npm install
- AWS CDK をグローバルにインストールします(未インストールの場合):
npm install -g aws-cdk
- jest でローカルテストを実行します
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 にデプロイする
次を実行します:
npm run layer-dependencies-install # install dependencies for the layer
次に、スタックをデプロイします:
cdk bootstrap
cdk deploy
デプロイ後、コマンドの出力に表示された URL で MCP サーバーを利用できます。
🧪 デプロイ後に curl リクエストでテストする
ツールの一覧表示
curl --location 'http://your-endpoint/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://your-endpoint/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
}
}
}'
📘 ライセンス
MIT — 自由にフォーク、変更し、ご自身のバージョンをデプロイしてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。