Back to Skills

containerize-mcp-server

pjt222
Updated 2 days ago
8 views
17
2
17
View on GitHub
Designaimcpdesign

About

This skill containerizes an R-based MCP server using Docker, handling dependencies, network ports, and image optimization. It's designed for deploying MCP servers in containerized environments, distributing them to team members, or integrating them into Kubernetes infrastructure. Use it when you need a reproducible and portable deployment of an MCP server.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/containerize-mcp-server

Copy and paste this command in Claude Code to install this skill

Documentation


name: containerize-mcp-server locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Contenerizar un servidor MCP basado en R con Docker, incluyendo configuración de dependencias, puertos de red, y optimización de imagen. Usar cuando se necesite desplegar un servidor MCP en un entorno contenerizado, distribuir servidores MCP a miembros del equipo, o integrar servidores MCP en infraestructura Kubernetes. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: multi tags: docker, mcp, r, containerization, server

Contenerizar Servidor MCP

Contenerizar un servidor MCP basado en R para despliegue y distribución reproducible.

Cuándo Usar

  • Desplegando un servidor MCP en un entorno contenerizado
  • Distribuyendo servidores MCP pre-configurados a miembros del equipo
  • Integrando servidores MCP en infraestructura Kubernetes
  • Necesitando aislamiento entre múltiples servidores MCP
  • Automatizando el despliegue de servidores MCP en CI/CD

Entradas

  • Requerido: Código fuente del servidor MCP (R o Node.js)
  • Requerido: Lista de dependencias del servidor
  • Opcional: Certificados TLS para conexiones seguras
  • Opcional: Archivos de configuración del servidor
  • Opcional: Requisitos de recursos (CPU, memoria)

Procedimiento

Paso 1: Crear Dockerfile para Servidor MCP R

Construir la imagen Docker con las dependencias necesarias.

FROM rocker/r-ver:4.4.0

# Instalar dependencias del sistema
RUN apt-get update && apt-get install -y --no-install-recommends \
    libcurl4-openssl-dev \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Instalar paquetes R necesarios
RUN R -e "install.packages(c('mcptools', 'ellmer', 'jsonlite'), repos='https://cloud.r-project.org')"

# Copiar código del servidor
WORKDIR /server
COPY . .

# Exponer puerto MCP
EXPOSE 8080

# Punto de entrada
CMD ["Rscript", "-e", "mcptools::mcp_server()"]

Esperado: Dockerfile creado con todas las dependencias, imagen base apropiada seleccionada.

En caso de fallo: Verificar que los paquetes R se instalan correctamente, comprobar dependencias del sistema faltantes.

Paso 2: Configurar Red y Transporte

Configurar el transporte de red para el servidor MCP.

# Para transporte stdio (comunicación estándar)
CMD ["Rscript", "-e", "mcptools::mcp_server()"]

# Para transporte HTTP/SSE
EXPOSE 8080
CMD ["Rscript", "-e", "mcptools::mcp_server(transport='sse', port=8080, host='0.0.0.0')"]

Esperado: El servidor acepta conexiones en el transporte configurado, los puertos están correctamente expuestos.

En caso de fallo: Verificar que el host es '0.0.0.0' (no 'localhost') para acceso externo al contenedor, comprobar reglas de firewall.

Paso 3: Compilar y Probar

Compilar la imagen y verificar la funcionalidad.

# Compilar imagen
docker build -t mcp-server-r:latest .

# Ejecutar con transporte stdio
docker run -i mcp-server-r:latest

# Ejecutar con transporte HTTP
docker run -p 8080:8080 mcp-server-r:latest

# Probar conectividad
curl http://localhost:8080/health

Esperado: El servidor MCP se inicia correctamente dentro del contenedor, acepta conexiones de clientes.

En caso de fallo: Revisar logs del contenedor (docker logs), verificar que los paquetes R están disponibles, comprobar el mapeo de puertos.

Paso 4: Optimizar Imagen

Reducir el tamaño de la imagen para producción.

# Compilación multi-etapa
FROM rocker/r-ver:4.4.0 AS builder
RUN R -e "install.packages('renv', repos='https://cloud.r-project.org')"
COPY renv.lock .
RUN R -e "renv::restore()"

FROM rocker/r-ver:4.4.0
COPY --from=builder /usr/local/lib/R/site-library /usr/local/lib/R/site-library
COPY . /server
WORKDIR /server
CMD ["Rscript", "-e", "mcptools::mcp_server()"]

Esperado: La imagen final es significativamente más pequeña que la versión de una sola etapa.

En caso de fallo: Verificar que todos los paquetes necesarios se copian desde la etapa de compilación, probar la imagen final exhaustivamente.

Validación

  • La imagen Docker se compila sin errores
  • El servidor MCP se inicia dentro del contenedor
  • Los clientes pueden conectarse al servidor contenerizado
  • Las herramientas MCP están disponibles y funcionan correctamente
  • El tamaño de la imagen es razonable para distribución
  • El contenedor se reinicia limpiamente sin pérdida de estado

Errores Comunes

  • Host localhost en contenedor: Usar '0.0.0.0' como host para que el servidor sea accesible desde fuera del contenedor.
  • Paquetes R faltantes: Instalar todas las dependencias en el Dockerfile, no confiar en el entorno del host.
  • Tiempo de inicio largo: Pre-compilar paquetes en la etapa de compilación para reducir el tiempo de inicio.
  • Sin persistencia: Los datos del servidor se pierden al reiniciar el contenedor; usar volúmenes para estado persistente.

Habilidades Relacionadas

  • create-r-dockerfile - Patrones base de Dockerfile para aplicaciones R
  • configure-mcp-server - Configuración de servidores MCP sin Docker
  • build-custom-mcp-server - Construir servidores MCP personalizados
  • scaffold-mcp-server - Andamiaje de nuevos servidores MCP

GitHub Repository

pjt222/agent-almanac
Path: i18n/es/skills/containerize-mcp-server
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

executing-plans

Design

Use the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.

View skill

requesting-code-review

Design

This skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.

View skill

connect-mcp-server

Design

This skill provides a comprehensive guide for developers to connect MCP servers to Claude Code using HTTP, stdio, or SSE transports. It covers installation, configuration, authentication, and security for integrating external services like GitHub, Notion, and custom APIs. Use it when setting up MCP integrations, configuring external tools, or working with Claude's Model Context Protocol.

View skill

web-cli-teleport

Design

This skill helps developers choose between Claude Code Web and CLI interfaces based on task analysis, then enables seamless session teleportation between these environments. It optimizes workflow by managing session state and context when switching between web, CLI, or mobile. Use it for complex projects requiring different tools at various stages.

View skill