mcpField
🧠
🧠 serverless-mcp-server

🧠 serverless-mcp-server

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

🧠 serverless-mcp-server について

Serverless Framework を使い、MCP サーバーを AWS Lambda にデプロイして Amazon API Gateway 経由で公開する最小構成のテンプレートです。MCP ツールを構築する開発者向けで、ローカル実行機能と add ツールの例を備えています。

主な機能

  1. 01AWS Lambda へのデプロイ
  2. 02API Gateway の HTTP POST エンドポイント
  3. 03serverless-offline によるローカル開発
  4. 04add ツールのサンプル
  5. 05Jest テスト

活用シーン

  1. 01AWS Lambda での MCP サーバー公開
  2. 02ローカルでの MCP リクエスト検証
  3. 03最小構成テンプレートを基にした拡張

MCP 対応

/mcp の HTTP POST エンドポイントを通じて MCP サーバーを公開します。サンプルの add ツールで JSON-RPC のやり取りを確認できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"serverless": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

🧠 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 の素晴らしい成果をもとにしています。

長い説明

📖dev.to のこちらの記事で全文をお読みください

🛠 特長

  • 🪄 @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

🛠 前提条件

🚀 はじめに

  1. 依存関係をインストールします:
npm install
  1. open source severless をグローバルにインストールします(まだインストールしていない場合):
npm install -g osls
  1. 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 サーバーを利用できます。

🔖 引用

このリポジトリは、次のニュースレターで紹介されました:

📘 ライセンス

MIT — 自由にフォーク、調整して、ご自身のバージョンをデプロイしてください!

コメント

MCP は初めてですか?

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

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