From c06b95dbd100fbda95f1f8b938cd3176b79b020e Mon Sep 17 00:00:00 2001 From: Jim Clark Date: Mon, 10 Nov 2025 14:08:54 -0800 Subject: [PATCH 1/2] add amazon-q client --- cmd/docker-mcp/client/config.yml | 28 +++++++++++++++++ cmd/docker-mcp/client/config_test.go | 30 +++++++++++++++++++ cmd/docker-mcp/client/ls.go | 1 + .../add_del/amazon-q-append/after-add.json | 1 + .../add_del/amazon-q-append/after-del.json | 1 + .../add_del/amazon-q-append/original.json | 6 ++++ .../add_del/amazon-q-create/after-add.json | 1 + .../add_del/amazon-q-create/after-del.json | 1 + .../add_del/amazon-q-create/original.json | 0 .../client/testdata/list/amazon-q.json | 12 ++++++++ img/client/amazon-q.svg | 12 ++++++++ 11 files changed, 93 insertions(+) create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-add.json create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-del.json create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-append/original.json create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-add.json create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-del.json create mode 100644 cmd/docker-mcp/client/testdata/add_del/amazon-q-create/original.json create mode 100644 cmd/docker-mcp/client/testdata/list/amazon-q.json create mode 100644 img/client/amazon-q.svg diff --git a/cmd/docker-mcp/client/config.yml b/cmd/docker-mcp/client/config.yml index a9c1f7c2..76b923e5 100644 --- a/cmd/docker-mcp/client/config.yml +++ b/cmd/docker-mcp/client/config.yml @@ -220,6 +220,24 @@ system: list: '.context_servers | to_entries | map(.value + {"name": .key})' set: .context_servers[$NAME] = {"source":"custom","enabled":true}+$JSON del: del(.context_servers[$NAME]) + amazon-q: + displayName: Amazon Q Developer CLI + source: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-getting-started.html + icon: https://raw.githubusercontent.com/docker/mcp-gateway/main/img/client/amazon-q.svg + installCheckPaths: + - $HOME/.aws/amazonq + - $USERPROFILE\.aws\amazonq + paths: + linux: + - $HOME/.aws/amazonq/mcp.json + darwin: + - $HOME/.aws/amazonq/mcp.json + windows: + - $USERPROFILE\.aws\amazonq\mcp.json + yq: + list: '.mcpServers | to_entries | map(.value + {"name": .key})' + set: .mcpServers[$NAME] = $JSON + del: del(.mcpServers[$NAME]) project: cursor: displayname: Cursor @@ -245,3 +263,13 @@ project: list: '.mcpServers | to_entries | map(.value + {"name": .key})' set: .mcpServers[$NAME] = $JSON+{"type":"stdio"} del: del(.mcpServers[$NAME]) + amazon-q: + displayName: Amazon Q Developer CLI + source: https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-getting-started.html + icon: https://raw.githubusercontent.com/docker/mcp-gateway/main/img/client/amazon-q.svg + projectfile: .amazonhq/mcp.json + yq: + list: '.mcpServers | to_entries | map(.value + {"name": .key})' + set: .mcpServers[$NAME] = $JSON + del: del(.mcpServers[$NAME]) + diff --git a/cmd/docker-mcp/client/config_test.go b/cmd/docker-mcp/client/config_test.go index c0372c24..02c800ad 100644 --- a/cmd/docker-mcp/client/config_test.go +++ b/cmd/docker-mcp/client/config_test.go @@ -120,6 +120,22 @@ func Test_yq_list(t *testing.T) { HTTPServers: []MCPServerHTTP{}, }, }, + { + name: "Amazon Q", + cfg: config.System[vendorAmazonQ], + content: "list/amazon-q.json", + result: &MCPJSONLists{ + STDIOServers: []MCPServerSTDIO{ + { + Name: "MCP_DOCKER", + Command: "docker", + Args: []string{"mcp", "gateway", "run"}, + }, + }, + SSEServers: []MCPServerSSE{}, + HTTPServers: []MCPServerHTTP{}, + }, + }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { @@ -213,6 +229,20 @@ func Test_yq_add_del(t *testing.T) { afterAdd: "zed-create/after-add.json", afterDel: "zed-create/after-del.json", }, + { + name: "Amazon Q - append", + cfg: config.System[vendorAmazonQ], + original: "amazon-q-append/original.json", + afterAdd: "amazon-q-append/after-add.json", + afterDel: "amazon-q-append/after-del.json", + }, + { + name: "Amazon Q - create", + cfg: config.System[vendorAmazonQ], + original: "amazon-q-create/original.json", + afterAdd: "amazon-q-create/after-add.json", + afterDel: "amazon-q-create/after-del.json", + }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { diff --git a/cmd/docker-mcp/client/ls.go b/cmd/docker-mcp/client/ls.go index 7848a9e3..2ee533ad 100644 --- a/cmd/docker-mcp/client/ls.go +++ b/cmd/docker-mcp/client/ls.go @@ -17,6 +17,7 @@ const ( vendorGordon = "gordon" vendorZed = "zed" vendorCodex = "codex" + vendorAmazonQ = "amazon-q" ) const ( diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-add.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-add.json new file mode 100644 index 00000000..33ee94ec --- /dev/null +++ b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-add.json @@ -0,0 +1 @@ +{"foo":true,"mcpServers":{"something":{},"my-server":{"command":"docker","args":["mcp","gateway","run"]}}} \ No newline at end of file diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-del.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-del.json new file mode 100644 index 00000000..5e3c79ce --- /dev/null +++ b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/after-del.json @@ -0,0 +1 @@ +{"foo":true,"mcpServers":{"something":{}}} \ No newline at end of file diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/original.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/original.json new file mode 100644 index 00000000..41c1d018 --- /dev/null +++ b/cmd/docker-mcp/client/testdata/add_del/amazon-q-append/original.json @@ -0,0 +1,6 @@ +{ + "foo": true, + "mcpServers": { + "something": {} + } +} diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-add.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-add.json new file mode 100644 index 00000000..f5fcc952 --- /dev/null +++ b/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-add.json @@ -0,0 +1 @@ +{"mcpServers":{"my-server":{"command":"docker","args":["mcp","gateway","run"]}}} \ No newline at end of file diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-del.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-del.json new file mode 100644 index 00000000..6b0a486d --- /dev/null +++ b/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/after-del.json @@ -0,0 +1 @@ +{"mcpServers":{}} \ No newline at end of file diff --git a/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/original.json b/cmd/docker-mcp/client/testdata/add_del/amazon-q-create/original.json new file mode 100644 index 00000000..e69de29b diff --git a/cmd/docker-mcp/client/testdata/list/amazon-q.json b/cmd/docker-mcp/client/testdata/list/amazon-q.json new file mode 100644 index 00000000..438515d5 --- /dev/null +++ b/cmd/docker-mcp/client/testdata/list/amazon-q.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "MCP_DOCKER": { + "command": "docker", + "args": [ + "mcp", + "gateway", + "run" + ] + } + } +} diff --git a/img/client/amazon-q.svg b/img/client/amazon-q.svg new file mode 100644 index 00000000..927d49cf --- /dev/null +++ b/img/client/amazon-q.svg @@ -0,0 +1,12 @@ + + + Icon-Architecture/64/Arch_Amazon-Q_64 + + + + + + + + + \ No newline at end of file From 7f009c7fa371dc676e606bdc4143929429d5f965 Mon Sep 17 00:00:00 2001 From: Jim Clark Date: Mon, 10 Nov 2025 14:17:13 -0800 Subject: [PATCH 2/2] update docs for amazon-q --- .../generator/reference/docker_mcp_client_connect.yaml | 6 +++--- .../reference/docker_mcp_client_disconnect.yaml | 6 +++--- docs/generator/reference/mcp_client.md | 10 +++++----- docs/generator/reference/mcp_client_connect.md | 2 +- docs/generator/reference/mcp_client_disconnect.md | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/generator/reference/docker_mcp_client_connect.yaml b/docs/generator/reference/docker_mcp_client_connect.yaml index 273747d8..ece56c48 100644 --- a/docs/generator/reference/docker_mcp_client_connect.yaml +++ b/docs/generator/reference/docker_mcp_client_connect.yaml @@ -1,12 +1,12 @@ command: docker mcp client connect short: | - Connect the Docker MCP Toolkit to a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Connect the Docker MCP Toolkit to a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed long: | - Connect the Docker MCP Toolkit to a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Connect the Docker MCP Toolkit to a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed usage: |- docker mcp client connect [OPTIONS] - Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed pname: docker mcp client plink: docker_mcp_client.yaml options: diff --git a/docs/generator/reference/docker_mcp_client_disconnect.yaml b/docs/generator/reference/docker_mcp_client_disconnect.yaml index 41f83944..2d7b6e8a 100644 --- a/docs/generator/reference/docker_mcp_client_disconnect.yaml +++ b/docs/generator/reference/docker_mcp_client_disconnect.yaml @@ -1,12 +1,12 @@ command: docker mcp client disconnect short: | - Disconnect the Docker MCP Toolkit from a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Disconnect the Docker MCP Toolkit from a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed long: | - Disconnect the Docker MCP Toolkit from a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Disconnect the Docker MCP Toolkit from a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed usage: |- docker mcp client disconnect [OPTIONS] - Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed + Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed pname: docker mcp client plink: docker_mcp_client.yaml options: diff --git a/docs/generator/reference/mcp_client.md b/docs/generator/reference/mcp_client.md index d33f9558..e0d165d3 100644 --- a/docs/generator/reference/mcp_client.md +++ b/docs/generator/reference/mcp_client.md @@ -5,11 +5,11 @@ Manage MCP clients ### Subcommands -| Name | Description | -|:-----------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`connect`](mcp_client_connect.md) | Connect the Docker MCP Toolkit to a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed | -| [`disconnect`](mcp_client_disconnect.md) | Disconnect the Docker MCP Toolkit from a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed | -| [`ls`](mcp_client_ls.md) | List client configurations | +| Name | Description | +|:-----------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`connect`](mcp_client_connect.md) | Connect the Docker MCP Toolkit to a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed | +| [`disconnect`](mcp_client_disconnect.md) | Disconnect the Docker MCP Toolkit from a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed | +| [`ls`](mcp_client_ls.md) | List client configurations | diff --git a/docs/generator/reference/mcp_client_connect.md b/docs/generator/reference/mcp_client_connect.md index 70ee4105..5b78fd50 100644 --- a/docs/generator/reference/mcp_client_connect.md +++ b/docs/generator/reference/mcp_client_connect.md @@ -1,7 +1,7 @@ # docker mcp client connect -Connect the Docker MCP Toolkit to a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed +Connect the Docker MCP Toolkit to a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed ### Options diff --git a/docs/generator/reference/mcp_client_disconnect.md b/docs/generator/reference/mcp_client_disconnect.md index 5999cf9c..349baddf 100644 --- a/docs/generator/reference/mcp_client_disconnect.md +++ b/docs/generator/reference/mcp_client_disconnect.md @@ -1,7 +1,7 @@ # docker mcp client disconnect -Disconnect the Docker MCP Toolkit from a client. Supported clients: claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed +Disconnect the Docker MCP Toolkit from a client. Supported clients: amazon-q claude-code claude-desktop codex continue cursor gemini goose gordon lmstudio opencode sema4 vscode zed ### Options