Docker Compose管理服务器

Dockge MCP Server是一个轻量级、功能强大的服务器,通过FastMCP框架提供基于工具的API,用于远程管理Dockge实例,支持AI驱动的Docker Compose堆栈管理、全生命周期控制和实时操作洞察。

  • by wonderchatai
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 wonderchatai/dockge-mcp

使用说明

Dockge MCP 服务器

Dockge MCP是一款轻量级、功能强大的服务器,它提供了一种基于工具的API,用于远程管理(某事物) Dockge(注:这是一个品牌或产品名,直接翻译可能无法准确传达其含义,因此保持原样) 例子 它充当桥梁,通过(某种方式)将Dockge的基于Socket.IO的实时API作为一组简单、可调用的工具进行暴露 FastMCP 框架。这使得AI代理,如 WonderChat(可译为“奇妙聊天”或根据具体语境调整,但“WonderChat”本身作为专有名词,通常不直接翻译,保持原样使用),以直接 调用工具 实现智能编排、自主操作,并通过手机在沙发上轻松“氛围管理”您的Docker Compose部署。

⚠️ 警告:人工智能幻觉风险 - 请谨慎感知! ⚠️

人工智能代理可能会犯错。由于人工智能幻觉导致的错误指令或操作可能会带来意想不到的后果,包括数据丢失或服务中断。在生产环境中,务必实施强大的安全措施并验证人工智能生成的操作。

为什么选择Dockge?

  • 堆栈比单个容器更有趣。
  • 已执行shell。
  • 多集群管理,轻松实现远程集成。

特性/特点

  • 基于AI的Docker Compose管理赋能AI代理,以“氛围管理”您的Docker Compose堆栈。
  • 全栈生命周期控制部署、启动、停止、重启、更新和删除堆栈。
  • 实时运营洞察获取日志并监控服务状态。
  • 交互式调试打开并与远程Docker容器终端进行交互。
  • 多智能体支持管理多个Dockge代理/终端上的堆栈。

演示

在执行shell中运行命令的大型语言模型(LLM):

https://github.com/user-attachments/assets/4482c7e3-cc97-4d2b-9d26-e7126b134435(该链接的中文表述可保持原样,因为网址本身是通用的,无需翻译,但若要说明其含义,可以是:“GitHub用户附件服务中的资产链接,具体标识为4482c7e3-cc97-4d2b-9d26-e7126b134435”。)

部署一个WordPress堆栈:

https://github.com/user-attachments/assets/dde4c5b4-d343-42bd-9852-7cfe286ece88(该网址为GitHub上用户附件资源的链接,直接翻译网址内容无实际意义,故保留原样)

入门指南

先决条件

  • Python 3.10+
  • 访问正在运行的 Dockge 实例(v1.x)

安装

  1. 克隆仓库:

    git clone https://github.com/wonderchatai/dockge-mcp.git
    cd dockge-mcp
    
  2. 安装依赖项: 这个项目使用 uv 用于包管理。

    uv sync
    

配置

配置通过一个(界面/系统)进行管理 .env 文件。复制示例文件,并使用您的Dockge实例详细信息进行编辑。

  1. 创建 .env 文件:

    cp .env.example .env
    
  2. 编辑 .env:

    # URL for the Dockge Socket.IO server
    DOCKGE_URL="http://localhost:5001"
    
    # Credentials for Dockge
    DOCKGE_USERNAME="admin"
    DOCKGE_PASSWORD="your-dockge-password"
    

运行服务器

配置完成后,您可以启动MCP服务器:

uv run dockge-server

FastMCP服务器将启动,通常在 http://0.0.0.0:8000现在,您可以向其工具端点发送请求。

Docker

你也可以使用 Docker Compose 来运行 Dockge MCP。

  1. 创建 .env 文件:

    cp .env.example .env
    

    编辑 .env 附上您的Dockge实例详细信息。

  2. 使用 Docker Compose 运行:

    docker compose up -d
    

    这将拉动 dockge-mcp 拉取镜像并以分离模式启动容器。

MCP服务器URL

您的MCP服务器可通过以下URL访问:

http://<your-server-ip>:8000/mcp

替换 <your-server-ip> 使用运行Dockge MCP服务器的实际IP地址或主机名。

API 参考(工具)

所有工具均通过FastMCP服务器提供 endpoint 每个工具中的参数对应于Dockge代理名称。空字符串("") 目标是主要的、本地的 Dockge 实例。


  • deploy_stack
  • save_stack
  • delete_stack
  • start_stack
  • stop_stack
  • restart_stack
  • update_stack
  • list_stacks
  • get_stack
  • get_stack_service_status
  • get_docker_network_list
  • get_terminal_logs
  • start_remote_terminal
  • send_remote_command

它是如何工作的

连接与认证

这个(或“该”) DockgeClient 建立与Dockge服务器的持久Socket.IO连接。在首次调用API时,它使用提供的用户名和密码进行身份验证。服务器返回一个JWT,客户端会缓存该JWT。对于后续调用,使用缓存的JWT进行身份验证,无需再次完整登录,直到令牌过期。

异步操作与日志处理

许多Docker操作需要时间(例如,拉取镜像、构建容器)。Dockge通过Socket.IO流式传输终端输出来处理这一问题。

Dockge MCP 也表现出类似的行为:

  1. 当你调用一个像这样的异步工具时 deploy_stackMCP服务器告诉Dockge启动该进程。
  2. Dockge 为这个操作创建了一个独特的终端会话。
  3. MCP服务器立即返回 terminal_name 对于那次会议。
  4. MCP客户端同时开始监听与该(事件/系统/等,根据上下文补充)相关的日志事件 terminal_name,将它们存储在内存缓冲区中(deque)。
  5. 然后,您的应用程序可以调用 get_terminal_logs(terminal_name=...) 反复获取最新输出,监控进度或查看操作的最终结果。

这种设计避免了长时间运行的HTTP请求,即使在像HTTP这样的无状态协议下,也能提供响应迅速、实时的体验。

WonderChat(可译为“奇妙聊天”或根据具体语境调整,如“沃德聊天”等,但“WonderChat”本身作为专有名词,通常直接保留原名)

随时随地管理您的Dockge实例 WonderChat(可译为“奇妙聊天”或根据具体语境保留原名)。