
【AWS×MCP】VSCodeとGitHub CopilotでAWS環境を自在に調査!1Password・AWSumeと連携した私の設定を公開
はじめに
アノテーション株式会社 LINE/DevOpsチームの草竹です。
AWS環境のログ調査やリソース確認、みなさんはどうやっていますか?
「AWS CLIでコマンド叩いて……」「マネジメントコンソールにログインして……」という作業、繰り返していると結構面倒ですよね。特に複数のAWSアカウントやロールを切り替えながら作業する場合、認証情報の管理や切り替えが煩雑になりがちです。
MCP (Model Context Protocol) を使うと、エディタ上のAIアシスタント(GitHub Copilotなど)から直接AWS環境を調査できます。とっても便利です!
ただ、実際にセットアップしようとすると……
- AWS MFA認証どうするの?
- 認証情報をmcp.jsonに平文で書くのは怖い……
- プロファイル名を毎回手入力するのは面倒……
過去、私はこういった壁にぶつかりました……。
本記事では、これらの課題を 1Password と AWSume を組み合わせて解決し、AI活用したAWS環境調査環境を構築する方法を、実際にセットアップして動かせるレベルの詳細さでご紹介します。
この記事で得られること
- MCPを使ったAWS環境調査の基本理解
- 1Password CLI × AWSume × VSCode の統合セットアップ手順
${input:}を使った安全な認証情報管理の方法- 複数AWSアカウント環境での効率的な運用ノウハウ
想定読者
- AWS環境の運用・調査業務に携わっている方
- MFA認証が必須のAWS環境で作業している方
- MacOSを利用している方(他OSの方も原理は同じです)
- VSCode + GitHub Copilot を使っている方(他のエディタや AIクライアントでも基本的には同じです)
MCP おさらい
MCPの基本
MCP (Model Context Protocol) は、LLMアプリケーションが外部データソースやツールに安全にアクセスするための標準的なプロトコルです。
MCPを使うことでAIエージェントは次のような外部リソースに安全にアクセスできるようになります
- リアルタイムのデータベース情報
- APIからの最新データ
- ローカルファイルシステム
- クラウド環境(AWS、GCP、Azureなど)
AWS環境調査での具体的なメリット
MCPを導入すると、こんなことがエディタ上で自然言語で実現できます
🙋♂️ 草竹: 「prdアカウントのCloudWatch Logsで、過去1時間にエラーが出ているLambda関数を教えて」
🤖 Copilot: CloudWatch Logsを検索して、エラーログを含むLambda関数のリストを表示
🙋♂️ 草竹: 「us-east-1リージョンで稼働中のEC2インスタンスのうち、t3.microインスタンスを一覧表示して」
🤖 Copilot: EC2 APIを叩いて、該当するインスタンスを表形式で表示
AWS CLIやマネジメントコンソールを開くことなく、コンテキストを切り替えずに調査を進められるのが最大の魅力です!
複数のMCPツールを組み合わせた活用
MCPの真価は、複数のMCPサーバーを同時に使うことで、豊かなコンテキストをもとにタスクをこなせる 点にあります。
例えば、以下のようなユースケースが実現できます。
このように、課題管理ツール(GitHub、Backlog)、監視・アラートツール(PagerDuty)、クラウド環境(AWS)の情報を1つのエージェントで統合的に扱えるため、ブラウザやウィンドウを切り替えることなく、効率的に原因究明に当たれます。
本記事ではAWS Core MCP Serverのセットアップに焦点を当てますが、他のMCPツールと組み合わせることでさらに強力な調査環境を構築できることをぜひ念頭に置いてください!
前提条件と全体アーキテクチャ
環境前提
本記事では以下の環境を前提としています。
| 項目 | 値 |
|---|---|
| OS | macOS 15.7.2 |
| シェル | zsh |
| Python仮想環境 | uv |
| エディタ | Visual Studio Code |
| AIアシスタント | GitHub Copilot |
| AWS認証 | MFA(多要素認証)が有効 |
| MFA管理 | 1Password |
全体ワークフロー
今回構築する環境は、一時プロファイルのセットアップと一時プロファイルのMCP利用の2つのフローに分かれます。
一時プロファイルのセットアップ
ターミナルでAWSumeを実行し、MFA認証済みの一時プロファイルを作成します。
一時プロファイルのMCP利用(AWSリソースへのアクセス)
MCPサーバーが、保存された一時プロファイルを使ってAWSにアクセスします。
必要なツール一覧
| ツール | 役割 | 公式サイト |
|---|---|---|
| 1Password CLI | MFA OTPの自動取得 | 1Password CLI |
| AWSume | AWSプロファイル管理・MFA処理 | AWSume |
| AWS Core MCP Server | MCPとAWS APIの橋渡し | AWS Core MCP Server |
| uv | Python環境管理ツール | uv |
| VSCode | エディタ | Visual Studio Code |
| GitHub Copilot | AIアシスタント | GitHub Copilot |
それでは、これらを順番にセットアップしていきましょう。
1. 1Password CLI のセットアップ
1Password CLIとは
1Password CLIは、1Passwordをコマンドラインから操作できるツールです。今回は、AWS MFA認証に必要なOTP(ワンタイムパスワード)を自動取得するために使います。
インストール
Homebrewを使ってインストールします。
brew install --cask 1password/tap/1password-cli
インストールを確認します。
op --version
1Passwordへのサインイン
初回は1Passwordアカウントにサインインします。
op signin
ブラウザが開き、1Passwordの認証画面が表示されます。指紋認証やアカウントパスワードによって認証を完了させます。
AWS MFAデバイスを1Passwordに登録
※ すでにAWS MFAデバイスを1Passwordに登録している場合はスキップしてください。
- AWSマネジメントコンソールで IAM > ユーザー > セキュリティ認証情報 > MFAデバイスの割り当て
- QRコードが表示されたら、1Passwordの「新しい項目」から「ワンタイムパスワード」を選択
- QRコードをスキャンして保存
これで、1Password上でAWS MFAのワンタイムパスワードが生成されるようになります。
OTPの取得テスト
1Password CLIでOTPを取得できるか確認します。
op item get "AWS (RnD)" --otp
6桁の数字が表示されれば成功です!
2. uv のセットアップ
まず、Python環境管理ツールのuvをインストールします。
uvとは
uvは高速なPythonパッケージインストーラー兼環境管理ツールです。本記事では以下の理由でuvを採用しています。
- Python環境管理を一つのツールに統一できる
- AWS Core MCP Serverの実行に使用(
uvxコマンド) - AWSumeのインストールに使用(公式推奨は
pipxですが、uvで統一します)
インストール
Homebrewを使ってインストールします。
brew install uv
インストールを確認します。
uv --version
3. AWSumeのセットアップ
AWSumeとは
AWSume は、AWS認証情報を管理し、複数のAWSプロファイルを簡単に切り替えられるツールです。特に以下の機能が便利です。
- プロファイルのオートコンプリート: タブ補完でプロファイル名を入力
- AssumeRoleのサポート: クロスアカウントアクセスも簡単
- 一時認証情報のキャッシュ: 頻繁に認証する必要がない
インストール
uvを使ってインストールします。
uv tool install awsume
インストールを確認します。
awsume --version
AWSume 1Passwordプラグインのインストール
AWSumeと1Password CLIを連携させるプラグインをインストールします。
このプラグインにより、MFA認証時に自動的に1Passwordからワンタイムパスワードを取得してくれます!(便利です)
uv tool install --with awsume-1password-plugin awsume
AWSumeの設定ファイル ~/.awsume/config.yaml に1passwordの項目を追加します。
colors: true
1password: AWS (RnD) #
AWSumeの動作確認
プロファイルを指定してAWSumeを実行してみます。
awsume prd-readonly
初回は1Passwordの認証が求められる場合があります。認証が完了すると、自動的にMFAのワンタイムパスワードが取得され、一時認証情報が環境変数(AWS_SESSION_TOKEN など)に設定されます。
確認します。
aws sts get-caller-identity
正しいAWSアカウントとロール情報が表示されればOKです!
MCP用の一時プロファイルの作成
ここが最重要ポイントです。
AWSumeで認証した情報をMCPで使用するには、-oオプション(--output-profile)で一時プロファイルを作成します。
awsume prd-readonly -o mcp-prd-readonly
このコマンドを実行すると、以下のようなことが起こります。
prd-readonlyプロファイルでMFA認証を実行-o mcp-prd-readonlyで認証情報をmcp-prd-readonlyという名前で.aws/credentialsに保存
実際に.aws/credentialsを確認すると、以下のようなエントリが作成されます。
[mcp-prd-readonly]
manager = awsume
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = EXAMPLE/TOKEN
region = ap-northeast-1
expiration = 2025-11-12 16:53:51
このmcp-prd-readonlyプロファイルを、後ほどAWS Core MCP ServerのAWS_PROFILEに指定することで、MFA認証済みの一時認証情報をMCPで使用することができます。
4. AWS Core MCP Server のセットアップ
AWS Core MCP Serverとは
AWS Core MCP Server は、AWS Labsが提供する公式のMCPサーバーです。MCPプロトコルを使ってAWS APIへのアクセスを提供し、GitHub Copilotなどのクライアントから呼び出されてAWS環境の情報を取得・操作します。
AWSからは種々のMCPサーバーが提供されていますが、 Core MCP Serverの最大の特徴である、動的プロキシサーバー戦略 によって、役割ベースの環境変数を使って、複数のMCPサーバーを動的にインポートし、プロキシさせることができます。
例えば、以下のような役割(ロール)を環境変数で指定できます。
| 環境変数 | 説明 | 含まれるMCPサーバー |
|---|---|---|
aws-foundation |
AWS基礎とAPI操作 | aws-knowledge-server, aws-api-server |
ci-cd-devops |
CI/CDとDevOps | cdk-server, cfn-server |
solutions-architect |
ソリューションアーキテクト | diagram-server, pricing-server, cost-explorer-server など |
monitoring-observability |
監視と可観測性 | cloudwatch-server, cloudwatch-appsignals-server, prometheus-server など |
この仕組みにより、用途に応じて必要な機能だけを有効化できます!
5. VSCode + GitHub Copilot の設定
ここまでで土台が整いました。いよいよVSCodeの設定です!
mcp.jsonの設置場所
VSCodeでMCPサーバーを利用するには、mcp.json ファイルを特定の場所に配置する必要があります。
macOSの場合
~/Library/Application Support/Code/User/mcp.json
mcp.jsonの基本構成
まず、シンプルな例から見ていきましょう。
{
"servers": {
"awslabs.core-mcp-server": {
"command": "uvx",
"args": [
"awslabs.core-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_REGION": "ap-northeast-1",
"AWS_PROFILE": "mcp-prd-readonly",
"aws-foundation": "true"
}
}
}
}
このままでも動作しますが、プロファイルをハードコードしているため、複数プロファイルを切り替えたい場合には不便です。
${input:} を使った動的な設定
VSCodeには ${input:} という便利な変数機能があります!これを使うと、mcp.json内の設定値を設定済みリストから選択できたり、任意の入力を扱うことができます。つまり、MCPサーバーの実行時に任意のプロファイルを選択することが可能です。
セレクト方式
{
"servers": {
"awslabs.core-mcp-server": {
"command": "uvx",
"args": [
"awslabs.core-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_REGION": "${input:awsRegion}",
"AWS_PROFILE": "${input:awsProfile}",
"aws-foundation": "true",
"READ_OPERATIONS_ONLY": "true"
}
}
},
"inputs": [
{
"id": "awsProfile",
"type": "pickString",
"description": "Select AWS Profile (use awsume -o profiles)",
"options": [
"mcp-prd-readonly",
"mcp-stg-readonly",
"mcp-dev-readonly"
],
"default": "mcp-dev-readonly"
},
{
"id": "awsRegion",
"type": "pickString",
"description": "Select AWS Region",
"options": [
"ap-northeast-1",
"us-east-1",
"us-west-2"
],
"default": "ap-northeast-1"
}
]
}
この設定により、シチュエーションに合わせてプロファイルとリージョンを選択できます!
フリーテキスト入力方式
プロファイル数が多い場合は、フリーテキスト入力も便利です。
{
"inputs": [
{
"id": "awsProfile",
"type": "promptString",
"description": "Enter AWS Profile name",
"default": "default"
}
]
}
環境変数設定の詳細
AWS Core MCP Serverでは、様々な環境変数で動作をカスタマイズできます。特に重要なものを紹介します。
プロファイル指定
AWS_PROFILE
使用するAWSプロファイルを指定します。AWSumeで設定したプロファイルを指定できます。
{
"env": {
"AWS_PROFILE": "${input:awsProfile}"
}
}
読み取り専用モード
READ_OPERATIONS_ONLY
true に設定すると、読み取り専用の操作のみが許可されます。調査用途では、誤って設定を変更してしまうリスクを減らせます。
{
"env": {
"READ_OPERATIONS_ONLY": "true"
}
}
テレメトリの無効化
AWS_API_MCP_TELEMETRY
false に設定すると、使用状況データの送信を無効化できます。
{
"env": {
"AWS_API_MCP_TELEMETRY": "false"
}
}
役割ベースのサーバー設定
環境変数で役割(ロール)を有効化することで、必要な機能だけを使えます。
{
"env": {
"aws-foundation": "true", // AWS基礎とAPI操作
"monitoring-observability": "true", // 監視と可観測性
"solutions-architect": "true" // ソリューションアーキテクト向けツール
}
}
詳細は公式ドキュメントをご確認ください。
多層防御アプローチ
また、セキュリティは多層的に考えています。
1. ツール側での制限
{
"env": {
"READ_OPERATIONS_ONLY": "true"
}
}
読み取り専用モードで、意図しない変更操作を防ぎます。
2. IAMロールでの最小権限設定
AWSumeで使用するIAMロールには、必要最小限の権限のみを付与します。
調査用途であれば、AWSマネージドポリシーの ReadOnlyAccess などの読み取り系アクションのみを許可するポリシーを適用するとよいです。
3. テレメトリの無効化
機密性の高い環境では、先述の環境変数の設定の通り、テレメトリを無効化することも検討してください。
{
"env": {
"AWS_API_MCP_TELEMETRY": "false"
}
}
mcp.json 設定例
実用的な設定例をまとめます。
{
"servers": {
"awslabs.core-mcp-server": {
"command": "uvx",
"args": [
"awslabs.core-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_REGION": "${input:awsRegion}",
"AWS_PROFILE": "${input:awsProfile}",
"AWS_API_MCP_TELEMETRY": "false",
"READ_OPERATIONS_ONLY": "true",
"aws-foundation": "true",
"monitoring-observability": "true"
}
}
},
"inputs": [
{
"id": "awsProfile",
"type": "pickString",
"description": "Select AWS Profile for MCP",
"options": [
"mcp-prd",
"mcp-stg",
"mcp-dev"
],
"default": "mcp-dev"
},
{
"id": "awsRegion",
"type": "pickString",
"description": "Select AWS Region",
"options": [
"ap-northeast-1",
"us-east-1",
"us-west-2",
"eu-west-1"
],
"default": "ap-northeast-1"
}
]
}
この設定のポイントは以下の通りです。
${input:}でプロファイルとリージョンを動的に選択- READ_OPERATIONS_ONLY で読み取り専用モード
- テレメトリ無効化 でプライバシー保護
- 役割ベースの設定 で必要な機能のみ有効化
6. 動作確認例
実際に構築した環境を使う場合の手順です。
GitHub Copilot Chatを開く
- VSCodeでGitHub Copilotを開きます(
Cmd + Shift + IまたはサイドバーのCopilotアイコン) - 初回起動時に、AWSプロファイルとリージョンの選択ダイアログが表示されます
- 使いたいプロファイル(例:
prd-readonly)とリージョン(例:ap-northeast-1)を選択
基本的な質問集
例1:CloudWatchメトリクスの状態確認
アラーム状態のCloudWatchメトリクスはある?
例2:CloudWatch Logsの検索
/aws/lambda/my-function のCloudWatch Logsから、過去24時間 1時間ごとのERRORログ数を集計して
例3:包括的な調査
xxx のアラートの原因を調査して
まとめ
ここまでで、以下の環境が整いました。
- 1Password CLIでMFA ワンタイムパスワードを自動取得
- AWSumeでAWSプロファイルを簡単切り替え
- AWS Core MCP ServerでエディタからリアルタイムにAWS環境を調査
${input:}で安全かつ柔軟な認証情報管理- 複数アカウント・リージョン環境での効率的な運用
この環境があれば、日々のAWS運用業務がグッと楽になるはずです。
参考文献・引用元
- MCP公式ドキュメント
- AWS Core MCP Server公式ドキュメント
- AWS API MCP Server公式ドキュメント
- AWSume公式ドキュメント
- 1Password CLI公式ドキュメント
- uv公式ドキュメント
- VSCode Variables Reference
最後に
こんな使い方もできたよ!という発見があれば、Twitter(新X)などでシェアしていただけると嬉しいです。
最後までお読みいただき、ありがとうございました!
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。
サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイト をぜひご覧ください。








