mcpField
D
Docker MCP Server

Docker MCP Server

本地服务
github.com/zaycruz云与基础设施57 周前更新

关于 Docker MCP Server

Docker MCP Server 通过隔离的 Docker 容器运行代码,面向需要让 LLM 执行命令或脚本的场景。它支持多种语言、依赖安装以及容器管理。

主要功能

  1. 01在 Docker 容器中隔离执行代码
  2. 02支持使用 Docker 镜像运行多种语言
  3. 03安装及追加软件包依赖
  4. 04执行命令和多行 Python 脚本
  5. 05列出、创建和清理容器

适用场景

  1. 01在隔离环境中运行代码片段
  2. 02为 Python 或 Node.js 脚本安装依赖
  3. 03检查并清理运行中的 Docker 容器

MCP 相关

该 MCP 服务向支持 MCP 的 LLM 暴露容器管理、依赖安装和代码执行工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Docker MCP 服务

一个功能强大的 Model Context Protocol(MCP)服务,可在隔离的 Docker 容器中执行代码,并将结果返回给 Claude 等大模型。

功能特性

  • 隔离的代码执行:在与主系统隔离的 Docker 容器中运行代码
  • 多语言支持:使用 Docker 镜像执行任意语言的代码
  • 复杂脚本支持:运行简单命令和完整的多行脚本
  • 包管理:使用 pip、npm、apt-get 或 apk 安装依赖项
  • 容器管理:轻松创建、列出和清理 Docker 容器
  • 健壮的错误处理:提供灵活的超时管理和回退机制
  • 彩色输出:提供清晰、带颜色的控制台反馈

要求

  • Python 3.9+
  • 已安装并运行 Docker
  • fastmcp 库

安装

  1. 克隆此仓库:

    git clone https://github.com/zaycruz/docker_mcp.git
    cd docker_mcp
    
  2. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装所需的软件包:

    pip install -r requirements.txt
    

用法

运行 MCP Inspector

测试并探索服务的功能:

python run_server.py

MCP Inspector 界面将在浏览器中打开,地址为 http://localhost:5173。

可用工具

Docker MCP 服务提供以下工具:

1. 列出容器

列出所有 Docker 容器及其详细信息:

  • 参数:
    • show_all: (可选)是否显示所有容器,包括已停止的容器(默认值:True)
2. 创建容器

创建并启动 Docker 容器,可选择安装依赖项:

  • 参数:
    • image:要使用的 Docker 镜像(例如,“python:3.9-slim”、“node:16”)
    • container_name:容器的唯一名称
    • dependencies: (可选)要安装的软件包列表,以空格分隔(例如,“numpy pandas”、“express lodash”)
3. 添加依赖项

在现有 Docker 容器中安装其他软件包:

  • 参数:
    • container_name:目标容器的名称
    • dependencies:要安装的软件包列表,以空格分隔
4. 执行代码

在运行中的 Docker 容器内执行命令:

  • 参数:
    • container_name:目标容器的名称
    • command:要在容器内执行的命令
5. 执行 Python 脚本

在运行中的 Docker 容器内执行多行 Python 脚本:

  • 参数:
    • container_name:目标容器的名称
    • script_content:完整的 Python 脚本内容
    • script_args:传递给脚本的可选参数
6. 清理容器

停止并移除 Docker 容器:

  • 参数:
    • container_name:要清理的容器名称
示例
基本工作流示例
# 1. List existing containers to see what's already running
list_containers()

# 2. Create a new container
create_container(
    image="python:3.9-slim", 
    container_name="python-example", 
    dependencies="numpy pandas"
)

# 3. Execute a command in the container
execute_code(
    container_name="python-example", 
    command="python -c 'import numpy as np; print(\"NumPy version:\", np.__version__)'"
)

# 4. Add more dependencies later
add_dependencies(
    container_name="python-example", 
    dependencies="matplotlib scikit-learn"
)

# 5. List containers again to confirm status
list_containers(show_all=False)  # Only show running containers

# 6. Clean up when done
cleanup_container(container_name="python-example")
Python 数据分析示例
# 1. Create a container with dependencies
create_container(
    image="python:3.9-slim", 
    container_name="python-test", 
    dependencies="numpy pandas matplotlib"
)

# 2. Execute a Python script
script = """
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Create some data
data = pd.DataFrame({
    'x': np.random.randn(100),
    'y': np.random.randn(100)
})

print(f"Data shape: {data.shape}")
print(f"Data correlation: {data.corr().iloc[0,1]:.4f}")
"""
execute_python_script(container_name="python-test", script_content=script)

# 3. Add additional dependencies later if needed
add_dependencies(container_name="python-test", dependencies="scikit-learn")

# 4. Verify container is running
list_containers(show_all=False)

# 5. Clean up when done
cleanup_container(container_name="python-test")
Node.js 示例
# 1. Check for existing Node.js containers
list_containers()

# 2. Create a Node.js container
create_container(
    image="node:16", 
    container_name="node-test", 
    dependencies="express axios"
)

# 3. Execute a Node.js script
execute_code(
    container_name="node-test", 
    command="node -e \"console.log('Node.js version: ' + process.version); console.log('Express installed: ' + require.resolve('express'));\""
)

# 4. Add more dependencies
add_dependencies(container_name="node-test", dependencies="lodash moment")

# 5. Clean up when done
cleanup_container(container_name="node-test")

包管理器支持

Docker MCP 服务会自动检测并使用合适的包管理器:

  • Python 容器:使用 pip
  • Node.js 容器:使用 npm
  • Debian/Ubuntu 容器:使用 apt-get
  • Alpine 容器:使用 apk

对于无法从镜像名称明显判断包管理器的容器,服务会尝试检测可用的包管理器。

与 Claude 和其他大模型集成

此 MCP 服务可以与支持 Model Context Protocol 的 Claude 和其他大模型集成。使用 fastmcp install 命令将其注册到 Claude:

fastmcp install src/docker_mcp.py

故障排除

  • 端口已被占用:如果出现“Address already in use”错误,请确保没有其他 MCP Inspector 实例正在运行。
  • Docker 连接问题:使用 docker --version 确认 Docker 正在运行。
  • 容器超时:对于未能在预期时间内响应的容器,服务包含回退机制。
  • 软件包安装失败:检查软件包名称是否适用于指定的包管理器。
  • 未找到容器:如果 list_containers 没有显示结果,Docker 可能尚未创建任何容器。

安全注意事项

此服务会在 Docker 容器中执行代码,从而与主机系统隔离。不过,请谨慎操作:

  • 未采取额外安全措施时,不要将此服务公开
  • 将主机卷挂载到容器中时,请务必小心
  • 请考虑为容器设置资源限制,以防止 DoS 攻击

许可证

MIT 许可证

贡献

欢迎贡献!请随时提交 Pull Request。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。