AWS Resources MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides containerized deployment and cross-platform publishing of the MCP server, supporting multiple architectures including Linux/amd64, Linux/arm64, and Linux/arm/v7.

  • Enables querying GitHub resources through the AWS CodePipeline service, allowing access to repository deployment information and pipeline execution details.

  • Enables running generated Python code to interact with AWS resources through boto3, with support for various Python libraries and functions for AWS service interaction.

AWS リソース MCP サーバー

概要

boto3 を介して任意の AWS リソースをクエリするための、生成された Python コードの実行を提供するモデルコンテキストプロトコル (MCP) サーバー実装。

自己責任でお願いします。操作をReadyOnlyに限定していないため、慎重な運用担当者がこのツールを使って管理操作を行うことができます。実行できる操作の権限は、AWSユーザーロールによって決まります。

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

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

なぜ別の AWS MCP サーバーが必要なのでしょうか?

AWS Chatbot を開発者アクセスで試してみました。無料利用枠ではリソースに対して月25クエリまでという制限があります。次の利用枠は月額19ドルで、私が使わない機能の90%が含まれています。結果はJSON形式で、多くの制限があります。

aws-mcpを使用しようとしましたが、いくつかの問題が発生しました。

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

そこで私は次のような新しいアプローチを考案しました。

  • Docker イメージから直接実行 - git クローンは不要
  • 安定性を高めるためにPythonとboto3を使用
  • Pythonユーザーが簡単に貢献できるようにする
  • コード実行のための適切なサンドボックスが含まれています
  • すべてをコンテナに入れて清潔に保つ

モデルコンテキストプロトコルとその動作の詳細については、 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
    • boto3 コードスニペットを実行して AWS リソースをクエリまたは変更する
    • 入力:
      • code_snippet (文字列): boto3 を使用して AWS リソースをクエリする Python コード
      • コードはクエリ出力をresult変数に設定する必要がある
    • 許可されるインポート:
      • ボト3
      • オペレーター
      • JSON
      • 日時
      • ピッツ
      • 日付ユーティリティ
      • 時間
    • 利用可能な組み込み関数:
      • 基本型: dict、list、tuple、set、str、int、float、bool
      • 演算: len、max、min、sorted、filter、map、sum、any、all
      • オブジェクト処理: hasattr、getattr、isinstance
      • その他: 印刷、輸入

実装の詳細

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

  • インポートとコード構造を検証するための 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経由で Claude Desktop 用の AWS Resources MCP Server を自動的にインストールするには:

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クローンで実行する

git clone と profile で実行した例

{ "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" ] } } }
-
security - not tested
A
license - permissive license
-
quality - not tested

Claude が boto3 を使用して Python コードを実行し、会話から直接 AWS リソースをクエリおよび管理できるようにするモデルコンテキストプロトコル サーバー。

  1. Overview
    1. Why Another AWS MCP Server?
      1. Components
        1. Resources
        2. Example Queries
        3. Tools
        4. Implementation Details
      2. Setup
        1. Prerequisites
        2. Installing via Smithery
        3. Docker Installation
      3. Cross-Platform Publishing
        1. Usage with Claude Desktop
          1. Running with Docker
          2. Running with Git clone
        ID: nx30klxurg