メインコンテンツまでスキップ

セキュリティエージェント MCPサーバー

License: Apache-2.0 Python 3.10+

AWS Security Agent 向けの AWS Labs Model Context Protocol (MCP) サーバーです。自動化されたセキュリティスキャンとペネトレーションテストを提供します。

この MCP サーバーは AWS Security Agent サービスへのフルアクセスを提供し、開発者がソースコードの脆弱性スキャン、稼働中のアプリケーションに対するペネトレーションテストの実行、インテグレーションの管理、自動生成された修正の適用を、MCP 互換の任意のクライアントからすべて行えるようにします。

機能

  • コードセキュリティスキャン — ソースコードの zip 化、アップロード、スキャンを行い、修正を含む検出結果を取得
  • ペネトレーションテスト — ターゲットドメインを介して稼働中のアプリケーションをテスト
  • フル API アクセスcall_api ツールですべての SecurityAgent の操作を公開
  • 自動プロビジョニング — 初回利用時にエージェントスペースと IAM サービスロールを作成
  • .gitignore の尊重 — パッケージングから無視対象ファイルを除外

前提条件

  1. uv がインストールされていること
  2. Python 3.10 以上(uv python install 3.10
  3. AWS 認証情報が設定されていること(aws configure、SSO、または環境変数を使用)

インストール

{
"mcpServers": {
"awslabs.security-agent-mcp-server": {
"command": "uvx",
"args": ["awslabs.security-agent-mcp-server@latest"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}

Docker を使用する場合

{
"mcpServers": {
"awslabs.security-agent-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "AWS_REGION=us-east-1",
"-e", "AWS_ACCESS_KEY_ID",
"-e", "AWS_SECRET_ACCESS_KEY",
"-e", "AWS_SESSION_TOKEN",
"awslabs/security-agent-mcp-server:latest"
]
}
}
}

環境変数

変数説明デフォルト
AWS_REGIONSecurityAgent API 呼び出しに使用する AWS リージョンus-east-1
AWS_PROFILEAWS 認証情報プロファイル名デフォルトプロファイル
FASTMCP_LOG_LEVELログレベル(DEBUG、INFO、WARNING、ERROR)WARNING

利用可能なリージョン

利用可能なリージョンについては AWS ドキュメント を参照してください。

利用可能なツール

セットアップ

ツール説明
setup_check前提条件(認証情報、エージェントスペース、ロール)を検証
setupエージェントスペースと IAM サービスロールを作成または再利用

コードレビュー(オーケストレーション)

ツール説明
start_security_scanコードを zip 化し、S3 にアップロードし、レビューを作成してスキャンを開始します。scan_id を返します。
get_scan_statusスキャンの進行状況をポーリング
get_scan_findings完了したスキャンから検出結果を取得
list_scans追跡中のスキャンを一覧表示
stop_scan実行中のスキャンをキャンセル

修正

ツール説明

フル API アクセス

ツール説明
call_api任意の SecurityAgent API 操作を呼び出します(ペネトレーションテスト、ターゲットドメイン、インテグレーション、アーティファクトなど)
get_api_guide利用可能なすべての操作を動的に一覧表示 + ドキュメントリンク

使用フロー

コードレビュー(ソーススキャン)

1. setup_check()              → verify readiness
2. setup() → provision resources (one-time)
3. start_security_scan(path=".")
4. get_scan_status() → poll until COMPLETED
5. get_scan_findings() → retrieve findings

ペネトレーションテスト

1. setup_check() → setup()   → one-time
2. call_api("CreateTargetDomain", {targetDomainName, verificationMethod})
3. call_api("VerifyTargetDomain", {targetDomainId})
4. call_api("CreatePentest", {agentSpaceId, title, assets: {endpoints: [...]}, serviceRole})
5. call_api("StartPentestJob", {agentSpaceId, pentestId})
6. Poll: call_api("BatchGetPentestJobs", {agentSpaceId, pentestJobIds})
7. call_api("ListFindings", {agentSpaceId, pentestJobId})

任意の操作

1. get_api_guide()            → see all operations + docs link
2. call_api(operation, params) → execute

必要な IAM 権限

以下の権限は お使いの AWS 認証情報(MCP サーバーを実行するアイデンティティ)に必要です。

セットアップ用(一度のみ)

  • iam:CreateRoleiam:PutRolePolicy(新しいサービスロールを作成する場合)
  • s3:CreateBuckets3:PutPublicAccessBlocks3:PutLifecycleConfiguration(新しいバケットを作成する場合)
  • sts:GetCallerIdentity
  • securityagent:CreateAgentSpacesecurityagent:UpdateAgentSpace
  • securityagent:ListAgentSpacessecurityagent:BatchGetAgentSpaces

コードスキャン用

  • s3:PutObject
  • securityagent:CreateCodeReviewsecurityagent:StartCodeReviewJob
  • securityagent:BatchGetCodeReviewJobssecurityagent:StopCodeReviewJob
  • securityagent:ListFindingssecurityagent:BatchGetFindings
  • securityagent:StartCodeRemediationsecurityagent:BatchDeleteCodeReviews

ペネトレーションテストおよびその他の操作用

ユースケースに応じて必要な SecurityAgent 権限を追加してください。利用可能なアクションの詳細については How AWS Security Agent works with IAM を参照してください。

サービスロール

セットアップ時に、サーバーは IAM サービスロール SecurityAgentScanRole を作成します(まだ存在しない場合)。エージェントスペースに既存のロールが見つかった場合は、その権限を検証したうえで再利用できます。

このサービスロールは、アップロードされたコードを読み取るために SecurityAgent サービスによって引き受けられます。

  • 信頼ポリシー: securityagent.amazonaws.com サービスプリンシパル
  • 権限: スキャンバケットに対する S3 読み取り、CloudWatch Logs への書き込み

Note: スキャン対象のソースコードを一時的に保存するために S3 バケットが使用されます。MCP サーバーは自身が作成したバケットに 30 日間のライフサイクルポリシーを設定し、アップロードされたコンテンツは自動的に削除されます。独自のバケットを使用する場合は、ストレージコストを管理するためにライフサイクルルールの追加を検討してください。

コントリビューション

コントリビューションを歓迎します。ガイドラインについては、メインリポジトリの CONTRIBUTING.md を参照してください。

ライセンス

このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細については LICENSE ファイルを参照してください。