Model Context Protocol (MCP)を使用して、Q CLIに外部ツールやリソースを追加する方法を説明します。
MCPとは
MCPは、アプリケーションがLLMにコンテキストを提供する標準化されたプロトコルです。ローカルで実行されるMCPサーバーを通じて、Q CLIの機能を拡張できます。
MCP管理コマンド
サーバー一覧表示
q mcp list
サーバー追加
q mcp add <server-name> <command> [--args arg1,arg2]
サーバー削除
q mcp remove <server-name>
プロンプト管理
/prompts # MCPプロンプト一覧表示
設定ファイル
MCPサーバーは設定ファイルで管理されます:
場所: ~/.aws/amazonq/mcp-config.json
基本設定例
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
リモートMCP接続
{
"mcpServers": {
"remote-server": {
"url": "https://example.com/mcp",
"transport": "sse"
}
}
}
OAuth設定
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"oauth": {
"provider": "github",
"scopes": ["repo", "user"]
}
}
}
}
エージェントでのMCPツール使用
エージェント設定でMCPツールを指定:
{
"description": "データベース管理エージェント",
"tools": ["@postgres/query", "@postgres/list_tables"],
"allowedTools": ["@postgres/query"]
}
フォーマット: @<server-name>/<tool-name>
タイムアウト設定
q settings mcp.initTimeout 30000 # 初期化タイムアウト(ミリ秒)
q settings mcp.noInteractiveTimeout 5000 # 非対話タイムアウト(ミリ秒)
使用例
ファイルシステムMCPサーバー追加
q mcp add filesystem npx --args "-y,@modelcontextprotocol/server-filesystem,/home/user/projects"
データベースMCPサーバー追加
q mcp add postgres npx --args "-y,@modelcontextprotocol/server-postgres,postgresql://localhost/mydb"
エージェントでMCPツールを使用
{
"description": "データ分析エージェント",
"tools": [
"fs_read",
"@postgres/query",
"@postgres/list_tables"
],
"allowedTools": ["@postgres/query"]
}
トラブルシューティング
サーバーが起動しない
# タイムアウトを延長
q settings mcp.initTimeout 60000
ツールが表示されない
# サーバー一覧を確認
q mcp list
# 設定ファイルを確認
cat ~/.aws/amazonq/mcp-config.json
パス展開の問題
設定ファイルでは絶対パスを使用してください。~や環境変数は展開されます。
注意事項
- MCPサーバーはローカルで実行される
- サーバーごとに適切な権限設定が必要
- OAuth設定は対応するプロバイダーのみ
- リモート接続はSSE(Server-Sent Events)をサポート
関連コマンド
q mcp list # サーバー一覧
q mcp add <name> <command> # サーバー追加
q mcp remove <name> # サーバー削除
/prompts # MCPプロンプト管理
q settings mcp.initTimeout <ms> # タイムアウト設定