Docker命令执行服务

MCP Server: Docker Command Runner 是一个提供安全接口的服务,用于在Docker容器内执行命令。它作为一个特权侧车(privileged sidecar),可以在指定的Docker Compose服务容器中执行任意命令。该服务具有实时捕获输出、安全容器配置、可配置超时等功能,适用于需要在Docker环境中自动化执行命令的场景。

  • by adamdude828
  • 更新于
在 GitHub 查看 adamdude828/mcp-server-docker

使用说明

基本能力

产品定位

MCP Server: Docker Command Runner 是一个用于在Docker容器内安全执行命令的服务。

核心功能

  • 基于STDIO的MCP传输,用于与Claude和其他MCP客户端集成
  • 在任何Docker Compose服务容器中执行命令
  • 实时捕获stdout/stderr输出
  • 安全的容器允许列表配置
  • 可配置长时间运行命令的超时
  • 针对常见Docker问题的清晰错误消息
  • 设计上依赖少且安全

适用场景

  • 在Docker环境中自动化执行命令
  • 与MCP客户端(如Claude)集成
  • 需要安全地在容器内执行命令的场景

工具列表

  • run_command: 执行指定Docker服务中的命令
    • 输入参数:
      • command: 要执行的命令(必需)
      • service: Docker服务名称(可选)
    • 返回格式:
      • 标准输出(如果有)
      • 标准错误(如果有,前缀为[stderr])
      • 退出代码

使用教程

使用依赖

  • 需要安装Node.js和npm
  • 需要安装Docker并确保Docker守护进程正在运行

安装教程

通过NPX(推荐)

直接运行MCP服务器而无需克隆:

npx mcp-server-docker

或全局安装:

npm install -g mcp-server-docker
mcp-server-docker

作为Docker服务

将以下内容添加到docker-compose.yml:

services:
  mcp-docker:
    build: ./mcp-server-docker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "3001:3000"  # 暴露MCP服务器
    environment:
      - COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}
      - DEFAULT_SERVICE=app
      - COMPOSE_FILE=docker-compose.yml
      - PORT=3000
    networks:
      - your-network

本地开发

cd mcp-server-docker
npm install
npm run build

调试方式

# 以开发模式运行
npm run dev

# 构建TypeScript
npm run build

# 运行测试
npm test

常见错误:

  1. "Cannot connect to Docker daemon": 确保Docker正在运行并且socket已挂载
  2. "Service not found": 检查服务名称是否存在于docker-compose.yml中
  3. "Command timed out": 命令超过5分钟超时,考虑将其分解为更小的操作