mcpField
S
Serverless MCP Framework

Serverless MCP Framework

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

Serverless MCP Framework について

Serverless MCP FrameworkはAWS Serverlessサービスを使ってMCPサーバーをデプロイ・構成するフレームワークです。AWS上でMCPエンドポイントを構築する開発者向けで、SSMパラメーターとLambda関数でツール、リソース、プロンプトを追加し、EventBridgeやStep Functions関連のリソースも作成します。

主な機能

  1. 01AWS SAMによるビルドとデプロイ
  2. 02エンドポイントと認証パラメーターの設定
  3. 03SSMでツール、リソース、プロンプトを宣言
  4. 04Lambda関数によるツール実行
  5. 05EventBridgeルールとStep Functionsステートマシンの作成

活用シーン

  1. 01認証設定付きのMCPエンドポイントをAWSにデプロイ
  2. 02SSMパラメーターでMCPツールやリソースを追加
  3. 03対応するLambda関数としてツール処理を実装

MCP 対応

このフレームワークはMCPサーバーのエンドポイントをデプロイし、設定したツール、リソース、プロンプトをMCPクライアントに公開します。SSMパラメーターとLambda関数でサーバーの内容を拡張できます。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

サーバーレス MCP フレームワーク

CloudFormation Lambda API Gateway

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 サーバーのエンドポイント

開発

必要条件:

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

コメント

MCP は初めてですか?

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

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