リモート開発メインのソフトウェア開発企業のエンジニアブログです

AWS MCP を調べてみた

結構前ですが、5月の初旬に AWS MCP が GA となりました。

以前は AWS API MCP というのがあったのですが、AWS MCP に置き換えられているようです。

AWS API MCP Server | Welcome to Open Source MCP Servers for AWS

今回、AWS MCP について、単純に試してみるだけでなく色々調べてみます。なお、公式ドキュメントは以下にあります。

AWS MCP Server – Agent Toolkit for AWS

使い方(OAuth)

とは言っても、実際に使ってみないと分からない事も多いのでまずは使ってみます。

AWS MCP を使うには認証が必要ですが、以下の2つの選択肢があります。

  • Option A: OAuth (simple)
  • Option B: SigV4 (advanced)

どちらを使うべきかはドキュメントに記載がありますが、とりあえずは簡単な OAuth を使います。

MCP サーバーの追加

MCP クライアントには以下の URL を設定します。

https://aws-mcp.us-east-1.api.aws/mcp

Claude Code であれば以下のコマンドです。

claude mcp add aws-mcp https://aws-mcp.us-east-1.api.aws/mcp --transport http

認証

MCP クライアントによって細かくは異なりますが、大抵は初回ツール起動時などに認証を求められます。ブラウザで AWS の画面が開きますので、画面に従って進めます。

なお、画面では IAM ユーザーでのログインは出来ますが、Identity Center を使う場合にはそのままではできません。(画面に説明が書いてはあるのですが)別のタブを開いて SSO した後で、ブラウザをリロードすると、Identity Center のユーザーで進めて良いかというようなメッセージに変わりますので、そのまま進めます。

使い方(SigV4)

次に、”advanced” と書かれている SigV4 を使った方法も説明します。前提条件として以下の2つがインストールされている必要があります。

  • AWS CLI
  • uv

この2つがインストールされていれば、使い方はそこまで難しくありません。

以下のような JSON を設定ファイルに追加するだけです。

{
  "mcpServers": {
    "aws-mcp": {
      "command": "uvx",
      "timeout": 100000,
      "transport": "stdio",
      "args": [
        "mcp-proxy-for-aws==1.6.4",
        "https://aws-mcp.us-east-1.api.aws/mcp",
        "--metadata", "AWS_REGION=us-west-2"
      ]
    }
  }
}

後は、 aws sso login 等で認証を終えた後で、Claude Code 等を起動します。

では使い方を簡単に説明したところで、細かな点を見ていきます。

Moba Pro

認証周りについて

OAuth を使う場合、 AWSMCPSignInOAuthAccessPolicy が必要

AWS MCP を使う際の認証方法として OAuth を使う場合、そのユーザーには AWSMCPSignInOAuthAccessPolicy が必要です。ドキュメントに記載されてますが、一応ここにも書いておきます。

OAuth では最大12時間しかセッションが有効でない

OAuth で取得した access token は1時間だけ有効です。ドキュメントによれば “AWS Sign-in automatically refreshes them for up to 12 hours.” との事ですが、1日の始めにログインしても、翌日には再度ログインが必要です。

Identity Center を使ってのログインでも同じような感じなので、人間が使う分には問題無いかと思います。ただ、AWS MCP を自動実行の業務フローなどに組み込みたい場合には問題となります。

なおこの12時間という設定値は(恐らく)変更不可です。

SigV4 を使う場合のセッションの有効期間

SigV4 を使う場合のセッションの有効期間は、その裏側で使っている AWS プロファイルの認証方式によります。Identity Center を使っている場合はデフォルトでは12時間です。

では、定期実行ジョブで使うにはどうすれば良いでしょうか。例えばバッチから Agent Skill を定期実行し、そこから AWS MCP を呼ぶ場合などです。結論から言うと、

  • バッチを AWS 上で実行する場合、IAM Role を使う
  • バッチを AWS 以外で実行する場合は、IAM Roles Anywhere や OIDC フェデレーションを使う
    • 使えない理由がある場合は IAM Access Key を使う

だと思います。

この項は検証していないので、検証したら追記しようと思います。

用意されている MCP ツール

ツールの一覧は以下に記載があります。

Understanding the MCP Server tools – Agent Toolkit for AWS

そのうちのいくつかについて詳しく見てみます。

aws___retrieve_skill

“AWS Knowledge Tools” はドキュメントを検索したりリージョン情報を取得したりといったものですが、面白いものとしては aws___retrieve_skill があります。AWS が用意しているベストプラクティスなどをスキル化したものを取得出来るというツールです。

スキルを使う流れとしては

  1. aws___search_documentation ツールを使ってどのようなスキルがあるかを調べる
  2. aws___retrieve_skill ツールを使って使いたいスキルを取得
  3. スキルを実行

という感じかと思います。以前、以下の記事で書いたとおり、Agent Skills は単なるテキストファイル(+α)です。

Claude のスキルは単なるテキストファイルで特別な仕組みはない – もばらぶエンジニアブログ

どのようなスキルが用意されているかは、以下のレポジトリを参照してください。

aws/agent-toolkit-for-aws: Official, AWS-supported MCP servers, skills, and plugins to help AI agents build on AWS

aws___call_aws

AWS API をそのまま呼び出すものです。多くの人が求めているものかと思います。

ただし、2026/7/15に deprecated となり、3日後の8/31には削除予定との事です。理由としては次に紹介する aws___run_script で同じ事が出来るというものなのですが、単純な処理であれば aws___call_aws で十分なので残しても良いのに、とは思います。

aws___run_script

このツールに Python コード(の文字列)を渡すと、それをサンドボックス環境で実行して結果を返してくれる、というものです。Python コードから boto3 経由(call_boto3 という helper が用意されています)で AWS API を呼び出すことが出来るので、 aws___call_aws で出来る事は全て実行可能です。

aws s3 ls のような単純なことをしたいだけでも、というようなパラメーターを送ります。

{
  "code": "result = await call_boto3(service_name=\"s3\", operation_name=\"ListBuckets\")\nresult"
}

aws___get_presigned_url

S3 へのファイルのアップロード/ダウンロードを行うために S3 の presigned URL を発行するものです。なぜこのようなツールが用意されているかについては以前以下の記事を書きましたので、興味のある方はご参照ください。

現状の MCP では大きなファイルを扱えない – もばらぶエンジニアブログ

その他

プラグイン

Claude Code や Codex にはプラグインという仕組みがありますが、AWS もプラグインを用意しています。

  • Claude Code 向け: aws-core@claude-plugins-official
  • Codex 向け: aws/agent-toolkit-for-aws

これらのプラグインには何が含まれているかというと、

  • AWS MCP サーバー
  • スキル(aws___retrieve_skill で取得出来るものと同じ)
  • その他(hook など)

です。Claude Code や Codex から AWS MCP を使いたい場合は、プラグインを使った方が楽でしょう。

MCP サーバー、認証サーバーの挙動について気づいたこと

AWS MCP サーバー、認証サーバーの挙動は、(当然と言えば当然ですが)各種標準に準拠していて、怪しい挙動などはありませんでした。

もばらぶで開発している MCP ゲートウェイサービスである Bloque から AWS MCP サーバーを使おうとした時に、Bloque 側の問題でそのままでは動かなかったので1点だけ修正しました。

その時に気づいたのですが、MCP の仕様では各種 RFC を参照していますが、RFC では MAY となっているものでも MCP では MUST となっているものがあるということです。具体的には、RFC 8707 Section 2 では

In requests to the authorization server, a client MAY indicate the protected resource

RFC 8707: Resource Indicators for OAuth 2.0

となっていますが、MCP の仕様では以下のようになっています。

MCP clients MUST implement Resource Indicators for OAuth 2.0 as defined in RFC 8707

Authorization – Model Context Protocol

まとめ

AWS MCP サーバーは、AWS API の全ての機能が使えます。普通に Claude Code などから使う分には、OAuth や通常の AWS の認証方式を使えば問題無いのですが、バッチプログラムなどから使う場合には認証周りに一手間必要です。

MCP サーバー関連でお困りのことなどがあれば、以下のお問い合わせフォームよりお気軽にお問い合わせください。

お問い合わせ – もばらぶん

← 前の投稿

WordPress MCP (MCP Adapter) を使う

次の投稿 →

コメントを残す