Amazon Q Developer CLIのカスタムエージェント
Amazon Q Developer CLIは、第32回で紹介したように、CLIベースのAIエージェントです。MCP Serversと連携することで、様々なシステムに対する操作が可能となります。今回はアップデートにより、カスタムエージェントと呼ばれる特定のツール(MCP Servers)や実操作に関する制御を細やかに定義することが可能になりました。これまでは複数のツールを読み込ませている場合、Q Developerがどのツールを利用してよいかがわからず、意図しない回答となってしまうケースがありました。例えば、「ユーザ」という単語は、Webシステムを利用しているエンドユーザなのか、AWSのIAMユーザなのか、LinuxのOSユーザなのか、文脈によって異なりますが、Q Developerはそれらを区別できないこともありました。
カスタムエージェントを利用することで、利用できるツールを限定したり、プロンプトを利用して事前にコンテキストを与えたりすることが可能になります。
カスタムエージェントの利用にあたっては、カスタムエージェント用の設定ファイルの作成が必要です。ファイルを直接作成することも可能ですが、以下のコマンドを実行することで、対話形式で設定ファイルを作成することができます。
/agent create --name <エージェント名>
例えば、以下のような設定ファイルを作成することで、ドキュメント検索や料金計算のツールのみを利用するカスタムエージェントの作成が可能です。設定ファイルの配置場所は公式ドキュメントを参考にしてください。
{
"$schema": "https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json",
"name": "user",
"description": "this is user",
"prompt": "あなたはAWSに関する一般ユーザの権限を有します。実際にAWSリソースを操作することはできません。質問への回答は日本語で行ってください。",
"mcpServers": {
"asw-doc": {
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_DOCUMENTATION_PARTITION": "aws"
},
"disabled": false,
"autoApprove": []
},
"aws-price": {
"command": "uvx",
"args": [
"awslabs.aws-pricing-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
},
"tools": [
"*"
],
"toolAliases": {},
"allowedTools": [],
"resources": [
"file://AmazonQ.md",
"file://AGENTS.md",
"file://README.md",
"file://.amazonq/rules/**/*.md"
],
"hooks": {},
"toolsSettings": {},
"useLegacyMcpJson": false,
"model": null
}
本稿執筆時点で、公式ドキュメントには記載がありませんが、前述の対話型で作成した場合、デフォルトで「useLegacyMcpJson」という項目がtrueで設定されます。これは、mcp.jsonのmcpServersの設定を引き継ぐための項目であり、falseに設定することで、カスタムエージェントの設定ファイルで指定したmcpServersのみを利用することが可能になります。
--agentオプションでカスタムエージェント名を指定して起動することで、カスタムエージェントが利用可能になります。下記画像はカスタムエージェントを指定しない場合と指定した場合の差を示しています。カスタムエージェントを指定した場合、利用できるツールが限定されていることがわかります。
利用できるツールの限定やコンテキストを与えることによる正確な回答が期待できることはもちろんですが、不用意に強すぎる権限を与えないことで、セキュリティリスクを低減できることもカスタムエージェント利用の大きなメリットだと思います。
