[小ネタ] CCAPI MCP サーバーに任意のプロファイルでアクセスする

[小ネタ] CCAPI MCP サーバーに任意のプロファイルでアクセスする

2025.10.27

Introduction

ローカルでaws cliやaws sdkを使ったプログラムを実行する際、
普段はAWSumeで各ロールにMFAを入力してスイッチしています。
同様に対象のロールにスイッチしてAWS Cloud Control API (CCAPI)のMCPサーバを使いたいと思って設定した備忘録です。

Tools

AWSume

複数のAWSアカウント・ロールを切り替える方法はいろいろありますが、
私はAWSumeを使ってます。
このツールはPython製のCLIツールで、AWSの一時的な認証情報(STSトークン)を自動的に取得し、
環境変数として設定してくれます。

以下のようにすれば
hoge_roleの認証情報(~/.aws/config)が環境変数に設定され、
そのシェルセッション内でAWS CLIやSDKを安全に利用できます。

% awsume hoge_role

MFAにも対応してますし、これを使えばプロファイルの切り替えが簡単にできます。

AWS Cloud Control API (CCAPI) MCPサーバ

AWS Cloud Control API (CCAPI) MCP サーバーは、
開発者が自然言語を使用してAIエージェントやLLMクライアント経由で
AWSリソースのCRUDを可能にするMCPサーバです。

例えば、Claude Codeに「hogehogeという名前でS3 バケットを作って」みたいに依頼すれば
AWSリソースの操作ができます。

今回は「普段AWSumeを使ってスイッチしながらaws cliを使っている人が
任意のアカウントにスイッチしてCCAPI MCPを使う」をやってみます。

Environment

  • MacBook Pro (14-inch, M3, 2023)
  • OS : MacOS 15.7
  • Node : v24.9.0
  • AWSume : 4.5.4
  • aws-cli : 2.23.11
  • Claude Code : 2.0.25

Try

ではCCAPI MCPサーバをClaude Codeから使ってみましょう。
.mcp.jsonファイルを対象リポジトリのルートディレクトリに作成してください。

{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.ccapi-mcp-server@latest","--readonly"],
      "env": {
        "AWS_PROFILE": "your ~/.aws/credentials account name",
        "DEFAULT_TAGS": "enabled",
        "SECURITY_SCANNING": "enabled",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

ファイルを追加したら/mcpでreconnectすれば完了です。
しかし、この状態では~/.aws/credentialsにあるアカウントは指定できても
~/.aws/configにあるプロファイルとしてはアクセスできません。

awsumeの場合、環境変数にそのプロセスだけで使用できる一時的な認証情報を設定します。
MCPサーバーは別プロセスなので環境変数を継承できません。

{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "env": {
        "AWS_PROFILE": "hoge"  // ← これしか見ない
      }
    }
  }
}

なので、以下のように一時的なcredentialを作成します。

AWSumeを使う場合 : --output-profileを使う

awsume--output-profile(または-o)オプションを指定すると、
一時認証情報を~/.aws/credentialsファイルに書き込みます。

% awsume hoge --output-profile hoge_temp

実行後の~/.aws/credentialsの内容:

[cm]
aws_access_key_id = AKIA...
aws_secret_access_key = ...

#必要なくなったら消しましょう
[hoge_temp]
aws_access_key_id = ASIA...  # ← 一時認証情報
aws_secret_access_key = ...   # ← 一時認証情報
aws_session_token = ...       # ← セッショントークン
region = ap-northeast-1

そして、hoge_tempを.mcp.jsonで指定します。

{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.ccapi-mcp-server@latest","--readonly"],
      "env": {
        "AWS_PROFILE": "hoge_temp",  // ← 変更
        "DEFAULT_TAGS": "enabled",
        "SECURITY_SCANNING": "enabled",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

.mcp.jsonを更新したらClaude Codeを再起動しましょう。
これでClaude Codeから、指定したプロファイルでCCAPI MCPサーバを使ったアクセスができるようになります。

一時認証情報にも有効期限があるので注意しましょう。

# 有効期限確認方法

# credentialsファイルの更新日時を確認
ls -l ~/.aws/credentials

# またはAWS CLIで確認
aws sts get-caller-identity --profile hoge_temp
# エラーが出たら期限切れ

AWSumeを使わない場合

AWSumeを使ってない場合でも、一時認証を取得してcredentialsに書き込むスクリプトを用意すれば問題ありません。
↓のような、コード生成するプロンプトをclaude codeなりcodexなりに入力してスクリプトを生成してください。

AWS AssumeRoleで一時認証情報を取得するCLIツールを作成してください。

機能:
- ~/.aws/configとcredentialsファイルを読み込み
- MFA対応
- 一時認証情報を<プロファイル名>_tempとして保存
- 環境変数は「MCP_AWS_PROFILE」、「MCP_AWS_REGION」という環境変数名にしてください
- アカウントIDと有効期限を表示

使用: node script.js <profile-name>

作成したスクリプトを↓のようなシェルから実行します。

#!/bin/bash
# 使用方法: source script.sh <profile-name>

if [ $# -eq 0 ]; then
  echo "使用方法: source script.sh <profile-name>"
  return 1 2>/dev/null || exit 1
fi

node script.js "$1" && \
export MCP_AWS_PROFILE="${1}_temp" && \
export MCP_AWS_REGION="${2:-ap-northeast-1}" && \
echo "" && \
echo "✓ 環境変数を設定: MCP_AWS_PROFILE=${1}_temp" && \
echo "💡 Claude Code を再起動してください"

.mcp.jsonは以下のように記述しておけば、プロファイル切り替えのたびに
記述を変えなくても再起動だけで済みます。

{
  "mcpServers": {
    "awslabs.ccapi-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.ccapi-mcp-server@latest","--readonly"],
      "env": {
        "AWS_PROFILE": "${MCP_AWS_PROFILE}",
        "AWS_REGION": "${MCP_AWS_REGION:-ap-northeast-1}",
        "DEFAULT_TAGS": "enabled",
        "SECURITY_SCANNING": "enabled",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

これで、
source ./script.sh <プロファイル名>
と実行してMCPサーバを再起動するだけでCCAPI MCPサーバに任意のプロファイルでアクセスできます。

References

この記事をシェアする

FacebookHatena blogX

関連記事