aws-mcp-connector について
aws-mcp-connector は、ホストにインストールされた AWS CLI 経由でエージェントがコマンドを実行できる Go 製 MCP サーバーです。AWS リソースの調査や操作を対象とし、状態を変更するコマンドは既定でブロックされ、サーバーと呼び出しの両方で確認が必要です。
主な機能
- 01AWS CLI コマンドの実行
- 02既定で読み取り専用
- 03二段階の書き込み制御
- 04AWS ID とプロファイルのツール
- 05Markdown または JSON の応答
活用シーン
- 01エージェントから AWS リソースを調査
- 02実行前の AWS CLI 構文確認
- 03利用可能なサービスの制限
MCP 対応
MCP クライアントに AWS CLI 実行、ヘルプ、ID 確認、プロファイル一覧のツールを提供します。書き込み操作には `AWS_MCP_ALLOW_WRITE=true` と、呼び出し時の `confirm=true` が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Model Context Protocolに対応した単一の静的 Go バイナリです。エージェントから AWS CLI コマンドを実行できます。CLI がサポートするすべてのサービスで、あらゆる aws <service> <operation> の呼び出しが可能です。状態を変更する操作には、デフォルトで読み取り専用の安全制御が適用されます。
インストールが必要な Python も uv も、実行時依存関係もありません。必要なのはバイナリと .mcp.json だけです。AWS SDK を再実装するのではなく、ホストにすでにインストールされ、設定済みの aws バイナリを呼び出します(プロファイル、SSO、IAM ロール、静的キーなど、AWS CLI 自身の認証情報チェーンで解決されるものを使用します)。そのため、サービスを厳選したサブセットに限定することなく、CLI の機能をすべて利用できます。
✨ 開発の背景
厳選された限られた AWS ツールしか使えないエージェントは、その範囲外の操作が必要になった途端に行き詰まります。このコネクターは代わりに AWS CLI 自体をラップするため、新しいツールが作られるのを待たずに、エージェントから
aws s3 ls、aws ec2 describe-instances、aws iam list-usersなど、CLI で実行できるあらゆる操作を実行できます。状態を変更するコマンドはデフォルトでブロックされ、サーバー側での許可と呼び出し時のconfirm=trueの両方が必要です。そのため、調査やデバッグをすぐに安全に始められます。
🧰 ツール
| ツール | 機能 | 書き込み |
|---|---|---|
aws_exec | 任意の aws <service> <operation> ... コマンドを実行します。デフォルトでは読み取り専用です。状態を変更するコマンドには、サーバー側の AWS_MCP_ALLOW_WRITE=true と呼び出し時の confirm=true の両方が必要です。 | ✅(制限付き) |
aws_help | aws <service> [subcommand] help のテキストを表示します。常に安全です。aws_exec を呼び出す前に、正確な構文を確認するために使用してください。 | |
aws_whoami | 設定済みの認証情報から解決される AWS アイデンティティ(アカウント、ARN、ユーザー/ロール)を表示します。 | |
aws_list_profiles | ホスト上の ~/.aws/config に設定されている名前付きプロファイルを一覧表示します。 |
すべてのツールは任意の response_format を受け付けます。markdown(デフォルト。チャット UI 向けの見やすい表)または json(プログラムからの利用向け)を指定できます。
🚀 クイックスタート
最速の方法:最新リリースからビルド済みバンドルを入手します。
aws-mcp-connector-plugin-<version>-<os>-<arch>.zipをダウンロードして解凍し、
中にあるplugin/フォルダーをCowork/Claudeに指定します(SETUP.mdの
手順4を参照)。Goツールチェーンは不要です。
ソースからビルドする場合:
# 1. Build
cd go-server
go mod tidy
go build -o aws-connector-server .
cp aws-connector-server ../plugin/servers/go/
# 2. Set up auth — needs the aws CLI itself installed and configured
# (aws configure / aws sso login) — see SETUP.md
export AWS_PROFILE=default # optional, only if not using "default"
# 3. Run
./go-server/aws-connector-server # serves MCP over stdio
またはmake buildを実行してください。すべてのショートカット
(test、vet、fmt、lint、tidy)についてはMakefileを参照してください。
Claude/Coworkプラグインとして設定する方法を含む完全な手順は、 **SETUP.md**を参照してください。
🔐 設定
設定はすべて環境変数で、プラグインの
.mcp.jsonを通じて渡されます。
| 変数 | 用途 | デフォルト |
|---|---|---|
AWS_PROFILE | 使用する~/.aws/config内の名前付きプロファイル。 | 未設定(デフォルトプロファイル) |
AWS_REGION | 他で設定されていない場合のデフォルトリージョン。 | AWS CLI独自のデフォルト |
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN | 静的認証情報。プロファイル/SSO/ロールを使用しない場合にのみ必要です。 | 未設定 |
AWS_MCP_ALLOW_WRITE | 変更を伴うコマンドを許可する場合は"true"に設定します(呼び出しごとにconfirm=trueも必要です)。 | false(読み取り専用) |
AWS_MCP_ALLOWED_SERVICES | AWS CLIサービス名の許可リスト(カンマ区切り)。例:"s3,ec2"。 | 未設定(制限なし) |
AWS_MCP_CLI_PATH | awsバイナリへのパス。 | PATHから解決されるaws |
🧪 品質基準
これはおもちゃのスクリプトではありません。本番環境のGoサービスに求められるのと 同じチェックを実施しています。
- ✅ すべての入力検証パスを対象とするユニットテスト(
go test ./...) - ✅ **
go vetとgofmt**をクリーンに実行 - ✅ golangci-lint(govet、staticcheck、errcheck、gosecなど)
- ✅ govulncheck — 依存関係グラフに既知の脆弱性がないことを確認
- ✅ **CodeQL**による、プッシュごとの静的セキュリティ分析
- ✅ エンドツーエンドで検証済み。モックではなく、実際の(またはサンドボックス化された)AWS CLIバックエンドに対して検証しています
- ✅ **Dependabot**がGoモジュールとActionsを最新の状態に維持
これらはすべて、プッシュとPRのたびにCIで実行されます。
🏷️ リリースとバージョニング
バージョンはセマンティックバージョニングに従い、
mainへのConventional Commitsから
release-pleaseによって自動的に作成されます。
fix: ...→ パッチ(v0.1.0→v0.1.1)feat: ...→ マイナー(v0.1.1→v0.2.0)feat!: .../BREAKING CHANGE:フッター → メジャー(v0.2.0→v1.0.0)
マージされたPRごとに、自動生成されたCHANGELOG.mdを含む、 継続的な**"chore(main): release vX.Y.Z"** PRが更新されます。そのPRをマージすると、次の処理が行われます。
- リリースにタグを付け、GitHubで公開します
- linux/darwin/windows × amd64/arm64向けの、インストール可能なZIP形式のプラグインバンドルをビルドして添付します
- 正確なアセットから
server.jsonを再生成し(最新バージョンとSHA-256ハッシュを反映)、GitHub OIDCによる認証を使用して、mcp-publisherで 公式MCPレジストリに公開します。保存されたシークレットは不要です
.github/workflows/release-please.ymlと
.github/workflows/publish-mcp-registry.ymlを参照してください
(既存のタグに対してworkflow_dispatchで手動実行することもできます)。
📁 ディレクトリ構成
aws-mcp-connector/
├── README.md ← you are here
├── SETUP.md ← step-by-step setup guide
├── CONTRIBUTING.md ← how to contribute
├── CODE_OF_CONDUCT.md
├── SECURITY.md ← vulnerability reporting
├── CODEOWNERS
├── LICENSE ← MIT
├── Makefile ← build / test / lint shortcuts
├── .golangci.yml ← lint rules
├── release-please-config.json ← semver/changelog automation config
├── .release-please-manifest.json
├── server.json ← MCP Registry manifest (regenerated fresh per release by CI)
├── scripts/
│ └── render-server-json.sh ← rebuilds server.json from a release's zip assets
├── .github/
│ ├── workflows/
│ │ ├── ci.yml ← build, vet, test, lint, govulncheck
│ │ ├── codeql.yml ← security scanning
│ │ ├── pr-title.yml ← Conventional Commits PR title check
│ │ ├── release-please.yml ← version PRs, tagging, GitHub releases
│ │ ├── publish-mcp-registry.yml ← publishes server.json to the MCP Registry
│ │ └── rebuild-release-assets.yml ← manual re-attach fallback
│ ├── ISSUE_TEMPLATE/
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── dependabot.yml
├── go-server/ ← the MCP server source
│ ├── main.go
│ ├── main_test.go
│ ├── go.mod / go.sum
│ └── README.md
└── plugin/ ← installable Cowork/Claude plugin
├── .claude-plugin/plugin.json
├── .mcp.json ← holds credentials locally — never commit real ones
└── servers/go/ ← compiled binary goes here
🤝 コントリビューション
PRやイシューを歓迎します。詳しいガイド(セットアップ、コーディング規約、新しいツールの追加方法)と **行動規範については、CONTRIBUTING.md**を参照してください。
mainは保護されています。メンテナーによる変更も含め、すべての変更は
CIが成功した状態でプルリクエスト経由で取り込まれます。PRのタイトルは
Conventional Commitsに従う必要があります。これが
上記の自動バージョニングを決定します。
セキュリティ上の問題を見つけた場合は、公開イシューを作成せず、 **SECURITY.md**の手順に従ってください。
📄 ライセンス
MIT © FerhatDundar
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。