🔖

Amazon Q Developer CLIにAWS Core MCPサーバを設定する

に公開

はじめに

AWSが提供するMCPサーバは機能豊富で数が多いので、一括で設定したいなと思ってくるはず。
全てのMCPサーバを設定するjsonファイルでも作ろうかなと思ったんですが、そこは当然考えられていて、Core MCPサーバというものが用意されていました。

Core MCPサーバ

Core MCPサーバとは、全てのMCPサーバを設定するものというより、ロールベースでMCPサーバを有効にするもので、必要なら複数のロールを設定することができます。

ロールとMCPサーバのマッピングは最新のページを確認してください。

デフォルトの設定だとaws-foundationsolutions-architectを有効にしているようです。

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.core-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "aws-foundation": "true",
        "solutions-architect": "true"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

検証

ロールの設定を確認していこうと思います。
設定環境は以下の通り。

% date
Sun Oct  5 04:45:09 JST 2025

% q version                 
q 1.17.1

% sw_vers                     
ProductName:		macOS
ProductVersion:		26.0.1
BuildVersion:		25A362

全部有効にする設定を作って、~/.aws/amazonq/mcp.jsonに設定します。

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.core-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "aws-foundation": "true",
        "dev-tools": "true",
        "ci-cd-devops": "true",
        "container-orchestration": "true",
        "serverless-architecture": "true",
        "analytics-warehouse": "true",
        "data-platform-eng": "true",
        "frontend-dev": "true",
        "solutions-architect": "true",
        "finops": "true",
        "monitoring-observability": "true",
        "caching-performance": "true",
        "security-identity": "true",
        "sql-db-specialist": "true",
        "nosql-db-specialist": "true",
        "timeseries-db-specialist": "true",
        "messaging-events": "true",
        "healthcare-lifesci": "true"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

すると、以下のエラーでAmazon Q Developer CLIの起動に失敗しました。どうやらcontainer-orchestrationserverless-architectureが定義されていると、それらがtrue/falseに関係なく発生します。

% Q_LOG_LEVEL=trace q chat
✗ awslabs.core-mcp-server has failed to load after 3.88 s
 - Mcp error: -32002: connection closed: initialize response
 - run with Q_LOG_LEVEL=trace and see $TMPDIR/qlog/qchat.log for detail

Q CLIに聞いてみましたが、対処には至れず。
次にcontainer-orchestrationserverless-architecture以外を指定してみました。

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.core-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "aws-foundation": "true",
        "dev-tools": "true",
        "ci-cd-devops": "true",
        "analytics-warehouse": "true",
        "data-platform-eng": "true",
        "frontend-dev": "true",
        "solutions-architect": "true",
        "finops": "true",
        "monitoring-observability": "true",
        "caching-performance": "true",
        "security-identity": "true",
        "sql-db-specialist": "true",
        "nosql-db-specialist": "true",
        "timeseries-db-specialist": "true",
        "messaging-events": "true",
        "healthcare-lifesci": "true"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

すると、読み込み中の警告に変わりました。
読み込みが完了したのか判断できませんでしたが、その後の動作確認では機能が有効になっていることを確認できました。

shirasu@AS-MacBook-Air managed-login % Q_LOG_LEVEL=trace q chat  
⚠ 0 of 1 mcp servers initialized. Servers still loading:
 - awslabs.core-mcp-server

組み合わせなども試したところ、以下の10個のロールであれば正常に起動しました。
ただ、ロール数が増えると起動時間が数秒遅くなりました。

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.core-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "aws-foundation": "true",
        "dev-tools": "true",
        "ci-cd-devops": "true",
        "analytics-warehouse": "true",
        "data-platform-eng": "true",
        "frontend-dev": "true",
        "solutions-architect": "true",
        "finops": "true",
        "monitoring-observability": "true",
        "security-identity": "true"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

おわりに

Core MCPサーバを使いロールを指定することで機能が有効になることが確認できました。
true/falseの設定に関係なくロールが定義されていると挙動が変わるので、必要なロールのみ設定することがよさそうでした。

Discussion