背景・目的
Amazon Q Developer CLI で MCPを利用し外部のツール、データソースとやり取りができます。
今回は、Q Dev CLIでMCPを設定し、外部リソースとの連携の仕組みを理解します。
まとめ
下記に特徴をまとめます。
特徴 | 説明 |
---|---|
MCPとは | MCPは、AIアシスタントが外部ツールと通信するためのオープンプロトコル |
できること | ・外部システムとのやりとり ・ライブデータを取得 ・様々なツールとシームレスに統合 |
MCPセキュリティの設計原則 | ・明示的なアクセス許可 ・ローカル実行 ・分離 ・透明性 |
概要
Amazon Q Developer での MCP の使用
下記を基に整理します。
Model Context Protocol (MCP) は、AI アシスタントが外部ツールやサービスとやり取りできるようにするオープンスタンダードです。Amazon Q Developer CLI で MCP がサポートされるようになりました。これにより、カスタムツールやサービスに接続して Q の機能を拡張できます。
- Q Dev CLIでMCPがサポートされている
MCPの概要
MCP (モデルコンテキストプロトコル) は、AI アシスタントが外部ツールと通信する方法を標準化するオープンプロトコルです。AI モデルが利用可能なツールを検出し、特定のパラメータを使用してツールの実行をリクエストし、ツールの結果を受信して処理するための構造化された方法を定義します。
- MCPは、AIアシスタントが外部ツールと通信するためのオープンプロトコル。下記を実現するための構造化された方法を定義する
- AIモデルが利用可能なツールを検出
- 特定のパラメータを使用し、ツールの実行をリクエスト
- ツールの結果を受信して、処理する
MCP は AI モデル用のユニバーサルコネクタであり、外部システムとやり取りしたり、ライブデータを取得したり、さまざまなツールとシームレスに統合したりできます。これにより、Amazon Q は必要な情報にリアルタイムでアクセスすることで、よりコンテキストに関連する支援を提供できます。
- MCPは、AIモデル用のユニバーサルコネクタ。下記のような事が可能
- 外部システムとのやりとり
- ライブデータを取得
- 様々なツールとシームレスに統合
MCPセキュリティ
セキュリティモデル
Amazon Q Developer CLI の MCP セキュリティモデルは、次の原則に基づいて設計されています。
- 明示的なアクセス許可: ツールを実行する前に明示的なユーザーアクセス許可が必要です
- ローカル実行: MCP サーバーはマシン上でローカルに実行されます
- 分離: 各 MCP サーバーは個別のプロセスとして実行されます
- 透明性: ユーザーは利用可能なツールとその動作を確認できます。
- Q Dev CLIのMCPセキュリティモデルは、下記の原則に基づき設計されている
- 明示的なアクセス許可
- ツールを実行する前に、明示的に許可が必要
- ローカル実行
- MCPサーバは、マシン上でローカルに実行される
- 分離
- 各MCPサーバは個別プロセスとして実行
- 透明性
- ユーザは利用可能なツールとその動作を確認できる
- 明示的なアクセス許可
セキュリティに関する考慮事項
MCP を使用する際の主なセキュリティ上の考慮事項:
- 信頼できるソースからのみサーバーをインストールする
- 承認する前にツールの説明と注釈を確認する
- 機密設定に環境変数を使用する
- MCP サーバーと Q CLI を最新の状態に保つ
- 予期しないアクティビティがないか MCP ログをモニタリングする
- 考慮事項
- 信頼できるソースからのみサーバをインストール
- 承認する前にツールの説明と注釈を確認
- 機密設定に環境変数を使用する
- MCPサーバと Q CLIを最新状態に保つ
- 予期しないアクティビティがないかMCPログをモニタリング
実践
Q Dev CLI自体は、以前の記事で設定済みです。
AWS Documentation MCP Server
下記を基に実装します。
AWS Documentation MCP Serverは、AWSドキュメントのMCPサーバです。
下記の機能を提供します。
- Read Documentation
- Search Documentation
- Recommendations
変更前
-
現在の状況を確認します
> /tools Tool Permission ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔Built-in: - execute_bash * not trusted - fs_read * trust working directory - fs_write * not trusted - introspect * trusted - report_issue * trusted - use_aws * trust read-only commands > /mcp >
-
実行前に、Q Devに
S3バケットの命名ルールに関するドキュメントを参照し、出典を引用してください。
を問い合わせます。そこそこの内容が返されました> S3バケットの命名ルールに関するドキュメントを参照し、出典を引用してください。 > S3バケットの命名ルールについて、AWS公式ドキュメントから主要なルールをご説明します。 ## S3バケット命名ルール 必須要件: • バケット名は3~63文字の長さである必要があります • 小文字の英字、数字、ハイフン(-)、ピリオド(.)のみ使用可能です • バケット名は小文字または数字で始まり、終わる必要があります • IPアドレス形式(例:192.168.5.4)は使用できません • バケット名はAWSパーティション内でグローバルに一意である必要があります • "xn--"で始まるバケット名は使用できません • "-s3alias"で終わるバケット名は使用できません 推奨事項: • ピリオド(.)を含むバケット名は使用しないことを推奨(SSL/TLS証明書の検証で問題が発生する可能性があるため) • バケット名にアンダースコア(_)は使用できません • 連続するピリオドは使用できません(例:my..bucket) • ハイフンとピリオドを隣接させることはできません(例:my-.bucket、my.-bucket) 出典: AWS公式ドキュメント「Amazon S3 バケットの命名規則」 https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/bucketnamingrules.html これらのルールは、S3バケットを作成する際に必ず遵守する必要があります。特にグローバルな一意性の要件により、既に他のAWSアカウントで使用されているバケット名は使用できま せん。 >
-
実行前に、Q Devに
S3とEBSの耐久性に関する公式ドキュメントを比較して引用してください
を問い合わせます。そこそこの内容が返されました> S3とEBSの耐久性に関する公式ドキュメントを比較して引用してください > S3とEBSの耐久性について、AWS公式ドキュメントの情報を比較します。 ## Amazon S3の耐久性 S3 Standard: • 99.999999999%(イレブンナイン)の耐久性を提供 • 複数のアベイラビリティーゾーン(最低3つ)にデータを自動的に冗長化 • 年間で10,000,000個のオブジェクトを保存した場合、平均して10,000年に1回のオブジェクト損失が発生する計算 出典: • Amazon S3 ストレージクラス https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/storage-class-intro.html • Amazon S3 FAQs https://aws.amazon.com/jp/s3/faqs/ ## Amazon EBSの耐久性 EBS ボリューム: • 99.8% - 99.9%の年間耐久性(ボリュームタイプによって異なる) • 単一のアベイラビリティーゾーン内で自動的にレプリケート • AFR(Annual Failure Rate:年間故障率)は0.1% - 0.2% 出典: • Amazon EBS の特徴 https://aws.amazon.com/jp/ebs/features/ • Amazon EBS FAQs https://aws.amazon.com/jp/ebs/faqs/ ## 主な違い | 項目 | S3 | EBS | |------|-----|-----| | 耐久性 | 99.999999999% (11 nines) | 99.8% - 99.9% | | レプリケーション | 複数AZ(最低3つ) | 単一AZ内 | | 用途 | オブジェクトストレージ、長期保存 | ブロックストレージ、EC2アタッチ | S3は長期的なデータ保存とアーカイブに適しており、EBSはEC2インスタンスに接続する高性能ブロックストレージとして設計されています。EBSの耐久性を高めるには、EBSスナップシ ョット(S3に保存)を定期的に取得することが推奨されます。 >
修正
-
下記の内容を登録します
% cat ~/.aws/amazonq/mcp.json { "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": [] } }, "tools": [ "@awslabs.aws-documentation-mcp-server" ] } %
-
反映を確認します
% q mcp list 🤖 default: q_cli_default • awslabs.aws-documentation-mcp-server uvx %
-
q chatでも確認しました。反映されていました
> /mcp awslabs.aws-documentation-mcp-server ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ [2025:11:43]: ✓ awslabs.aws-documentation-mcp-server loaded in 8.12 s > /tools Tool Permission ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔Built-in: - execute_bash * not trusted - fs_read * trust working directory - fs_write * not trusted - introspect * trusted - report_issue * trusted - use_aws * trust read-only commands awslabs.aws-documentation-mcp-server (MCP): - read_documentation * not trusted - recommend * not trusted - search_documentation * not trusted >
変更後の確認
- 変更後に、あらためて
S3バケットの命名ルールに関するドキュメントを参照し、出典を引用してください。
で問い合わせします。新しくインストールしたツールを経由してアクセスしているようです。> S3バケットの命名ルールに関するドキュメントを参照し、出典を引用してください。 > S3バケットの命名ルールについて、AWS公式ドキュメントを検索して詳細を確認します。 🛠️ Using tool: search_documentation from mcp server awslabs.aws-documentation-mcp-server ⋮ ● Running search_documentation with the param: ⋮ { ⋮ "search_phrase": "S3 bucket naming rules", ⋮ "limit": 5 ⋮ } Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: > y ⋮ ● Completed in 2.68s > 最も関連性の高い一般的なS3バケット命名ルールのドキュメントを詳しく確認します。 🛠️ Using tool: read_documentation from mcp server awslabs.aws-documentation-mcp-server ⋮ ● Running read_documentation with the param: ⋮ { ⋮ "url": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html", ⋮ "max_length": 8000 ⋮ } Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: > y ⋮ ● Completed in 0.324s > ## S3バケットの命名ルール AWS公式ドキュメントに基づくS3バケットの命名ルールは以下の通りです: ### 基本的な命名ルール • **文字数**: 3文字以上63文字以下 • **使用可能文字**: 小文字、数字、ピリオド(.)、ハイフン(-)のみ • **開始・終了**: 文字または数字で開始・終了する必要がある • **連続ピリオド**: 2つ以上の連続するピリオドは使用不可 • **IPアドレス形式**: 192.168.5.4のようなIPアドレス形式は使用不可 ### 禁止されているプレフィックス・サフィックス • **プレフィックス**: xn--、sthree-、amzn-s3-demo-で始まる名前は使用不可 • **サフィックス**: -s3alias、--ol-s3、.mrap、--x-s3、--table-s3で終わる名前は使用不可 ### 重要な制約 • **グローバル一意性**: すべてのAWSアカウント・リージョンで一意である必要がある • **名前変更不可**: 作成後はバケット名とリージョンの変更は不可 • **機密情報**: バケット名にセンシティブな情報を含めない(URLに表示されるため) ### ベストプラクティス • **GUID追加**: 予測困難な名前にするため、グローバル一意識別子(GUID)を追加 • **ピリオド回避**: 静的ウェブサイトホスティング以外では、ピリオドの使用を避ける • **Transfer Acceleration**: 使用する場合はピリオドを含まない名前にする ### 有効な例 amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111 amzn-s3-demo-bucket ### 無効な例 amzn_s3_demo_bucket (アンダースコア含む) AmznS3DemoBucket (大文字含む) example..com (連続ピリオド) 192.168.5.4 (IPアドレス形式) 出典: [General purpose bucket naming rules - Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) >
AWS Knowledge MCP Server
下記を基に実装します。
下記の特徴を持つMCPサーバです。
- 最新のドキュメント
- コードサンプル
- AWS API と CloudFormation リソースのリージョン別の可用性に関する情報、その他の公式 AWS コンテンツを提供
下記の有します。
- Best practices
- API documentation
- Getting started
- The latest information
設定
-
設定します
% cat ~/.aws/amazonq/mcp.json { "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": [] }, "aws-knowledge-mcp-server": { "type":"http", "url": "https://knowledge-mcp.global.api.aws", "disabled": false, "autoApprove": [] } }, "tools": [ "@awslabs.aws-documentation-mcp-server" ] } %
-
設定されました
% q mcp list 🤖 default: q_cli_default • aws-knowledge-mcp-server • awslabs.aws-documentation-mcp-server uvx %
-
ツールの一覧を確認します。反映されました
> /tools Tool Permission ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔Built-in: - execute_bash * not trusted - fs_read * trust working directory - fs_write * not trusted - introspect * trusted - report_issue * trusted - use_aws * trust read-only commands aws-knowledge-mcp-server (MCP): - aws___get_regional_availability * not trusted - aws___list_regions * not trusted - aws___read_documentation * not trusted - aws___recommend * not trusted - aws___search_documentation * not trusted awslabs.aws-documentation-mcp-server (MCP): - read_documentation * not trusted - recommend * not trusted - search_documentation * not trusted >
考察
今回、awslabsのドキュメント関連のMCPを利用してみました。今後も、他のツールも試してみます。
まとめ