项目简介

Container Manager MCP服务器是一个强大的后端服务,旨在通过标准化的Model Context Protocol (MCP) 接口,让LLM客户端能够管理Docker和Podman容器、镜像、网络、存储卷,并支持Docker Swarm集群服务和Docker/Podman Compose应用编排。它为LLM应用提供了安全、可扩展的容器上下文服务框架。

主要功能点

  • 镜像管理: 列出、拉取、删除Docker/Podman镜像。
  • 容器管理: 列出、运行、停止、删除容器,获取容器日志,在容器内执行命令。
  • 存储卷管理: 列出、创建、删除容器卷。
  • 网络管理: 列出、创建、删除容器网络。
  • Docker Swarm集群管理 (仅限Docker): 初始化/退出Swarm集群,列出节点和服务,创建/删除服务。
  • Compose应用编排: 启动、停止、列出、查看Compose项目日志。
  • 灵活的部署: 支持作为Python包运行或通过Docker容器部署。
  • 日志与错误处理: 提供全面的操作日志和错误信息。

安装步骤

  1. 确保Python环境: 请确保您的系统已安装Python 3.7或更高版本。
  2. 安装Docker或Podman: 根据您的需求,安装并运行Docker或Podman容器运行时。
  3. 安装Python依赖: 打开终端或命令提示符,执行以下命令安装MCP服务器及其所有依赖:
    python -m pip install container-manager-mcp fastmcp docker podman pydantic
    (注意:'docker' 和 'podman' 库是可选的,根据您使用的容器运行时选择安装)

服务器配置 (供MCP客户端连接)

MCP客户端需要以下JSON格式的配置信息来连接并使用'container-manager-mcp'服务器。

{
  "mcpServers": {
    "container_manager": {
      "command": "uv", // 或 "python"
      "args": [
        "run",
        "--with",
        "container-manager-mcp",
        "container-manager-mcp",
        "--transport", "http",
        "--host", "0.0.0.0",
        "--port", "8000"
      ],
      "env": {
        "SILENT": "False",                                  // 可选:设置为True可抑制服务器大部分输出
        "LOG_FILE": "~/Documents/container_manager_mcp.log", // 可选:指定日志文件路径
        "CONTAINER_MANAGER_TYPE": "docker"                  // 可选:强制指定容器管理器类型 (docker 或 podman),默认自动检测
      },
      "timeout": 200000 // MCP服务器启动超时时间(毫秒)
    }
  }
}
  • 'container_manager': 您为该MCP服务器实例指定的名称。
  • 'command': 启动MCP服务器的主命令,例如 'uv' (推荐) 或 'python'。
  • 'args': 启动命令的参数列表。
    • '--transport http': 指定使用HTTP传输协议。您也可以使用 'stdio' 进行标准输入输出传输。
    • '--host 0.0.0.0': HTTP服务器监听的主机地址。
    • '--port 8000': HTTP服务器监听的端口。
  • 'env': 可选的环境变量,用于配置服务器行为,例如日志文件路径或强制指定容器管理器类型。
  • 'timeout': 客户端等待MCP服务器启动的最长时间(毫秒)。

基本使用方法

1. 启动MCP服务器: 在终端中运行MCP服务器。例如,使用HTTP传输并监听8080端口:

container-manager-mcp --transport http --host 127.0.0.1 --port 8080

2. 使用MCP客户端调用工具: 一旦服务器运行,您的LLM或其他MCP客户端可以通过JSON-RPC协议调用其暴露的工具。 例如,使用'curl'模拟客户端调用'pull_image'工具拉取Nginx镜像:

curl -X POST http://127.0.0.1:8080/pull_image \
  -H "Content-Type: application/json" \
  -d '{"image": "nginx", "tag": "latest", "manager_type": "docker"}'

客户端收到响应后即可处理容器拉取结果。其他功能(如'list_containers'、'run_container')也通过类似方式调用。

信息

分类

开发者工具