1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

aws login認証でPricing MCPサーバーを使おうとしたら詰まった話

  • このエントリーをはてなブックマークに追加

この記事のポイント

この記事では、aws login(SSO認証)環境でAWS Labs提供のMCPサーバー(Pricing MCP)がエラーになる問題の原因と解決方法を解説しています。

  • 詰まったポイント:
    aws loginで認証した状態でPricing MCPを使うとclient_creation_failedエラーが発生します。
  • 原因:
    SSO認証の認証情報を読み取るために必要なbotocore[crt]が、uvxのデフォルト環境に含まれていません。
  • 解決方法:
    MCP設定ファイルのargsに"--with""botocore[crt]"を追加するだけで解決できます。

こんにちは!DXソリューション営業本部の菊池です。

aws loginを使用した状態でMCPサーバーを使おうとしたら認証エラーが発生し、アクセスキーなら動くのに、なぜ?という状況に遭遇しました。
aws loginはアクセスキーを直接管理する必要がなく、セキュリティ面でも推奨される認証方式です。
せっかくならこの方法で運用したいと思い調べていたところ、解決策を見つけたので原因と対処法を共有します。

実行環境

今回の実行環境は以下のとおりです。

  • Kiro CLI
  • Ubuntu(WSL2)
  • 認証方式:aws loginによるWebセッション認証
  • アクセスキーは未設定

ポイントは、アクセスキーを直接設定せず、aws loginコマンドでSSO認証を行っているという点です。

詰まったところ:エラー発生

Pricing MCPを使って、EC2インスタンス(t3.nano)の料金を問い合わせてみました。

Kiro CLIでPricing MCPを使ってt3.nanoの料金を問い合わせている画面

すると、こんなエラーが返ってきました。

client_creation_failedエラーの表示画面
{
  "status": "error",
  "error_type": "client_creation_failed",
  "message": "Failed to create AWS Pricing client: Missing Dependency:
    Using the login credential provider requires an additional dependency.
    You will need to pip install \"botocore[crt]\" before proceeding.",
  "service_code": "AmazonEC2",
  "region": "us-east-1"
}

client_creation_failed
AWSクライアントの作成自体が失敗しているようです。

原因:botocore[crt]が足りない

エラーメッセージを見ると、答えが書いてありました。

You will need to pip install "botocore[crt]" before proceeding.

つまり、botocore[crt]という追加パッケージをインストールすればよいということです。

botocore[crt]とは

botocore[crt]は、botocoreの追加依存(extra)パッケージで、AWS Common Runtime(CRT)ライブラリを追加するものです。
今回のようにaws login(SSO認証)を使用する場合は、キャッシュされたSSOトークンからAWSの一時認証情報を取得するために、このbotocore[crt]が必要となります。

Pricing MCPで発生した理由

aws-pricing-mcp-serverは内部的にboto3(およびそのベースとなるbotocore)を使用してAWSサービスにアクセスしています。
boto3でAWSサービスにアクセスするには認証情報が必須ですが、標準のbotocoreではキャッシュされたSSOトークンからAWSの一時認証情報を取得することができません。
そのため、今回のclient_creation_failedエラーが発生していました。

参考資料

公式GitHubリポジトリのpyproject.tomlで、Pricing MCP Serverの依存パッケージを確認できます。

また、boto3の公式ドキュメントにも、SSO認証(aws login)を使う場合はbotocore[crt]が必要と記載されています。

次のステップ:uvx環境へのインストール

ここまでで説明したbotocore[crt]ですが、MCPサーバーはuvx環境で自動起動されるため、ローカルにpip installしても意味がありません。
次のセクションで、uvx環境に追加パッケージを入れる方法を紹介します。

解決方法:mcp.jsonに2行追加するだけ

解決方法はシンプルです。KiroのMCP設定ファイルを編集します。

修正前(エラーが出る設定)

初めに試した際は、argsにMCPサーバーのパッケージ名のみを指定していました。

"aws-pricing": {
  "command": "uvx",
  "args": [
    "awslabs.aws-pricing-mcp-server@latest"
  ],
  "env": {
    "FASTMCP_LOG_LEVEL": "ERROR",
    "AWS_PROFILE": "default",
    "AWS_REGION": "ap-northeast-1"
  },
  "disabled": false,
  "autoApprove": []
}

修正後(正常に動作する設定)

argsの先頭に"--with""botocore[crt]"の2つを追加しました。

"aws-pricing": {
  "command": "uvx",
  "args": [
    "--with",
    "botocore[crt]",
    "awslabs.aws-pricing-mcp-server@latest"
  ],
  "env": {
    "FASTMCP_LOG_LEVEL": "ERROR",
    "AWS_PROFILE": "default",
    "AWS_REGION": "ap-northeast-1"
  },
  "disabled": false,
  "autoApprove": []
}

変更点はたったこれだけです。

※注意:設定変更後はKiro CLIの再起動が必要です。

uvxの--withオプションとは

uvxはPythonパッケージを一時的な仮想環境で実行するツールです。
今回のMCP設定では"command": "uvx"を指定しているため、MCPサーバーの起動時にuvxが実行され、一時的な仮想環境が構築されます。
--withオプションを使うと、メインパッケージに加えて追加の依存パッケージをその仮想環境にインストールできます。

今回の場合、--with botocore[crt]を指定することで、botocore[crt]がMCPサーバーの実行環境に追加インストールされ、エラーが解消されます。

動作確認

設定変更後、Kiro CLIを再起動して同じ質問をしてみます。

設定変更後にPricing MCPで料金が正常に取得できた画面

今度は正常にt3.nano(東京リージョン)の料金が返ってきました!

  • 時間単価:$0.0052/時間
  • 1ヶ月(730時間):$3.796(約$3.80)

無事、aws loginの認証情報のままPricing MCPが使えるようになりました。

まとめ

ポイントまとめ

  • 症状aws login環境でMCPサーバーを使うとclient_creation_failedエラー
  • 原因:SSO認証情報の読み取りに必要なbotocore[crt]がuvxのデフォルト環境に含まれない
  • 解決~/.kiro/settings/mcp.jsonのargsに"--with""botocore[crt]"を追加

なお、この問題はPricing MCPに限らず、AWS認証情報を使用するuvx起動のMCPサーバーで同様に発生する可能性があります。
同じエラーに遭遇した場合は、--with botocore[crt]を追加してみてください。

QESではKiroについて積極的に情報発信していきますので是非ご覧ください!

もし「このサービスについて知りたい」「AWS環境の構築、移行」などのリクエストがございましたら、弊社お問合せフォームまでお気軽にご連絡ください。 複雑な内容に関するお問い合わせの場合には直接営業からご連絡を差し上げます。 また、よろしければ以下のリンクもご覧ください!
<QES関連ソリューション/ブログ>

<QESが参画しているAWSのセキュリティ推進コンソーシアムがホワイトペーパーを公開しました>

※Amazon Web Services、"Powered by Amazon Web Services"ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード