AIインフラ実践ノート:AWS Documentation MCP Server(UVX編)

はじめに

LLMの活用は急速に広がり、その可能性は誰もが認めています。
一方で、AIの活用をインフラでどう支えるかという視点が重要になっています。
その答えを探す中で、AWS MCP ServerAWS Bedrock AgentCoreに注目しました。

筆者のモットーは、「まず動かしてみること」。
今回は、AWS MCP Server の中でも、AWSの公式ドキュメントをベースに応答する MCP Document Server を試してみました。

ここでは、AIアシスタントとしてQ CLI(AWS Q Developer)を使っています。AWS MCP Server自体は、Q CLI以外のAIアシスタントを使っても構いません。

AWS MCP Serverとは

「AWS MCP Server」とは、AWSのMCPに関する取り組みを表す総称です。AWS MCP Serverを利用することで、開発者はAWSが提供する多様なMCPサーバに簡単に接続できます。その実体は、AWS MCPサーバを説明するドキュメント、サンプルコード(Github)、Pythonパッケージインデックス(PyPi)などです。

📚 ドキュメント: 公式AWSドキュメントへのリアルタイムアクセス
🏗️ インフラストラクチャとデプロイ: クラウドインフラの構築、デプロイ、管理
🤖 AIと機械学習: 知識検索や機械学習機能でAIアプリケーションを強化
📊 データと分析: データベース、キャッシュシステム、データ処理の操作
🛠️ 開発者ツールとサポート: コード解析やテストユーティリティで開発を加速
📡 統合とメッセージング: メッセージング、ワークフロー、位置情報サービスでシステムを接続
💰 コストと運用: AWSインフラとコストの監視、最適化、管理
🧬 ヘルスケアとライフサイエンス: AWS HealthAIサービスとの連携

以下は、2025年11月現在のAWS MCP Server群です。

  • amazon-bedrock-agentcore-mcp-server
  • amazon-kendra-index-mcp-server
  • amazon-keyspaces-mcp-server
  • amazon-mq-mcp-server
  • amazon-neptune-mcp-server
  • amazon-qbusiness-anonymous-mcp-server
  • amazon-qindex-mcp-server
  • amazon-sns-sqs-mcp-server
  • aurora-dsql-mcp-server
  • aws-api-mcp-server
  • aws-appsync-mcp-server
  • aws-bedrock-custom-model-import-mcp-server
  • aws-bedrock-data-automation-mcp-server
  • aws-dataprocessing-mcp-server
  • aws-diagram-mcp-server
  • aws-documentation-mcp-server
  • aws-healthomics-mcp-server
  • aws-iot-sitewise-mcp-server
  • aws-knowledge-mcp-server
  • aws-location-mcp-server
  • aws-msk-mcp-server
  • aws-pricing-mcp-server
  • aws-serverless-mcp-server
  • aws-support-mcp-server
  • bedrock-kb-retrieval-mcp-server
  • billing-cost-management-mcp-server
  • ccapi-mcp-server
  • cdk-mcp-server
  • cfn-mcp-server
  • cloudtrail-mcp-server
  • cloudwatch-appsignals-mcp-server
  • cloudwatch-mcp-server
  • code-doc-gen-mcp-server
  • core-mcp-server
  • cost-explorer-mcp-server
  • documentdb-mcp-server
  • dynamodb-mcp-server
  • ecs-mcp-server
  • eks-mcp-server
  • elasticache-mcp-server
  • finch-mcp-server
  • frontend-mcp-server
  • git-repo-research-mcp-server
  • healthlake-mcp-server
  • iam-mcp-server
  • lambda-tool-mcp-server
  • mcp-lambda-handler
  • memcached-mcp-server
  • mysql-mcp-server
  • nova-canvas-mcp-server
  • openapi-mcp-server
  • postgres-mcp-server
  • prometheus-mcp-server
  • redshift-mcp-server
  • s3-tables-mcp-server
  • stepfunctions-tool-mcp-server
  • syntheticdata-mcp-server
  • terraform-mcp-server
  • timestream-for-influxdb-mcp-server
  • valkey-mcp-server
  • well-architected-security-mcp-server

AWS MCP Server(Model Context Protocolサーバ群)は、2025年5月29日にAWS公式ブログで発表されました。各MCP ServerがGAになっているかどうか、個別に確認してください。

AWS Documentation MCP Serverとは

AWS Documentation MCP Server は、LLMが 最新のAWS公式ドキュメントやAPIリファレンスにリアルタイムでアクセスできるようにするMCPサーバーです。

何のために使うの?

  • AIアシスタントが AWS のベストプラクティスやコード例を即座に取得できる
  • 開発者ツールやチャットボットが、最新のAWS情報をワークフローに組み込める
  • AWSのサービス変更や新機能に、AIがすばやく対応できる環境を提供する

事前準備

  • Linux or Mac
    • 筆者の環境は、WSLでUbuntu 22.04
  • Astraのuvがインストール済みであること
  • Amazon Q Developer(Q CLI)が導入済みであること
    • AIインフラ実践ノート:Amazon Q Developer
    • Q CLIが必須ではありません。他のAIアシスタントを使う場合は、クライアント設定に微細な違いがある可能性があるので自己解決してください。

MCPクライアント設定

Q CLIのMCP設定を実行してください。しっかり名称を付けましょう。

  • .aws/amazonq/cli-agents/aws-documentation-mcp-server.json

ドキュメントによっては、nameが省略されていることもありますが、Q CLIでは起動時にエラーになります。

{
  "name": "aws-documentation-mcp-server",
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_DOCUMENTATION_PARTITION": "aws"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

UVXコマンドとは

UVXは、Pythonのパッケージ管理ツール uv に含まれるコマンドで、CLIツールやPythonパッケージを一時的な仮想環境で即時実行するための仕組みです。pipxの代替として設計されており、グローバル環境を汚さずにツールを試せます

これによって、クライアント側(AIアシスタント)では、特に実行環境の用意は不要です。

uvxは、PyPI上にデプロイされているAWS MCP Serverのパッケージをクライアント側にダウンロードして実行します。

前項のmcpServers{...}の定義を確認してみてくさい。 "command": "uvx"のようにuvxで実行する旨が定義されています。

  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
   ...
    }
  }

Q CLI起動

では、Q CLIを起動してみてください。Amazon Q Developerで事前認証(ログイン)は、1回のみで良いです。

ターミナルから、次のように入力してみてください。プロンプトの表示が[documentation-mcp-server]>のようになります。


 q chat --agent  documentation-mcp-server
[次のような警告について]
⚠ 0 of 1 mcp servers initialized. Servers still loading:
- awslabs.aws-documentation-mcp-server

ネットワーク遅延など複数の原因で警告が発生することもあるようです。

最終的に以下のようになっていれば問題ありません
[documentation-mcp-server] >

質問してみる

s3バケットのネーミングルールを教えてください

> s3バケットのネーミングルールを教えてください。

> S3バケット名のルールは以下の通りです:

## 基本ルール
• 3〜63文字の長さ
• 小文字、数字、ハイフン(-)、ピリオド(.)のみ使用可能
• 先頭と末尾は小文字または数字
• 連続するピリオドは使用不可(..)
• ハイフンの隣にピリオドは使用不可(.-や-.)

## 推奨事項
• IPアドレス形式は避ける(例:192.168.1.1)
• xn--で始まる名前は避ける
• sthree-やsthree-configuratorで始まる名前は避ける
• -s3aliasで終わる名前は避ける

## グローバル一意性
• 全世界で一意である必要がある
• 他のAWSアカウントが使用している名前は使用不可

## 例
有効な例:
- my-bucket-2024
- company.backup.data
- project123-logs

無効な例:
- MyBucket(大文字)
- my_bucket(アンダースコア)
- my..bucket(連続ピリオド)
- my-.bucket(ハイフンとピリオドが隣接)

CloudWatchのカスタムメトリックに必要なIAMロールを教えてください。


> CloudWatchのカスタムメトリックに必要なIAMロール設定について教えてください。

> CloudWatchカスタムメトリックに必要なIAM権限について説明します。

## 必要な権限

### カスタムメトリック送信用
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
    ]
}


### メトリック読み取り用(オプション)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        }
    ]
}


## 実装パターン

### EC2インスタンス用ロール
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}


### Lambda関数用ロール
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}


## 名前空間による制限(推奨)
特定の名前空間のみに制限する場合:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "MyApp/CustomMetrics"
                }
            }
        }
    ]
}


最小権限の原則に従い、必要な権限のみを付与してください。

どのようなドキュメントを参照しているのか

AWS Documentation MCP Serverは以下のドキュメントを参照しているようです(注:Claude Codeによるコード分析)

AWS Global リージョン向け(server_aws.py)

  • docs.aws.amazon.com - AWS公式ドキュメント
  • awsdocs-neuron.readthedocs-hosted.com - AWS Neuron SDK関連ドキュメント AWS China リージョン向け(server_aws_cn.py)
  • docs.amazonaws.cn - AWS中国リージョン公式ドキュメント 機能別参照先
  1. 検索機能: https://proxy.search.docs.aws.amazon.com/search - AWS公式検索API
  2. 推奨コンテンツ: https://contentrecs-api.docs.aws.amazon.com/v1/recommendations - コンテンツ推奨API
  3. 中国リージョンサービス一覧: https://docs.amazonaws.cn/en_us/aws/latest/userguide/services.html サーバーは環境変数AWS_DOCUMENTATION_PARTITIONにより、グローバル(aws)または中国(aws-cn)のドキュメントソースを自動選択します。

サーバーは環境変数AWS_DOCUMENTATION_PARTITIONにより、グローバル(aws)または中国(aws-cn)のドキュメントソースを自動選択します。

Q CLIとMCP Serverとの通信方式について

以下は、Q CLIとMCPServerとの間の通信方式について、Q CLIに説明してもらいました。MCP Serverは、クライアントからの要求に対して受動的に答えていることが分かります。

前項で述べているように、uvxは、PyPIからAWS MCP Serverをダウンロードして実行します。 初回は、ダウンロードして実行しますが、ローカルにキャッシュされ、 次回からは再利用されます。

> Q CLIとMCPサーバーの通信方式について説明します。

## 通信フロー

Q CLI ←→ MCP Client ←→ MCP Server (stdio) ←→ AWS Documentation API


## 基本的な流れ

1. 初期化
   • Q CLIが設定ファイル(~/.aws/amazonq/cli-agents/documentation-mcp-server.json)を読み込み
   • MCPサーバーをuvxコマンドで起動
   • stdio(標準入出力)でMCPプロトコル接続を確立

2. ツール発見
   • MCPサーバーが利用可能なツールを登録
   • read_documentation, search_documentation, recommend等

3. リクエスト処理

   ユーザー入力 → Q CLI → MCP Client → JSON-RPC → MCP Server → AWS API → レスポンス


4. 通信プロトコル
   • **プロトコル**: JSON-RPC over stdio
   • **データ形式**: JSON
   • **接続方式**: 双方向パイプ通信

## 設定例

{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
      "env": {
        "AWS_DOCUMENTATION_PARTITION": "aws"
      }
    }
  }
}


MCPサーバーはQ CLIの子プロセスとして動作し、標準入出力を通じてJSON-RPCメッセージを交換することで、AWS Documentation APIへのアクセス機能を提供します。

MCP(Model Context Protocol)サーバーの役割
MCPサーバーは、LLMやエージェント(Q CLIなど)から送られるリクエストに応じて、定義済みのツールやリソースを実行し、その結果を返す仕組みです。サーバー側から能動的に処理を開始することはなく、クライアントの要求に応じて動作する「受動的」な設計になっています。

uvxでGitHubから直接インストール

実は、uvxは、GithubからMCP Serverを取得して実行できます。GitHubから直接AWS MCP Serverのコードを取得する設定を試してみましょう。

.aws/amazonq/cli-agents/documentation-mcp-server-git.json

{
  "name": "documentation-mcp-server-git",
  "mcpServers": {
    "documentation-mcp-server-git": {
      "command": "uvx",
      "args": [
        "git+https://github.com/awslabs/mcp.git#subdirectory=src/aws-documentation-mcp-server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_DOCUMENTATION_PARTITION": "aws"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

実行方法は、次のとおりです。

 q chat --agent documentation-mcp-server-git

まとめ

今回は、AWS Documentation MCP Server を通じて、UVX を利用した MCP Server の動作を試してみました。設定があまりにもシンプルで、正直驚きました。

特に印象的だったのは、AWSドキュメントの内容について自然言語で対話できる相手がいるという存在感です。開発や運用の現場において、非常に心強いパートナーになりそうですね。

Author

モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。

[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)

leeの記事一覧

新規CTA