mcpField
A
AWS Resources MCP Server

AWS Resources MCP Server

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

AWS Resources MCP Server について

AWS Resources MCP Server は、Claude が boto3 コードを実行して AWS リソースを照会・管理できるようにする Python 製 MCP サーバーです。git clone なしで Docker イメージから起動でき、AST 解析と制限付きの実行環境でコードを検証します。

主な機能

  1. 01boto3 コードスニペットによる AWS リソースの照会
  2. 02AST によるインポートとコード構造の検証
  3. 03組み込み関数を制限した実行環境
  4. 04複数アーキテクチャ向けの Docker イメージ
  5. 05環境変数または AWS プロファイルによる認証情報の指定

活用シーン

  1. 01Claude から S3 バケットや CodePipeline の実行履歴を照会する
  2. 02DynamoDB などのアクセス権限エラーを調査する
  3. 03コンテナ環境で AWS の運用確認を行う

MCP 対応

本プロジェクトは MCP サーバーであり、aws://query_resources リソースと aws_resources_query_or_modify ツールを MCP クライアントに公開して boto3 コードの実行を可能にします。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"aws-resources-python": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

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

パッケージ
npm@smithery/cli

ツール

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

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

詳細

AWS リソース MCP サーバー

Docker Hub Docker Hub

AWS Resources Server MCP server

概要

boto3 を使ったクエリを通じて、あらゆる AWS リソースにアクセスできる Python コードを生成して実行する、Model Context Protocol(MCP)サーバーの実装です。

ご自身の責任でご利用ください: 慎重な運用担当者がこのツールを使って管理操作を行えるよう、操作を読み取り専用に制限していません。実行できる操作は、AWS ユーザーロールの権限によって決まります。

image

デモ:Dynamodb の権限エラーを修正

https://github.com/user-attachments/assets/de88688d-d7a0-45e1-94eb-3f5d71e9a7c7

AWS MCP サーバーを新たに作成した理由

Developer Access を使って AWS Chatbot を試しました。無料利用枠では、リソースに対するクエリが月 25 回までに制限されています。次のプランは月額 $19 で、使わない機能が 90% 含まれています。また、結果は JSON 形式で返され、制約も多くあります。

aws-mcp も試しましたが、いくつかの問題がありました。

  1. セットアップの手間:Git リポジトリをクローンし、ローカル環境をセットアップする必要がありました
  2. 安定性の問題:Mac では十分に安定していませんでした
  3. Node.js スタック:Python 開発者のため、Node.js のコードベースに効果的に貢献できませんでした

そこで、次のような新しい方法を作成しました。

  • Docker イメージから直接実行でき、Git のクローンは不要です
  • Python と boto3 を使用することで、より安定しています
  • Python 開発者が簡単に貢献できます
  • コード実行のための適切なサンドボックス機能を備えています
  • すべてをコンテナ内に収め、クリーンな状態を保ちます

Model Context Protocol とその仕組みについて詳しくは、Anthropic の MCP ドキュメントをご覧ください。

コンポーネント

リソース

サーバーは次のリソースを公開します。

  • aws://query_resources:boto3 のクエリを通じて AWS リソースにアクセスできる動的リソース
クエリの例

実行できるクエリの例を以下に示します。

  1. S3 バケットの一覧表示:
s3 = session.client('s3')
result = s3.list_buckets()
  1. 最新の CodePipeline デプロイメントを取得:
def get_latest_deployment(pipeline_name):
    codepipeline = session.client('codepipeline')

    result = codepipeline.list_pipeline_executions(
        pipelineName=pipeline_name,
        maxResults=5
    )

    if result['pipelineExecutionSummaries']:
        latest_execution = max(
            [e for e in result['pipelineExecutionSummaries']
             if e['status'] == 'Succeeded'],
            key=itemgetter('startTime'),
            default=None
        )

        if latest_execution:
            result = codepipeline.get_pipeline_execution(
                pipelineName=pipeline_name,
                pipelineExecutionId=latest_execution['pipelineExecutionId']
            )
        else:
            result = None
    else:
        result = None

    return result

result = get_latest_deployment("your-pipeline-name")

注:すべてのコードスニペットで、クライアントに返される result 変数を設定する必要があります。result 変数は、AWS 固有のオブジェクトや日時値を適切に処理したうえで、自動的に JSON 形式に変換されます。

ツール

サーバーは AWS クエリを実行するためのツールを提供します。

  • aws_resources_query_or_modify
    • AWS リソースをクエリまたは変更する boto3 コードスニペットを実行します
    • 入力:
      • code_snippet(文字列):AWS リソースをクエリする boto3 を使用した Python コード
      • クエリ結果を格納する result 変数をコード内で設定する必要があります
    • 許可されているインポート:
      • boto3
      • operator
      • json
      • datetime
      • pytz
      • dateutil
      • re
      • time
    • 使用できる組み込み関数:
      • 基本型:dict、list、tuple、set、str、int、float、bool
      • 操作:len、max、min、sorted、filter、map、sum、any、all
      • オブジェクト処理:hasattr、getattr、isinstance
      • その他:print、import
実装の詳細

サーバーには、いくつかの安全機能が含まれています。

  • インポートとコード構造を検証する、AST ベースのコード解析
  • 使用できる組み込み関数を制限した実行環境
  • AWS 固有のオブジェクトを適切に処理する結果の JSON シリアライズ
  • 適切なエラー処理と報告

セットアップ

前提条件

AWS リソースをクエリするには、適切な権限を持つ AWS 認証情報が必要です。次の手順で取得できます。

  1. AWS アカウントで IAM ユーザーを作成します
  2. プログラムによるアクセス用のアクセスキーを生成します
  3. IAM ユーザーに、クエリする AWS サービスに必要な権限があることを確認します

次の環境変数が必要です。

  • AWS_ACCESS_KEY_ID:AWS アクセスキー
  • AWS_SECRET_ACCESS_KEY:AWS シークレットキー
  • AWS_SESSION_TOKEN:(任意)一時的な認証情報を使用する場合の AWS セッショントークン
  • AWS_DEFAULT_REGION:AWS リージョン(設定されていない場合は、デフォルトで 'us-east-1' になります)

~/.aws/credentials ファイルに保存されたプロファイルも使用できます。その場合は、AWS_PROFILE 環境変数にプロファイル名を設定します。

注:AWS 認証情報は安全に保管し、バージョン管理に絶対にコミットしないでください。

Smithery 経由でインストールする

Smithery 経由で AWS Resources MCP Server を Claude Desktop に自動インストールするには:

npx -y @smithery/cli install mcp-server-aws-resources-python --client claude
Docker でのインストール

イメージをローカルでビルドするか、Docker Hub からプルできます。このイメージは Linux プラットフォーム用にビルドされています。

対応プラットフォーム
  • Linux/amd64
  • Linux/arm64
  • Linux/arm/v7
オプション 1:Docker Hub からプルする
docker pull buryhuang/mcp-server-aws-resources:latest
オプション 2:ローカルでビルドする
docker build -t mcp-server-aws-resources .

コンテナを実行します:

docker run \
  -e AWS_ACCESS_KEY_ID=your_access_key_id_here \
  -e AWS_SECRET_ACCESS_KEY=your_secret_access_key_here \
  -e AWS_DEFAULT_REGION=your_AWS_DEFAULT_REGION \
  buryhuang/mcp-server-aws-resources:latest

または、保存済みの認証情報とプロファイルを使用します:

docker run \
  -e AWS_PROFILE=[AWS_PROFILE_NAME] \
  -v ~/.aws:/root/.aws \
  buryhuang/mcp-server-aws-resources:latest

クロスプラットフォームでの公開

複数のプラットフォーム向けに Docker イメージを公開するには、docker buildx コマンドを使用できます。次の手順に従ってください。

  1. 新しいビルダーインスタンスを作成します(まだ作成していない場合):

    docker buildx create --use
    
  2. 複数のプラットフォーム向けにイメージをビルドしてプッシュします:

    docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t buryhuang/mcp-server-aws-resources:latest --push .
    
  3. 指定したプラットフォームでイメージが利用可能であることを確認します:

    docker buildx imagetools inspect buryhuang/mcp-server-aws-resources:latest
    

Claude Desktop での使用方法

Docker で実行する
ACCESS_KEY_ID と SECRET_ACCESS_KEY を使用する例
{
  "mcpServers": {
    "aws-resources": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AWS_ACCESS_KEY_ID=your_access_key_id_here",
        "-e",
        "AWS_SECRET_ACCESS_KEY=your_secret_access_key_here",
        "-e",
        "AWS_DEFAULT_REGION=us-east-1",
        "buryhuang/mcp-server-aws-resources:latest"
      ]
    }
  }
}
PROFILE を使用し、ローカルの AWS 認証情報をマウントする例
{
  "mcpServers": {
    "aws-resources": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AWS_PROFILE=default",
        "-v",
        "~/.aws:/root/.aws",
        "buryhuang/mcp-server-aws-resources:latest"
      ]
    }
  }
}
Git clone で実行する
git clone とプロファイルを使用して実行する例
{
  "mcpServers": {
    "aws": {
      "command": "/Users/gmr/.local/bin/uv",
      "args": [
        "--directory",
        "/<your-path>/mcp-server-aws-resources-python",
        "run",
        "src/mcp_server_aws_resources/server.py",
        "--profile",
        "testing"
      ]
    }
  }
}

コメント

MCP は初めてですか?

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

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