# Servidor MCP de Docker Hub


El servidor MCP de Docker Hub es un servidor de Model Context Protocol (MCP) que se conecta con las API de Docker Hub para hacer que los metadatos detallados de las imágenes sean accesibles para los LLM, lo que permite un descubrimiento inteligente de contenido y una gestión de repositorios eficiente.

Para obtener más información sobre los conceptos de MCP y cómo funcionan los servidores MCP, consulta la página de descripción general del [Catálogo y kit de herramientas de Docker MCP](/ai/mcp-catalog-and-toolkit/hub-mcp/).

## Características principales

- Contexto avanzado para LLM: el servidor MCP de Docker proporciona a los LLM un contexto estructurado y detallado para las imágenes de Docker Hub, lo que permite recomendaciones más inteligentes y relevantes para los desarrolladores, ya sea que estén eligiendo una imagen base o automatizando flujos de trabajo de CI/CD.
- Descubrimiento de imágenes mediante lenguaje natural: los desarrolladores pueden encontrar la imagen de contenedor adecuada utilizando lenguaje natural, sin necesidad de recordar etiquetas ni nombres de repositorios. Solo describe lo que necesitas y Docker Hub devolverá las imágenes que coincidan con tu intención.
- Gestión de repositorios simplificada: el servidor MCP de Hub permite a los agentes gestionar repositorios a través de lenguaje natural, obteniendo detalles de imágenes, viendo estadísticas, buscando contenido y realizando operaciones clave de forma rápida y sencilla.

## Instalar el servidor MCP de Docker Hub

1. En el menú de **MCP Toolkit**, selecciona la pestaña **Catalog**, busca **Docker Hub** y selecciona el icono de suma para añadir el servidor MCP de Docker Hub.
2. En la pestaña **Configuration** del servidor, introduce tu nombre de usuario de Docker Hub y un token de acceso personal (PAT).
3. En la pestaña **Clients** de MCP Toolkit, asegúrate de que Gordon esté conectado.
4. Desde el menú de **Gordon**, ahora puedes enviar solicitudes relacionadas con tu cuenta de Docker Hub, de acuerdo con las herramientas proporcionadas por el servidor MCP de Docker Hub. Para probarlo, pregúntale a Gordon:

   ```text
   ¿Qué repositorios hay en mi espacio de nombres?
   ```

> [!TIP]
> Por defecto, el [cliente](/ai/mcp-catalog-and-toolkit/toolkit/#install-an-mcp-client) Gordon está habilitado, lo que significa que Gordon puede interactuar automáticamente con tus servidores MCP.

## Usar Claude Desktop como cliente

1. Añade la configuración del servidor MCP de Docker Hub a tu archivo `claude_desktop_config.json`:

   **Solo para repositorios públicos**



   ```json
   {
     "mcpServers": {
       "docker-hub": {
         "command": "node",
         "args": [
           "/RUTA/COMPLETA/A/TU/docker-hub-mcp-server/dist/index.js",
           "--transport=stdio"
         ]
       }
     }
   }
   ```

   Donde:
   - `/RUTA/COMPLETA/A/TU/docker-hub-mcp-server` es la ruta completa donde clonaste el repositorio

   **Para acceso autenticado**



   ```json
   {
     "mcpServers": {
       "docker-hub": {
         "command": "node",
         "args": [
           "/RUTA/COMPLETA/A/TU/docker-hub-mcp-server/dist/index.js",
           "--transport=stdio",
           "--username=TU_USUARIO_DOCKER_HUB"
         ],
         "env": {
           "HUB_PAT_TOKEN": "TU_TOKEN_DE_ACCESO_PERSONAL_DOCKER_HUB"
         }
       }
     }
   }
   ```

   Donde:
   - `TU_USUARIO_DOCKER_HUB` es tu nombre de usuario de Docker Hub.
   - `TU_TOKEN_DE_ACCESO_PERSONAL_DOCKER_HUB` es tu token de acceso personal de Docker Hub.
   - `/RUTA/COMPLETA/A/TU/docker-hub-mcp-server` es la ruta completa donde clonaste el repositorio

   

2. Guarda el archivo de configuración y reinicia completamente Claude Desktop para que los cambios surtan efecto.

## Uso con Visual Studio Code

1. Añade la configuración del servidor MCP de Docker Hub al archivo de configuración de usuario (JSON) en Visual Studio Code. Puedes hacerlo abriendo la paleta de comandos (`Command Palette`) y escribiendo `Preferences: Open User Settings (JSON)`.

   **Solo para repositorios públicos**



   ```json
   {
     "mcpServers": {
       "docker-hub": {
         "command": "node",
         "args": [
           "/RUTA/COMPLETA/A/TU/docker-hub-mcp-server/dist/index.js",
           "--transport=stdio"
         ]
       }
     }
   }
   ```

   Donde:
   - `/RUTA/COMPLETA/A/TU/docker-hub-mcp-server` es la ruta completa donde clonaste el repositorio

   **Para acceso autenticado**



   ```json
   {
     "mcpServers": {
       "docker-hub": {
         "command": "node",
         "args": [
           "/RUTA/COMPLETA/A/TU/docker-hub-mcp-server/dist/index.js",
           "--transport=stdio"
         ],
         "env": {
           "HUB_USERNAME": "TU_USUARIO_DOCKER_HUB",
           "HUB_PAT_TOKEN": "TU_TOKEN_DE_ACCESO_PERSONAL_DOCKER_HUB"
         }
       }
     }
   }
   ```

   Donde:
   - `TU_USUARIO_DOCKER_HUB` es tu nombre de usuario de Docker Hub.
   - `TU_TOKEN_DE_ACCESO_PERSONAL_DOCKER_HUB` es tu token de acceso personal de Docker Hub.
   - `/RUTA/COMPLETA/A/TU/docker-hub-mcp-server` es la ruta completa donde clonaste el repositorio

   

2. Abre la paleta de comandos (`Command Palette`) y escribe `MCP: List Servers`.
3. Selecciona `docker-hub` y selecciona `Start Server`.

## Uso de otros clientes

Para integrar el servidor MCP de Docker Hub en tu propio entorno de desarrollo, consulta el código fuente y las instrucciones de instalación en el [repositorio de GitHub de `hub-mcp`](https://github.com/docker/hub-mcp).

## Ejemplos de uso

Esta sección proporciona ejemplos orientados a tareas para operaciones comunes con las herramientas de Docker Hub.

### Buscar imágenes

```console
# Buscar imágenes oficiales
$ docker ai "Busca imágenes oficiales de nginx en Docker Hub"

# Buscar imágenes ligeras para reducir el tamaño del despliegue y mejorar el rendimiento
$ docker ai "Busca imágenes minimalistas de Node.js con un tamaño reducido"

# Obtener la etiqueta más reciente de una imagen base
$ docker ai "Muéstrame los detalles de la etiqueta más reciente de go"

# Buscar una base de datos lista para producción con características empresariales y confiabilidad
$ docker ai "Busca imágenes de bases de datos listas para producción"

# Comparar versiones de Ubuntu para elegir la adecuada para mi proyecto
$ docker ai "Ayúdame a encontrar la versión correcta de Ubuntu para mi proyecto"
```

### Gestión de repositorios

```console
# Crear un repositorio
$ docker ai "Crea un repositorio en mi espacio de nombres"

# Listar todos los repositorios en mi espacio de nombres
$ docker ai "Lista todos los repositorios en mi espacio de nombres"

# Encontrar el repositorio más grande en mi espacio de nombres
$ docker ai "¿Cuál de mis repositorios ocupa más espacio?"

# Encontrar repositorios que no se han actualizado recientemente
$ docker ai "¿Cuáles de mis repositorios no han recibido actualizaciones en los últimos 60 días?"

# Encontrar qué repositorios están activos y en uso actualmente
$ docker ai "Muéstrame mis repositorios actualizados más recientemente"

# Obtener detalles sobre un repositorio
$ docker ai "Muéstrame información sobre mi repositorio '<repository-name>'"
```

### Descargar/subir imágenes

```console
# Descargar la versión más reciente de PostgreSQL
$ docker ai "Descarga la imagen más reciente de postgres"

# Subir una imagen a tu repositorio de Docker Hub
$ docker ai "Sube mi <image-name> a mi repositorio <repository-name>"
```

### Gestión de etiquetas (tags)

```console
# Listar todas las etiquetas de un repositorio
$ docker ai "Muéstrame todas las etiquetas de mi repositorio '<repository-name>'"

# Encontrar la etiqueta subida más recientemente
$ docker ai "¿Cuál es la etiqueta más reciente subida a mi repositorio '<repository-name>'?"

# Listar etiquetas con filtrado por arquitectura
$ docker ai "Lista las etiquetas en el repositorio '<repository-name>' que sean compatibles con la arquitectura amd64"

# Obtener información detallada sobre una específica etiqueta
$ docker ai "Muéstrame los detalles sobre la etiqueta '<tag-name>' en el repositorio '<repository-name>'"

# Comprobar si existe una etiqueta específica
$ docker ai "Comprueba si existe la versión 'v1.2.0' para mi repositorio 'my-web-app'"
```

### Imágenes endurecidas de Docker (Docker Hardened Images)

```console
# Listar imágenes endurecidas disponibles
$ docker ai "¿Cuál es la imagen más segura que puedo usar para ejecutar una aplicación node.js?"

# Convertir un Dockerfile para usar una imagen endurecida
$ docker ai "¿Puedes ayudarme a actualizar mi Dockerfile para usar una imagen endurecida de docker en lugar de la actual?"
```

> [!NOTE]
> Para acceder a las imágenes endurecidas de Docker (Docker Hardened Images), se requiere una suscripción. Si estás interesado en usarlas, visita [Docker Hardened Images](https://www.docker.com/products/hardened-images/).

## Referencia

Esta sección proporciona una lista completa de las herramientas que puedes encontrar en el servidor MCP de Docker Hub.

### Herramientas del servidor MCP de Docker Hub

Herramientas para interactuar con tus repositorios de Docker y descubrir contenido en Docker Hub.

| Nombre                           | Descripción                                                                                                                            |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `check-repository`               | Comprobar repositorio                                                                                                                  |
| `check-repository-tag`           | Comprobar etiqueta de repositorio                                                                                                      |
| `check-repository-tags`          | Comprobar etiquetas de repositorio                                                                                                     |
| `create-repository`              | Crea un repositorio nuevo                                                                                                              |
| `docker-hardened-images`         | Lista las [Docker Hardened Images](https://www.docker.com/products/hardened-images/) disponibles en el espacio de nombres especificado |
| `get-namespaces`                 | Obtiene organizaciones/espacios de nombres para un usuario                                                                             |
| `get-repository-dockerfile`      | Obtiene el Dockerfile del repositorio                                                                                                  |
| `get-repository-info`            | Obtiene información del repositorio                                                                                                    |
| `list-repositories-by-namespace` | Lista los repositorios en un espacio de nombres                                                                                        |
| `list-repository-tags`           | Lista las etiquetas del repositorio                                                                                                    |
| `read-repository-tag`            | Leer etiqueta de repositorio                                                                                                           |
| `search`                         | Buscar contenido en Docker Hub                                                                                                         |
| `set-repository-dockerfile`      | Establece el Dockerfile del repositorio                                                                                                |
| `update-repository-info`         | Actualiza la información del repositorio                                                                                               |

