【AWS×MCP】VSCodeとGitHub CopilotでAWS環境を自在に調査!1Password・AWSumeと連携した私の設定を公開

【AWS×MCP】VSCodeとGitHub CopilotでAWS環境を自在に調査!1Password・AWSumeと連携した私の設定を公開

2025.11.12

はじめに

アノテーション株式会社 LINE/DevOpsチームの草竹です。

AWS環境のログ調査やリソース確認、みなさんはどうやっていますか?

「AWS CLIでコマンド叩いて……」「マネジメントコンソールにログインして……」という作業、繰り返していると結構面倒ですよね。特に複数のAWSアカウントやロールを切り替えながら作業する場合、認証情報の管理や切り替えが煩雑になりがちです。

MCP (Model Context Protocol) を使うと、エディタ上のAIアシスタント(GitHub Copilotなど)から直接AWS環境を調査できます。とっても便利です!

ただ、実際にセットアップしようとすると……

  • AWS MFA認証どうするの?
  • 認証情報をmcp.jsonに平文で書くのは怖い……
  • プロファイル名を毎回手入力するのは面倒……

過去、私はこういった壁にぶつかりました……。

本記事では、これらの課題を 1PasswordAWSume を組み合わせて解決し、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に登録している場合はスキップしてください。

  1. AWSマネジメントコンソールで IAM > ユーザー > セキュリティ認証情報 > MFAデバイスの割り当て
  2. QRコードが表示されたら、1Passwordの「新しい項目」から「ワンタイムパスワード」を選択
  3. 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の項目を追加します。

~/.awsume/config.yaml
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

このコマンドを実行すると、以下のようなことが起こります。

  1. prd-readonlyプロファイルでMFA認証を実行
  2. -o mcp-prd-readonlyで認証情報をmcp-prd-readonlyという名前で.aws/credentialsに保存

実際に.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の基本構成

まず、シンプルな例から見ていきましょう。

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サーバーの実行時に任意のプロファイルを選択することが可能です。

セレクト方式

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-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 設定例

実用的な設定例をまとめます。

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を開く

  1. VSCodeでGitHub Copilotを開きます(Cmd + Shift + I またはサイドバーのCopilotアイコン)
  2. 初回起動時に、AWSプロファイルとリージョンの選択ダイアログが表示されます
  3. 使いたいプロファイル(例: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運用業務がグッと楽になるはずです。

参考文献・引用元

最後に

こんな使い方もできたよ!という発見があれば、Twitter(新X)などでシェアしていただけると嬉しいです。

最後までお読みいただき、ありがとうございました!

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。
サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイト をぜひご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事