mcpField
🧠
🧠 sam-serverless-mcp-server

🧠 sam-serverless-mcp-server

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

🧠 sam-serverless-mcp-server について

AWS SAM でデプロイし、AWS Lambda 関数として動作する MCP サーバーのひな型です。Amazon API Gateway 経由で HTTP に対応し、構築やローカルテストを行う開発者向けに、基本的な加算ツールの例を含みます。

主な機能

  1. 01SDK を使った最小構成の MCP サーバー
  2. 02単一の AWS Lambda へのデプロイ
  3. 03/mcp の HTTP POST エンドポイント
  4. 04SAM によるローカル開発
  5. 05加算ツールと JSON-RPC の例
  6. 06Jest テスト

活用シーン

  1. 01AWS 上でサーバーレス MCP エンドポイントを構築
  2. 02SAM で MCP リクエストをローカルテスト
  3. 03例のツールを独自サーバー向けに変更

MCP 対応

Amazon API Gateway 経由で /mcp の HTTP POST エンドポイントを公開する MCP サーバーを実装します。加算ツールの例を含み、MCP JSON-RPC リクエストに対応します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

🧠 sam-serverless-mcp-server

AWS Lambda にデプロイし、Amazon API Gateway 経由で公開する、とてもシンプルな Model Context Protocol(MCP)サーバーです。Serverless Application Model(SAM)を使ってデプロイします。 このひな形は、こちらのリポジトリで AWS Lambda 関数と Model Context Protocol(MCP)サーバーを統合するための middy ミドルウェアを開発した、Frédéric Barthelet氏の素晴らしい成果を基にしています。

詳しくはこちら

📖 このシリーズの記事はこちらからお読みください(dev.to)

🛠 特長

  • 🪄 @modelcontextprotocol/sdk を使用した最小限の MCP サーバー構成
  • 🚀 単一の AWS Lambda 関数としてデプロイ
  • 🌐 API Gateway 経由で公開される /mcp の HTTP POST エンドポイント
  • 🔄 SAM によるローカル開発に対応
  • 🧪 JSON-RPC を使った簡単なサンプルツール(add)を収録

📦 プロジェクト構成

sam-serverless-mcp-server/
├── __tests__/              # Jest tests
├── src/                    # Source code
│   └── index.js                # MCP server handler
├── .gitignore              # Git ignore file
├── buildspec.yml           # Buildspec file for AWS CodeBuild and CodePipeline (CI/CD)
├── jest.config.mjs         # Jest config file
├── package.json            # Project dependencies
├── package-lock.json       # Project lock file
├── README.md               # This documentation file
├── samconfig.toml          # Serverless Application Model config
└── template.yml            # Serverless Application Model template

🛠 前提条件

🚀 はじめに

  1. 依存関係をインストールします:
npm install
  1. SAM でローカル実行します
sam local start-api

ローカルエンドポイントは次の場所で利用できます: POST http://localhost:3000/mcp

API Gateway V2(HTTP API)への切り替え

API Gateway V2 を使用する場合は、template.yml ファイルの Events セクションで Api の代わりに HttpApi を使うように変更できます。これにより、REST API の代わりに HTTP API を使用できます。 これにより、REST API の代わりに HTTP API を使用できます。

Events:
  McpHttpApi:
    Type: HttpApi  # 👈 This switches to HTTP API (v2)
    Properties:
      Path: /mcp
      Method: POST

🧪 curl リクエストでテストする

ツールの一覧表示
curl --location 'http://localhost:3000/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/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 にデプロイする

次のコマンドを実行するだけです:

sam build
sam deploy --guided

デプロイ後、MCP サーバーはコマンドの出力に表示された URL で利用できるようになります。

📘 ライセンス

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

コメント

MCP は初めてですか?

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

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