From 3be86cb0440666c4208c5201633bce3dba47beb7 Mon Sep 17 00:00:00 2001 From: Karan Singh <30921663+karanveersingh5623@users.noreply.github.com> Date: Mon, 24 Nov 2025 18:46:47 +0900 Subject: [PATCH] Merge pull request #23733 from karanveersingh5623/guides/claude-code-mcp guides: add claude-code-mcp user guide --- .../Images/Localhost.avif | Bin 0 -> 4621 bytes .../Images/catalog_docker_hub.avif | Bin 0 -> 10406 bytes .../Images/docker-connect-claude.avif | Bin 0 -> 30329 bytes .../Images/dockerhub_secrets.avif | Bin 0 -> 26665 bytes .../Images/mcp-servers.avif | Bin 0 -> 7274 bytes .../claude-code-mcp-guide.md | 297 ++++++++++++++++++ 6 files changed, 297 insertions(+) create mode 100644 content/guides/genai-claude-code-mcp/Images/Localhost.avif create mode 100644 content/guides/genai-claude-code-mcp/Images/catalog_docker_hub.avif create mode 100644 content/guides/genai-claude-code-mcp/Images/docker-connect-claude.avif create mode 100644 content/guides/genai-claude-code-mcp/Images/dockerhub_secrets.avif create mode 100644 content/guides/genai-claude-code-mcp/Images/mcp-servers.avif create mode 100644 content/guides/genai-claude-code-mcp/claude-code-mcp-guide.md diff --git a/content/guides/genai-claude-code-mcp/Images/Localhost.avif b/content/guides/genai-claude-code-mcp/Images/Localhost.avif new file mode 100644 index 0000000000000000000000000000000000000000..057f854c1fcd540f4ce35aff2e9e3e236dd5de42 GIT binary patch literal 4621 zcmXw6byO7W(_KgIHQv{Y03_!YDy1PNTagpxsSh_^^ z!}mMCne)t@xp&UY{QCd^02XUkFGn+XxHaJ3{viTx4MM=ptkvW|^7qsU!pha`pLTCt z?=0<{|33u)9N`wO|I7cO9o+nXV@Mt0u899Mtoz6Ww{x)gSG@uNu|^TM>ZB!JM+d0es!1D`+b856 z8uJj641qaNqE;*l=_Rvv>`=~^LcPGd8qgrhb$(=mj?_>={k0K6iK+%PwK}eTc`13l zZK5>Uibkp`1CKs~U=yg{Cdc}8b(0AVaLb!yVOh~hk_@fEA5c#tNsV-Srk~&(z8!RJ zS=b_Ny#TAe!U~hB+tk#N^Va6`=(x!rYhjvGbpNQj5T?AVDDC_?1a%6DHEmJWC&Wkl zsn%DkSd-^-vWQuFyt^U!ax)^EO`L{~@zChlQhn<6!a}{cGdx*~zm7Kvv-l<3)BGxU z^)L}JFfn) zi4|jv(VF97qU?1O6e#&so9cVDWf+)3O!@;B&ho`y%WL%eBoaNhA;&$?vZO7VZ+_Vh z6*&sfO!3?g4?m<3Nd%njUJ{JASz|DV?B1Oj`lO4GjC()04VJFa&orOb=5cceR4H1B z_5IprE+ih&C6|qkpC8&}-VZEGWD@FR4GpR+Jgo`+>q+4`_0B%_X8QMMLe0{(?hI?w zE-<6K!L+1X0dwdqO>K}ZN%({AygjwQmS_ftX)s?mIlkYLI!nf@egn}$ENl@U6eryx z*hz;xzOF{Jd{V3sFl!zM-N4RaBs=S zsI$Di@+z#0kCKSkZF^QT(R}%O`qrOHk66TW^b_;@4+zr{tJt{dK9-bVSsv}7odVUP z^`zMA7i-tMQezZU;_I`*n?coPu%>V3UTUjmndFknU~-x=A@Miz$dgV1QqHFW6;%

B8`-*3`D6dG9I88mB8hx)uiFE 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 literal 0 HcmV?d00001 diff --git a/content/guides/genai-claude-code-mcp/Images/catalog_docker_hub.avif b/content/guides/genai-claude-code-mcp/Images/catalog_docker_hub.avif new file mode 100644 index 0000000000000000000000000000000000000000..22398f6f59cba164ec78d503ccc9c334f57e567b GIT binary patch literal 10406 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 F|3ApX>{0*# literal 0 HcmV?d00001 diff --git a/content/guides/genai-claude-code-mcp/Images/docker-connect-claude.avif b/content/guides/genai-claude-code-mcp/Images/docker-connect-claude.avif new file mode 100644 index 0000000000000000000000000000000000000000..692b0e8badb02956a7cfd5bdf7dcad7435f40d3b GIT binary patch literal 30329 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 OE{pJ)fBuIF#^*&2VC9$q literal 0 HcmV?d00001 diff --git a/content/guides/genai-claude-code-mcp/Images/dockerhub_secrets.avif b/content/guides/genai-claude-code-mcp/Images/dockerhub_secrets.avif new file mode 100644 index 0000000000000000000000000000000000000000..94e3894b200487e4dc2bcee2dc83f501ee39ca6b GIT binary patch literal 26665 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%0AZsEkrn$n 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 literal 0 HcmV?d00001 diff --git a/content/guides/genai-claude-code-mcp/Images/mcp-servers.avif b/content/guides/genai-claude-code-mcp/Images/mcp-servers.avif new file mode 100644 index 0000000000000000000000000000000000000000..71f64840f687a6b8556b813b2a54762f11cb05a9 GIT binary patch literal 7274 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 literal 0 HcmV?d00001 diff --git a/content/guides/genai-claude-code-mcp/claude-code-mcp-guide.md b/content/guides/genai-claude-code-mcp/claude-code-mcp-guide.md new file mode 100644 index 0000000000..da16b92328 --- /dev/null +++ b/content/guides/genai-claude-code-mcp/claude-code-mcp-guide.md @@ -0,0 +1,297 @@ +--- +description: Learn how to use Claude Code with Docker MCP Toolkit to generate production-ready Docker Compose files from natural language using the Docker Hub MCP server. +keywords: mcp, model context protocol, docker, docker desktop, claude code, docker hub, compose, automation +title: Generate Docker Compose Files with Claude Code and Docker MCP Toolkit +summary: | + This guide shows how to wire Claude Code to the Docker MCP Toolkit so it can search Docker Hub images and generate complete Docker Compose stacks from natural language. + You’ll enable the Docker Hub MCP server, connect Claude Code, verify MCP access, and create a Node.js + PostgreSQL stack with a conversational prompt. +tags: [ai] +aliases: + - /guides/use-case/genai-claude-code-mcp/ +params: + time: 15 minutes +--- + +This guide introduces how to use Claude Code together with Docker MCP Toolkit so Claude can search Docker Hub in real time and generate a complete `docker-compose.yaml` from natural language. + +Instead of manually writing YAML or looking for image tags, you describe your stack once — Claude uses the Model Context Protocol (MCP) to query Docker Hub and build a production-ready Compose file. + +In this guide, you’ll learn how to: + +- Enable Docker MCP Toolkit in Docker Desktop +- Add the Docker Hub MCP server +- Connect Claude Code to the MCP Gateway (GUI or CLI) +- Verify MCP connectivity inside Claude +- Ask Claude to generate and save a Compose file for a Node.js + PostgreSQL app +- Deploy it instantly with `docker compose up` + +--- + +## Use Claude Code and Docker MCP Toolkit to generate a Docker Compose file from natural language + + +- **Setup**: Enable MCP Toolkit → Add Docker Hub MCP server → Connect Claude Code +- **Use Claude**: Describe your stack in plain English +- **Automate**: Claude queries Docker Hub via MCP and builds a complete `docker-compose.yaml` +- **Deploy**: Run `docker compose up` → Node.js + PostgreSQL live on `localhost:3000` +- **Benefit**: Zero YAML authoring. Zero image searching. Describe once → Claude builds it. + +**Estimated time**: ~15 minutes + +--- + +## 1. What you are building + +The goal is simple: use Claude Code together with the Docker MCP Toolkit to search Docker Hub images and generate a complete Docker Compose file for a Node.js and PostgreSQL setup. + +The Model Context Protocol (MCP) bridges Claude Code and Docker Desktop, giving Claude real-time access to Docker's tools. Instead of context-switching between Docker, terminal commands, and YAML editors, you describe your requirements once and Claude handles the infrastructure details. + +**Why this matters:** This pattern scales to complex multi-service setups, database migrations, networking, security policies — all through conversational prompts. + +--- + +## 2. Prerequisites + +Make sure you have: + +- Docker Desktop installed +- Enable Docker Desktop updated with [MCP Toolkit](https://docs.docker.com/ai/mcp-catalog-and-toolkit/get-started/#setup) support + +- Claude Code installed + +--- + +## 3. Install the Docker Hub MCP server + +1. Open **Docker Desktop** +1. Select **MCP Toolkit** +1. Go to the **Catalog** tab +1. Search for **Docker Hub** +1. Select the **Docker Hub**MCP server +1. Add the MCP server, then open the **Configuration** tab +1. Enter your Docker Hub username +1. [Create a read-only personal access token](/security/access-tokens/#create-a-personal-access-token) and enter your access token under **Secrets** +1. Save the configuration + +![Docker Hub](./images/catalog_docker_hub.avif "Docker Hub") + +Public images work without credentials. For private repositories, you can add your Docker Hub username and token later. + +![Docker Hub Secrets](./images/dockerhub_secrets.avif "Docker Hub Secrets") + + +--- + +## 4. Connect Claude Code to Docker MCP Toolkit + +You can connect from Docker Desktop or using the CLI. + +### Option A. Connect with Docker Desktop + +1. Open **MCP Toolkit** +1. Go to the **Clients** tab +1. Locate **Claude Code** +1. Select **Connect** + +![Docker Connection](./images/docker-connect-claude.avif) + +### Option B. Connect using the CLI + +```console +$ claude mcp add MCP_DOCKER -s user -- docker mcp gateway run +``` + +--- + +## 5. Verify MCP servers inside Claude Code + +1. Navigate to your project folder: + +```console +$ cd /path/to/project +``` + +1. Start Claude Code: + +```console +$ claude +``` + +1. In the input box, type: + +```console +/mcp +``` + +You should now see: + +- The MCP gateway (for example `MCP_DOCKER`) +- Tools provided by the Docker Hub MCP server + +![mcp-docker](./images/mcp-servers.avif) + +If not, restart Claude Code or check Docker Desktop to confirm the connection. + +--- + +## 6. Create a basic Node.js app + +Claude Code generates more accurate Compose files when it can inspect a real project. Set up the application code now so the agent can bind mount it later. + +Inside project folder, create a folder named `app`: + +```console +$ mkdir app +$ cd app +$ npm init -y +$ npm install express +``` + +Create `index.js`: + +```console +const express = require("express"); +const app = express(); + +app.get("/", (req, res) => { + res.send("Node.js, Docker, and MCP Toolkit are working together!"); +}); + +app.listen(3000, () => { + console.log("Server running on port 3000"); +}); +``` + +Add a start script to `package.json`: + +```console +"scripts": { + "start": "node index.js" +} +``` + +Return to your project root (`cd ..`) once the app is ready. + +--- + +## 7. Ask Claude Code to design your Docker Compose stack + +Paste this message into Claude Code: + +```console +Using the Docker Hub MCP server: + +Search Docker Hub for an official Node.js image and a PostgreSQL image. +Choose stable, commonly used tags such as the Node LTS version and a recent major Postgres version. + +Generate a Docker Compose file (`docker-compose.yaml`) with: +- app: + - runs on port 3000 + - bind mounts the existing ./app directory into /usr/src/app + - sets /usr/src/app as the working directory and runs `npm install && npm start` +- db: running on port 5432 using a named volume + +Include: +- Environment variables for Postgres +- A shared bridge network +- Healthchecks where appropriate +- Pin the image version using the tag + index digest +``` + +Claude will search images through MCP, inspect the `app` directory, and generate a Compose file that mounts and runs your local code. + +--- + +## 8. Save the generated Docker Compose file + +Tell Claude: + +```console +Save the final Docker Compose file (docker-compose.yaml) into the current project directory. +``` + +You should see something like this: + +```console +services: + app: + image: node: + working_dir: /usr/src/app + volumes: + - .:/usr/src/app + ports: + - "3000:3000" + depends_on: + - db + networks: + - app-net + + db: + image: postgres: + environment: + POSTGRES_USER: example + POSTGRES_PASSWORD: example + POSTGRES_DB: appdb + volumes: + - db-data:/var/lib/postgresql/data + ports: + - "5432:5432" + networks: + - app-net + +volumes: + db-data: + +networks: + app-net: + driver: bridge +``` + +--- + +## 9. Run the Docker Compose stack + +From your project root: + +```console +$ docker compose up +``` + +Docker will: + +- Pull the Node and Postgres images selected through Docker Hub MCP +- Create networks and volumes +- Start the containers + +Open your browser: + +```console +http://localhost:3000 +``` +![Local Host](./images/Localhost.avif) + +Your Node.js app should now be running. + +--- + +## Conclusion + +By combining Claude Code with the Docker MCP Toolkit, Docker Desktop, and the Docker Hub MCP server, you can describe your stack in natural language and let MCP handle the details. This removes context switching and replaces it with a smooth, guided workflow powered by model context protocol integrations. + +--- + +### Next steps + +- Explore the 220+ MCP servers available in the [Docker MCP catalog](https://hub.docker.com/mcp) +- Connect Claude Code to your databases, internal APIs, and team tools +- Share your MCP setup with your team so everyone works consistently + +The future of development is not about switching between tools. It is about tools working together in a simple, safe, and predictable way. The Docker MCP Toolkit brings that future into your everyday workflow. + + + +## Learn more + +- **[Explore the MCP Catalog](https://hub.docker.com/mcp):** Discover containerized, security-hardened MCP servers +- **[Get started with MCP Toolkit in Docker Desktop](https://hub.docker.com/open-desktop?url=https://open.docker.com/dashboard/mcp):** Requires version 4.48 or newer to launch automatically +- **[Read the MCP Horror Stories series](https://www.docker.com/blog/mcp-horror-stories-the-supply-chain-attack/):** Learn about common MCP security pitfalls and how to avoid them