記事公開日
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)の料金を問い合わせてみました。
すると、こんなエラーが返ってきました。
{
"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を再起動して同じ質問をしてみます。
今度は正常に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.またはその関連会社の商標です。


