返回技能列表

containerize-mcp-server

pjt222
更新于 6 days ago
13 次查看
17
2
17
在 GitHub 上查看
aimcpdesign

关于

This skill containerizes R-based MCP servers using Docker, enabling deployment without local R installations and creating reproducible environments. It covers mcptools integration, transport configuration (stdio/HTTP), and connecting Claude Code to the container. Use it for distributing MCP servers or running them alongside other containerized services.

快速安装

Claude Code

推荐
主要方式
npx skills add pjt222/agent-almanac -a claude-code
插件命令备选方式
/plugin add https://github.com/pjt222/agent-almanac
Git 克隆备选方式
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/containerize-mcp-server

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档

容器化 MCP 服

以 Docker 封 R MCP 服以可攜部。

  • 部 R MCP 服而不須本地 R 裝
  • 建可重現 MCP 服境
  • 與他容器服並行 MCP 服
  • 傳 MCP 服至他開發者

  • :R MCP 服實(mcptools 基或自)
  • :Docker 裝且行
  • :服須之附 R 包
  • :傳模(stdio 或 HTTP)

一:建 MCP 服之 Dockerfile

FROM rocker/r-ver:4.5.0

# Install system dependencies
RUN apt-get update && apt-get install -y \
    libcurl4-openssl-dev \
    libssl-dev \
    libxml2-dev \
    libgit2-dev \
    libssh2-1-dev \
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Install R packages
RUN R -e "install.packages(c( \
    'remotes', \
    'ellmer' \
    ), repos='https://cloud.r-project.org/')"

# Install mcptools
RUN R -e "remotes::install_github('posit-dev/mcptools')"

# Set working directory
WORKDIR /workspace

# Expose MCP server ports
EXPOSE 3000 3001 3002

# Environment variables
ENV R_LIBS_USER=/workspace/renv/library
ENV RENV_PATHS_CACHE=/workspace/renv/cache

# Default: start MCP server
CMD ["R", "-e", "mcptools::mcp_server()"]

得: Dockerfile 於項根含 rocker/r-ver 基像、系依、mcptools 裝、MCP 服為默令。

敗: 驗基像 tag 合 R 版。remotes::install_github 敗→察 gitlibgit2-dev 於系依層。

二:建 docker-compose.yml

version: '3.8'

services:
  mcp-server:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: r-mcp-server
    image: r-mcp-server:latest

    volumes:
      - /path/to/projects:/workspace
      - renv-cache:/workspace/renv/cache

    stdin_open: true
    tty: true

    network_mode: "host"

    environment:
      - TERM=xterm-256color
      - R_LIBS_USER=/workspace/renv/library

    restart: unless-stopped

volumes:
  renv-cache:
    driver: local

network_mode: "host" 確 MCP 服埠於 localhost 可達。

得: docker-compose.yml 於項根含 MCP 服、項檔與 renv 緩之卷掛、stdio 傳啟 stdin_open/tty

敗: 卷路誤→調 /path/to/projects 為實項目錄。Win/WSL 用 /mnt/c/.../mnt/d/...

三:建且啟

docker compose build
docker compose up -d

得: 容器啟含 MCP 服行。

敗: docker compose logs mcp-server 察日。常問:

  • R 包缺:加於 Dockerfile 裝步
  • 埠已佔:變露埠或停衝服

四:連 Claude Code 至容器

stdio 傳(容器須以 stdin 保行):

claude mcp add r-mcp-docker stdio "docker" "exec" "-i" "r-mcp-server" "R" "-e" "mcptools::mcp_server()"

HTTP 傳(若 MCP 服支):

{
  "mcpServers": {
    "r-mcp-docker": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

得: Claude Code MCP 配含 r-mcp-docker 項,claude mcp list 示新服。

敗: stdio 傳→確容器名合(r-mcp-server)且容器以 docker ps 行。HTTP 傳→驗埠已露且 curl http://localhost:3000/mcp 可達。

五:驗連

# Check container is running
docker ps | grep mcp-server

# Test R session inside container
docker exec -it r-mcp-server R -e "sessionInfo()"

# Verify mcptools is available
docker exec -it r-mcp-server R -e "library(mcptools)"

得: docker psr-mcp-server 容器行,sessionInfo() 返期 R 版,library(mcptools) 無錯載。

敗: 容器未行→docker compose logs mcp-server 察啟錯。mcptools 載敗→重建像確包正裝。

六:加自 MCP 具

加項專 MCP 具→掛 R 腳:

volumes:
  - ./mcp-tools:/mcp-tools

於 CMD 載:

CMD ["R", "-e", "source('/mcp-tools/custom_tools.R'); mcptools::mcp_server()"]

得: 自 R 腳於容器內 /mcp-tools/ 可達,MCP 服啟時載之含默具。

敗: docker exec -it r-mcp-server ls /mcp-tools/ 驗卷掛路正。腳 source 敗→察自具缺依。

  • 容器無錯建
  • MCP 服於容器內啟
  • Claude Code 可連容器化服
  • MCP 具正應求
  • 容器淨重啟
  • 卷掛容項檔存取

  • stdin/tty 求:MCP stdio 傳須 stdin_open: truetty: true
  • 網隔:默 Docker 網或阻 localhost 存。用 network_mode: "host" 或露特埠。
  • 包版:釘 mcptools 至具體 commit 以重現
  • 像大:mcptools + 依可大。生產慮多階建。
  • Win Docker 路:Win 上 Docker Desktop 含 WSL,路映異

  • create-r-dockerfile - R 之基 Dockerfile 模
  • setup-docker-compose - compose 配詳
  • configure-mcp-server - 無 Docker 之 MCP 服配
  • troubleshoot-mcp-connection - 除 MCP 連問

GitHub 仓库

pjt222/agent-almanac
路径: i18n/wenyan-ultra/skills/containerize-mcp-server
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

content-collections

Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。

查看技能

polymarket

这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。

查看技能

creating-opencode-plugins

该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。

查看技能

sglang

SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。

查看技能