containerize-mcp-server
О программе
Этот навык контейнеризирует MCP-серверы на основе R с использованием Docker, позволяя развертывание без локальных установок R. Он обеспечивает интеграцию mcptools, проброс портов и настройку транспорта (stdio/HTTP) для воспроизводимых окружений. Используйте его для запуска MCP-серверов вместе с другими контейнеризированными сервисами или для распространения их другим разработчикам.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit 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)
法
第一步:建 Dockerfile 為 MCP 伺
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 伺為默令。
敗則: 驗基像合汝 R 版。若 remotes::install_github 敗,察 git 與 libgit2-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 緩之卷掛、stdin_open/tty 啟為 stdio 傳。
敗則: 若卷徑誤,改 /path/to/projects 為實項徑。Windows/WSL 則用 /mnt/c/... 或 /mnt/d/... 徑。
第三步:建而啟
docker compose build
docker compose up -d
得: 容啟附 MCP 伺行。
敗則: 以 docker compose logs mcp-server 察誌。常問:
- 缺 R 包:加於 Dockerfile RUN 裝步
- 埠已用:改露埠或止衝服
第四步:連 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 ps 示 r-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: true與tty: true - 網隔:默 Docker 網或阻 localhost 訪。用
network_mode: "host"或露特埠。 - 包版:固 mcptools 於特提交為可復
- 像大:mcptools 附依可大。產考多階建。
- Windows Docker 徑:於 Windows 附 WSL 行 Docker Desktop 時徑映異
參
create-r-dockerfile- R 之基 Dockerfile 式setup-docker-compose- compose 設詳configure-mcp-server- 無 Docker 之 MCP 伺設troubleshoot-mcp-connection- 察 MCP 連之問
GitHub репозиторий
Похожие навыки
content-collections
МетаЭтот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
polymarket
МетаЭтот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
creating-opencode-plugins
МетаЭтот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
sglang
МетаSGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
