メインコンテンツまでスキップ

AWS AppSync MCPサーバー

AI アシスタントがバックエンド API を管理・操作できるようにする、AWS AppSync 向けの Model Context Protocol (MCP) サーバーです。

概要

AWS AppSync MCP サーバーは、GraphQL API、データソース、リゾルバー、その他の AppSync リソースを作成する機能を提供することで、API の管理を簡素化します。これにより、API 開発の効率化と、自然言語による対話を通じた AWS バックエンドサービスとのより容易な統合が実現します。

機能

  • API 管理: さまざまな認証タイプで AppSync API を作成・設定
  • GraphQL API の作成: スキーマ定義と認証を備えた GraphQL API のセットアップ
  • API キー管理: 認証用の API キーの生成と管理
  • API キャッシュ: API パフォーマンス向上のためのキャッシュ設定
  • データソース管理: API をさまざまな AWS バックエンドサービス(DynamoDB、Lambda、RDS など)に接続
  • 関数管理: 複雑なビジネスロジックのための AppSync 関数の作成と管理
  • チャネル名前空間管理: チャネル名前空間によるリアルタイムサブスクリプションのセットアップ
  • ドメイン名管理: API のカスタムドメイン名の設定
  • リゾルバー管理: GraphQL フィールドをデータソースに接続するリゾルバーの作成
  • スキーマ管理: GraphQL スキーマの定義と更新
  • 読み取り専用モード: すべての操作を読み取り専用に制限し、あらゆる変更を防止するオプションのセキュリティモードを有効化

前提条件

  1. Astral または GitHub README から uv をインストールします
  2. uv python install 3.10 を使用して Python をインストールします
  3. AWS AppSync へのアクセス権を持つ AWS 認証情報をセットアップします
    • AWS AppSync が有効化された AWS アカウントが必要です
    • aws configure または環境変数で AWS 認証情報を設定します
    • IAM ロール/ユーザーに AWS AppSync を使用する権限があることを確認します

セットアップ

インストール

KiroCursorVS Code
Add to KiroInstall MCP ServerInstall on VS Code

設定

MCP クライアントの設定に MCP サーバーを追加します(例: Kiro の場合、~/.kiro/settings/mcp.json を編集します)

AWS プロファイルの使用

標準的な AWS プロファイルベースの認証の場合:

{
"mcpServers": {
"awslabs.aws-appsync-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-appsync-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}

一時的な認証情報の使用

一時的な認証情報(AWS STS、IAM ロール、フェデレーションから取得したものなど)の場合:

{
"mcpServers": {
"awslabs.aws-appsync-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-appsync-mcp-server@latest"],
"env": {
"AWS_ACCESS_KEY_ID": "your-temporary-access-key",
"AWS_SECRET_ACCESS_KEY": "your-temporary-secret-key", // pragma: allowlist secret
"AWS_SESSION_TOKEN": "your-session-token",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}

--allow-write による書き込み操作の有効化

ユーザーの AWS アカウント内にリソースを作成または変更するツールを有効にします。このフラグが有効になっていない場合、サーバーは読み取り操作のみを許可する読み取り専用モードで動作します。これにより、AppSync リソースへのあらゆる変更を防止し、セキュリティが強化されます。読み取り専用モードでは:

  • 読み取り操作は通常どおり動作します
  • 書き込み操作(create_apicreate_graphql_apicreate_datasource など)はブロックされ、権限エラーを返します

このモードは特に以下の用途に有用です:

  • デモンストレーション環境
  • セキュリティ上の配慮が必要なアプリケーション
  • 一般公開されている AI アシスタントとの統合
  • 意図しない変更から本番 API を保護する場合

例:

{
"mcpServers": {
"awslabs.aws-appsync-mcp-server": {
"command": "uvx",
"args": [
"awslabs.aws-appsync-mcp-server@latest",
"--allow-write"
],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1"
}
}
}
}

Docker の設定

docker build -t awslabs/aws-appsync-mcp-server . でビルドした後:

{
"mcpServers": {
"awslabs.aws-appsync-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"awslabs/aws-appsync-mcp-server:latest"
],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1"
},
"disabled": false,
"autoApprove": []
}
}
}

環境変数

  • AWS_PROFILE: 認証情報に使用する AWS CLI プロファイル
  • AWS_REGION: 使用する AWS リージョン(デフォルト: us-east-1)
  • AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY: 明示的な AWS 認証情報(AWS_PROFILE の代替)
  • AWS_SESSION_TOKEN: 一時的な認証情報用のセッショントークン(AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY と併用)
  • FASTMCP_LOG_LEVEL: ログレベル(ERROR、WARNING、INFO、DEBUG)

ツール

このサーバーは、MCP インターフェースを通じて以下のツールを公開します:

create_api

指定された設定で新しい AppSync API を作成します。

create_api(name: str) -> dict

create_graphql_api

認証やその他の設定オプションを備えた新しい GraphQL API を作成します。

create_graphql_api(
name: str,
authentication_type: str = "API_KEY"
) -> dict

create_api_key

AppSync API での認証に使用する API キーを作成します。

create_api_key(
api_id: str,
description: str = None,
expires: int = None
) -> dict

create_api_cache

パフォーマンス向上のために AppSync API のキャッシュを作成・設定します。

create_api_cache(
api_id: str,
ttl: int = 3600,
api_caching_behavior: str = "FULL_REQUEST_CACHING",
type: str = "SMALL"
) -> dict

create_datasource

API を DynamoDB、Lambda、RDS などのバックエンドサービスに接続するデータソースを作成します。

create_datasource(
api_id: str,
name: str,
type: str,
service_role_arn: str = None,
dynamodb_config: dict = None,
lambda_config: dict = None,
elasticsearch_config: dict = None,
relational_database_config: dict = None
) -> dict

create_function

再利用可能なビジネスロジックのための AppSync 関数を作成します。

create_function(
api_id: str,
name: str,
data_source_name: str,
function_version: str = "2018-05-29",
request_mapping_template: str = None,
response_mapping_template: str = None
) -> dict

create_channel_namespace

リアルタイムサブスクリプション用のチャネル名前空間を作成します。

create_channel_namespace(
api_id: str,
name: str,
publish_auth_modes: list = None,
subscribe_auth_modes: list = None
) -> dict

create_domain_name

AppSync API のカスタムドメイン名を作成します。

create_domain_name(
domain_name: str,
certificate_arn: str,
description: str = None
) -> dict

create_resolver

GraphQL フィールドをデータソースに接続するリゾルバーを作成します。

create_resolver(
api_id: str,
type_name: str,
field_name: str,
data_source_name: str = None,
request_mapping_template: str = None,
response_mapping_template: str = None,
kind: str = "UNIT"
) -> dict

create_schema

API の GraphQL スキーマを作成または更新します。

create_schema(
api_id: str,
definition: str
) -> dict

使用例

プロンプト説明
Create a GraphQL API named "blog-api" with API key authentication指定した名前と認証タイプで新しい GraphQL API を作成します
Add a GraphQL schema with a Post type with an id primary key, content and author fieldsカスタムの型とフィールドで API スキーマを作成または更新します
Create a DynamoDB data source for my API connecting to the "posts" tableAPI を DynamoDB テーブルに接続するデータソースをセットアップします
Create a resolver for the "getPosts" query fieldGraphQL クエリの実行を処理するリゾルバーを作成します
Set up API caching with 1 hour TTL for better performanceAPI の応答時間を改善するためのキャッシュを設定します
Create an API key that expires in 30 days特定の有効期限を持つ API キーを生成します
Create a Lambda data source for custom business logicAPI を AWS Lambda 関数に接続するデータソースをセットアップします

AWS AppSync リソース

このサーバーは、以下の目的で AWS AppSync サービスの API を使用します:

  • GraphQL API の作成と管理
  • データソースの設定(DynamoDB、Lambda、RDS など)
  • リゾルバーの作成と管理
  • スキーマの定義と更新
  • API キーと認証の管理
  • キャッシュの設定
  • リアルタイムサブスクリプションのセットアップ

セキュリティに関する考慮事項

  • 認証情報の管理には AWS プロファイルを使用してください
  • IAM ポリシーを使用して、必要な AWS AppSync リソースのみにアクセスを制限してください
  • セキュリティ強化のため、AWS STS から取得した一時的な認証情報(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN)を使用してください
  • アプリケーションやサービスには、一時的な認証情報を用いる AWS IAM ロールを実装してください
  • 認証情報を定期的にローテーションし、一時的な認証情報には実用上可能な限り短い有効期限を使用してください
  • AWS AppSync のサービスクォータと制限に注意してください
  • --allow-write フラグは慎重に使用し、書き込み操作が必要な場合にのみ使用してください

⚠️ 重要: エージェントに対する責任はお客様にあります

MCP サーバーを使用するエージェントの動作と権限については、お客様が単独で責任を負います。

  • デフォルトでは、MCP サーバーは読み取り専用モードで動作します。
  • 書き込みアクセスを有効にするには、必要な IAM 権限を明示的に MCP に設定し、"--allow-write" フラグを使用して MCP サーバー経由での AWS AppSync に対する作成操作を有効にする必要があります。
  • 常に最小権限の原則に従い、エージェントの動作に必要な権限のみを付与してください。
  • 書き込み操作を有効にする場合は、データのバックアップを取得することを推奨し、LLM が生成した指示を実行前に慎重に検証してください。このような操作は、アプリケーションの計画されたメンテナンスウィンドウ中に実施してください。
  • AWS AppSync MCP サーバーを自動化ワークフローに統合する際は、慎重に行うことを推奨します。

ライセンス

このプロジェクトは Apache License, Version 2.0 の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。