CloudTrail MCP Server がリリースされたので使ってみた

CloudTrail MCP Server がリリースされたので使ってみた

2025.09.13

いわさです。

AWS Labs には AWS 公式から提供されている様々な MCP サーバーがあります。
今朝アナウンスがありましたが、CloudTrail MCP サーバーがリリースされました。

https://aws.amazon.com/about-aws/whats-new/2025/09/aws-cloudtrail-mcp-server-enhanced-security-analysis/

コンソールから CloudTrail を調査すること多いと思うのですが、この様々な AI エージェントツールなどから MCP サーバー経由で調査やトラブルシューティングが行えるようになります。
これはなかなか使い所多そうですね。

MCP サーバーの構成

まずは MCP サーバーの設定を行います。
今回私は Amazon Q Developer を使いましたが MCP サーバーが使える任意のクライアントで設定してみてください。
詳細な設定方法は以下のリポジトリを参照しましょう。

https://github.com/awslabs/mcp/tree/main/src/cloudtrail-mcp-server

Amazon Q Developer でグローバルに設定する場合であれば、~/.aws/amazonq//mcp.jsonを編集します。
uvxawslabs.cloudtrail-mcp-server@latestを指定しましょう。
あとは環境変数AWS_PROFILEも指定しておきます。どうも指示の際にプロファイルを指定してもうまく切り替えて動いてくれなかったので、ここでしっかり指定する必要があるみたいです。

~/.aws/amazonq//mcp.json
			
			{
  "mcpServers": {

:

    "awslabs.cloudtrail-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "command": "uvx",
      "args": [
        "awslabs.cloudtrail-mcp-server@latest"
      ],
      "env": {
        "AWS_PROFILE": "hoge",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "transportType": "stdio"
    }
  }
}

		

上記設定後に Amazon Q Developer を起動すると CloudTrail MCP Server がロードされたことが確認できました。

			
			% q chat
✓ playwright loaded in 1.77 s
✓ awslabs.aws-documentation-mcp-server loaded in 2.52 s
✓ awslabs.cloudtrail-mcp-server loaded in 2.86 s


    ⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
 ⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
 ⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
 ⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
 ⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
 ⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧

╭─────────────────────────────── Did you know? ────────────────────────────────╮
│                                                                              │
│       You can specify wait time (in ms) for mcp server loading with q        │
│     settings mcp.initTimeout {timeout in int}. Servers that takes longer     │
│ than the specified time will continue to load in the background. Use /tools  │
│                           to see pending servers.                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

/help all commands  •  ctrl + j new lines  •  ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-sonnet-4

> /mcp

playwright
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ playwright loaded in 1.77 s

awslabs.cloudtrail-mcp-server
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ awslabs.cloudtrail-mcp-server loaded in 2.86 s

awslabs.aws-documentation-mcp-server
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ awslabs.aws-documentation-mcp-server loaded in 2.52 s

> 

		

使ってみる

さて、何ができるのか試してみますか。
ドキュメントによると、CloudTrail だけでなく CloudTrail Lake 側も使って調べてくれるみたいですね。
イベント検索やユーザーアクティビティの分析ができたりします。

IAM を指定して操作履歴を確認してみます。

			
			> IAMロール「cm-iwasa.takahito」の直近3日の操作ハイライトを5行でまとめてください

> IAMロール「cm-iwasa.takahito」の直近3日の操作ハイライトを調べます。CloudTrailでこのロールに関連するイベントを検索しましょう。


🛠️  Using tool: lookup_events from mcp server awslabs.cloudtrail-mcp-server
 ⋮ 
 ● Running lookup_events with the param:
 ⋮  {"name": "lookup_events",
 ⋮    "arguments": {"region": "us-east-1",
 ⋮      "start_time": "3 days ago",
 ⋮      "attribute_key": "Username",
 ⋮      "attribute_value": "cm-iwasa.takahito",
 ⋮      "max_results": 50}}

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t


 ⋮ 
 ● Completed in 1.608s


> IAMロール「cm-iwasa.takahito」の直近3日間の操作ハイライト(5行まとめ):

1. 通知サービス活動: 9月11日21:26-21:33にかけて、AWS Notificationsサービスで通知イベントの一覧取得(ListNotificationEvents、ListManagedNotificationEvents)を頻繁に実行

2. IAM管理操作: 9月11日21:28にIAMロール一覧(ListRoles)とインスタンスプロファイル一覧(ListInstanceProfiles)を複数回実行し、IAMリソースの確認作業を実施

3. コスト分析: 9月11日21:26にCost Explorerでコスト取得(GetCostAndUsage)とコスト予測(GetCostForecast)を実行し、料金分析を実施

4. ヘルス・サポート確認: 9月11日21:26にTrusted Advisorチェック(DescribeTrustedAdvisorChecks)とAWS Healthイベント(DescribeEventAggregates)を確認

5. コンソール利用: 全ての操作がMFA認証済みのWebブラウザ(Chrome)からAWSマネジメントコンソール経由で実行され、主に監視・管理業務に従事


		

あまりピンと来る出力内容ではなかったです。
というのもよく見てみるとリージョン指定しているんですねこれ。デフォルトでus-east-1が指定されるみたいです。
ワークロードがバージニア北部リージョンで動いていなかったので、グローバルリソース系だけ抽出された感じだろうか。

ということで私がメインで使っている東京リージョンを指定して、今度はどういうユーザーが EC2 を起動したのかリストアップさせてみます。
「直近の」という指定をしてみたのですが、まずは 7 日間で調べ、結果が良い感じに得られなかったみたいで 30 日間まで広げて再検索してくれました。MCP サーバー関係ないですが、この結果をもとに調整してトライしなおしてくれるのは良いですね。

			
			> 最近東京リージョンでいつ誰がどういうEC2インスタンスを作成したか、調べてください

> 東京リージョン(ap-northeast-1)でのEC2インスタンス作成履歴を調べます。CloudTrailを使ってRunInstancesイベントを検索しましょう。


🛠️  Using tool: lookup_events from mcp server awslabs.cloudtrail-mcp-server
 ⋮ 
 ● Running lookup_events with the param:
 ⋮  {"name": "lookup_events",
 ⋮    "arguments": {"region": "ap-northeast-1",
 ⋮      "attribute_key": "EventName",
 ⋮      "attribute_value": "RunInstances",
 ⋮      "start_time": "7 days ago",
 ⋮      "max_results": 50}}

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t


 ⋮ 
 ● Completed in 0.379s

> 過去7日間にはEC2インスタンスの作成がありませんでした。もう少し期間を広げて過去30日間で確認してみます。


🛠️  Using tool: lookup_events (trusted) from mcp server awslabs.cloudtrail-mcp-server
 ⋮ 
 ● Running lookup_events with the param:
 ⋮  {"name": "lookup_events",
 ⋮    "arguments": {"attribute_key": "EventName",
 ⋮      "max_results": 50,
 ⋮      "start_time": "30 days ago",
 ⋮      "attribute_value": "RunInstances",
 ⋮      "region": "ap-northeast-1"}}

 ⋮ 
 ● Completed in 0.671s


> 過去30日間の東京リージョンでのEC2インスタンス作成履歴を確認しました。以下が結果の要約です:

## 実際にインスタンスが作成されたイベント(成功)

### 1. 2025年9月5日 05:00:02
• **実行者**: cm-iwasa.takahito
• **インスタンスID**: i-005b05a688094c935
• **インスタンスタイプ**: t3.micro
• **AMI**: ami-0842bde16a2d87772
• **インスタンス名**: hoge0905ec2
• **VPC**: vpc-0bec28e7f268388c6
• **サブネット**: subnet-03fb13e345e80a5fb

### 2. 2025年8月29日 05:25:38
• **実行者**: 不明(AWSアカウント)
• **インスタンスID**: i-08aba90b2b3abfee3
• **インスタンスタイプ**: t3.micro
• **AMI**: ami-0842bde16a2d87772
• **VPC**: vpc-92c9d5f5
• **サブネット**: subnet-fdb861b5

### 3. 2025年8月29日 05:10:35
• **実行者**: cm-iwasa.takahito
• **インスタンスID**: i-0273a647a2590f325
• **インスタンスタイプ**: t3.micro
• **AMI**: ami-07faa35bbd2230d90
• **VPC**: vpc-3b4cab5d
• **サブネット**: subnet-b461c1fc

### 4. 2025年8月28日 05:14:31
• **実行者**: cm-iwasa.takahito
• **インスタンスID**: i-033c88422c81b33fa
• **インスタンスタイプ**: t3.micro
• **AMI**: ami-07faa35bbd2230d90
• **インスタンス名**: hoge0828ami
• **VPC**: vpc-3b4cab5d
• **サブネット**: subnet-b461c1fc

## AWS Batchによる試行(DryRun)

8月26日には、AWS Batchサービスが多数のDryRun(実際には実行されない試行)を行っていました。これらはc4.largeインスタンスタイプでの試行でしたが、実際にはインスタンスは作成されませんでした。

最近の実際のEC2インスタンス作成は主にcm-iwasa.takahitoユーザーによって行われており、t3.microインスタンスが使用されています。

		

8/29 の「不明(AWSアカウント)」がかなり気になりますが、概ね私が検証用に EC2 を起動した履歴が確認できました。

さいごに

本日は CloudTrail MCP Server がリリースされたので使ってみました。

Amazon Q Developer だとデフォルトで組み込まれているuse_awsで AWS CLI をうまいこと使いこなしてくれるのでそれで十分な気もするのですが、他の AI エージェントだと採用シーンが結構あるかもしれないですね。ぜひ試してみてください!

この記事をシェアする

FacebookHatena blogX

関連記事