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を使用しようとしましたが、いくつかの問題が発生しました。
- セットアップの手間: Gitリポジトリをクローンしてローカルセットアップを行う必要があった
- 安定性の問題: 私のMacでは十分に安定していませんでした
- Node.jsスタック: Python開発者として、私はNode.jsのコードベースに効果的に貢献することができませんでした。
そこで私は次のような新しいアプローチを考案しました。
- Docker イメージから直接実行 - git クローンは不要
- 安定性を高めるためにPythonとboto3を使用
- Pythonユーザーが簡単に貢献できるようにする
- コード実行のための適切なサンドボックスが含まれています
- すべてをコンテナに入れて清潔に保つ
モデルコンテキストプロトコルとその動作の詳細については、 Anthropic の MCP ドキュメントを参照してください。
コンポーネント
リソース
サーバーは次のリソースを公開します。
aws://query_resources
: boto3 クエリを通じて AWS リソースへのアクセスを提供する動的リソース
クエリの例
実行できるクエリの例を次に示します。
- S3 バケットを一覧表示します。
- 最新の CodePipeline デプロイメントを取得します。
注:すべてのコードスニペットは、クライアントに返される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認証情報が必要です。認証情報は、以下の方法で取得できます。
- AWSアカウントでIAMユーザーを作成する
- プログラムによるアクセスのためのアクセスキーの生成
- 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 を自動的にインストールするには:
Dockerのインストール
イメージはローカルでビルドすることも、Docker Hubからプルすることもできます。このイメージはLinuxプラットフォーム用にビルドされています。
サポートされているプラットフォーム
- Linux/amd64
- Linux/arm64
- Linux/arm/v7
オプション1: Docker Hubからプルする
オプション2: ローカルで構築する
コンテナを実行します。
または、保存された資格情報とプロファイルを使用します。
クロスプラットフォームパブリッシング
複数のプラットフォーム向けにDockerイメージを公開するには、 docker buildx
コマンドを使用します。以下の手順に従ってください。
- 新しいビルダー インスタンスを作成します(まだ作成していない場合)。Copy
- 複数のプラットフォーム用のイメージをビルドしてプッシュします。Copy
- 指定されたプラットフォームでイメージが使用可能であることを確認します。Copy
Claude Desktopでの使用
Dockerで実行する
ACCESS_KEY_IDとSECRET_ACCESS_KEYを使用した例
PROFILE を使用してローカル AWS 認証情報をマウントする例
Gitクローンで実行する
git clone と profile で実行した例
This server cannot be installed
Claude が boto3 を使用して Python コードを実行し、会話から直接 AWS リソースをクエリおよび管理できるようにするモデルコンテキストプロトコル サーバー。
- Overview
- Why Another AWS MCP Server?
- Components
- Setup
- Cross-Platform Publishing
- Usage with Claude Desktop