Serverless MCP Framework について
Serverless MCP FrameworkはAWS Serverlessサービスを使ってMCPサーバーをデプロイ・構成するフレームワークです。AWS上でMCPエンドポイントを構築する開発者向けで、SSMパラメーターとLambda関数でツール、リソース、プロンプトを追加し、EventBridgeやStep Functions関連のリソースも作成します。
主な機能
- 01AWS SAMによるビルドとデプロイ
- 02エンドポイントと認証パラメーターの設定
- 03SSMでツール、リソース、プロンプトを宣言
- 04Lambda関数によるツール実行
- 05EventBridgeルールとStep Functionsステートマシンの作成
活用シーン
- 01認証設定付きのMCPエンドポイントをAWSにデプロイ
- 02SSMパラメーターでMCPツールやリソースを追加
- 03対応するLambda関数としてツール処理を実装
MCP 対応
このフレームワークはMCPサーバーのエンドポイントをデプロイし、設定したツール、リソース、プロンプトをMCPクライアントに公開します。SSMパラメーターとLambda関数でサーバーの内容を拡張できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
サーバーレス MCP フレームワーク
AWS サーバーレスサービスを使用した MCP サーバーの実装です。
作成されるリソース
開始、停止、タスクの開始を処理する EventBridge ルールに接続された一連の Lambda 関数です。特定の日付まで待機してイベントを送信する StepFunction ステートマシンを作成します。

インストール
SAM CLI を使用します:
sam build
sam deploy --guided
パラメーター
このアプリケーションのデプロイ時には、いくつかのパラメーターが必要です:
-
EventBusName:統合先のイベントバス名
-
Project:プロジェクト識別子
-
Environment:環境識別子
-
ServerName:MCP サーバー名
-
ServerVersion:MCP サーバーのバージョン
-
Instructions:MCP サーバーの指示
-
DomainName:エンドポイントのドメイン名
-
AcmCertificateArn:指定したドメイン名の証明書 ARN
-
AuthenticationType:MCP サーバーの認証タイプ
-
AuthenticationToken:MCP サーバーの認証トークン
-
OAuthIssuerUrl:OAuth 認証の発行者 URL
-
OAuthAuthorizationUrl:OAuth 認証の認可 URL
-
OAuthTokenUrl:OAuth 認証のトークン URL
-
OAuthRevocationUrl:OAuth 認証の失効 URL
-
OAuthRedirectUris:OAuth 認証のリダイレクト URI
出力
- ServerEndpoint:MCP サーバーのエンドポイント
開発
必要条件:
- NodeJS >= 22.x
NPM モジュールをインストールします
npm install
MCP サーバーの仕様を指定して .env ファイルを設定します:
SERVER_NAME=local
SERVER_VERSION=1.0.0
INSTRUCTIONS=""
AWS 環境の設定を指定して .env ファイルを設定します:
AWS_PROFILE=<your AWS profile>
AWS_REGION=<selected AWS region>
SSM_PREFIX=
TOOLS_SSM_PREFIX=
RESOURCES_SSM_PREFIX=
PROMPTS_SSM_PREFIX=
TOOL_LAMBDA_PREFIX=
ローカル MCP サーバーを実行します
npm run dev
MCP サーバーは http://localhost:3000/mcp で実行されています。
ツールインスペクター
MCP Inspector を実行します
npm run inspector
インスペクターを次のように設定します:
- トランスポートタイプ:
Streamable HTTP - URL:
http://localhost:3000/mcp
「Connect」ボタンで MCP サーバーに接続します。
Claude Desktop
mcp-remote を使用して、HTTP を STDIO にプロキシします:
{
"mcpServers": {
"example": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/dev/mcp",
"--transport",
"http-only"
]
}
}
}
デプロイ
必要条件:
プロジェクトをビルドします
sam build
スタックをデプロイします
sam deploy --profile <your AWS profile> --guided
使用方法
ソリューションをインストールしたら、SSM パラメーターと Lambda 関数を使用して、MCP サーバーにリソース、プロンプト、ツールを追加できます。
SSM パラメーターは /<project name>/<environment name>/ で始まる必要があります。例:/mcp/dev/tools/echo。
統合の例として、テンプレートを参考にできます:template.integration.yaml。
リソース
SSM パラメーターは /<project name>/<environment name>/resources/ で始まる必要があります。例:/mcp/dev/resources/example。
内容は有効な JSON 形式で、次のプロパティを含める必要があります:
- name:リソース名
- uri:リソース URI。例:"config://example"
- content:リソースのテキスト内容
SAM テンプレートでは次のように宣言できます:
ExampleResourceParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/resources/example"
Type: String
Value: |
{
"name": "example",
"uri": "config://example",
"content": "Just an example resource"
}
プロンプト
SSM パラメーターは /<project name>/<environment name>/prompts/ で始まる必要があります。例:/mcp/dev/prompts/echo。
内容は有効な JSON 形式で、次のプロパティを含める必要があります:
- name:プロンプト名
- description:プロンプトの説明
- inputSchema.json:JSON スキーマ
- content:プロンプトテンプレートの内容
テンプレートの内容は、入力データを補間して ejs で展開されます。
SAM テンプレートでは次のように宣言できます:
EchoPromptParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/prompts/echo"
Type: String
Value: |
{
"name": "echo",
"description": "Execute the example tool",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": ["message"]
}
},
"content": "Execute the tool 'echo' with the message '<%= message %>'"
}
ツール
SSM パラメータは、/<project name>/<environment name>/tools/ のプレフィックスで始まる必要があります。例:/mcp/dev/tools/echo。
内容は有効な JSON 形式で、次のプロパティを含める必要があります。
- name:プロンプト名
- description:プロンプトの説明
- inputSchema.json:JSON Schema
実行する関連 Lambda 関数の名前は、<project name>-<environment name>-tools-<tool name> である必要があります。例:mcp-dev-tools-echo。
関数の入力と出力は、Converse API のパターンに従う必要があります。
パラメータは、SAM テンプレートで次のように宣言できます。
EchoToolParameter:
Type: AWS::SSM::Parameter
Properties:
Name: !Sub "/${Project}/${Environment}/tools/echo"
Type: String
Value: |
{
"name": "echo",
"description": "Print the message provided in input",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": ["message"]
}
}
}
Lambda 関数の実装は、次のようになります。
exports.handler = async ({ toolUseId, name, input }, context) => {
return {
name,
toolUseId,
status: 'success',
content: [{
text: input.message
}]
}
}
SAM テンプレート内にインラインで宣言します。
EchoToolFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${Project}-${Environment}-tools-echo"
Handler: index.handler
InlineCode: |
exports.handler = async ({ toolUseId, name, input }, context) => {
return {
name,
toolUseId,
status: 'success',
content: [{
text: input.message
}]
}
}
クレジット
- リポジトリのバッジ:Shields.io
- インフラストラクチャのスキーマ:Cloudcraft
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。