Dockge MCP 服务器
⚠️ 警告:人工智能幻觉风险 - 请谨慎感知! ⚠️
人工智能代理可能会犯错。由于人工智能幻觉导致的错误指令或操作可能会带来意想不到的后果,包括数据丢失或服务中断。在生产环境中,务必实施强大的安全措施并验证人工智能生成的操作。
为什么选择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)
安装
- 克隆仓库:
git clone https://github.com/wonderchatai/dockge-mcp.git
cd dockge-mcp- 安装依赖项:
这个项目使用 uv 用于包管理。
uv sync配置
配置通过一个(界面/系统)进行管理 .env 文件。复制示例文件,并使用您的Dockge实例详细信息进行编辑。
- 创建
.env文件:
cp .env.example .env- 编辑
.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-serverFastMCP服务器将启动,通常在 http://0.0.0.0:8000现在,您可以向其工具端点发送请求。
Docker
你也可以使用 Docker Compose 来运行 Dockge MCP。
- 创建
.env文件:
cp .env.example .env编辑 .env 附上您的Dockge实例详细信息。
- 使用 Docker Compose 运行:
docker compose up -d这将拉动 dockge-mcp 拉取镜像并以分离模式启动容器。
MCP服务器URL
您的MCP服务器可通过以下URL访问:
http://:8000/mcp替换 `` 使用运行Dockge MCP服务器的实际IP地址或主机名。
API 参考(工具)
所有工具均通过FastMCP服务器提供 endpoint 每个工具中的参数对应于Dockge代理名称。空字符串("") 目标是主要的、本地的 Dockge 实例。
______________________________________________________________________
deploy_stacksave_stackdelete_stackstart_stackstop_stackrestart_stackupdate_stacklist_stacksget_stackget_stack_service_statusget_docker_network_listget_terminal_logsstart_remote_terminalsend_remote_command
它是如何工作的
连接与认证
这个(或“该”) DockgeClient 建立与Dockge服务器的持久Socket.IO连接。在首次调用API时,它使用提供的用户名和密码进行身份验证。服务器返回一个JWT,客户端会缓存该JWT。对于后续调用,使用缓存的JWT进行身份验证,无需再次完整登录,直到令牌过期。
异步操作与日志处理
许多Docker操作需要时间(例如,拉取镜像、构建容器)。Dockge通过Socket.IO流式传输终端输出来处理这一问题。
Dockge MCP 也表现出类似的行为:
- 当你调用一个像这样的异步工具时
deploy_stackMCP服务器告诉Dockge启动该进程。 - Dockge 为这个操作创建了一个独特的终端会话。
- MCP服务器立即返回
terminal_name对于那次会议。 - MCP客户端同时开始监听与该(事件/系统/等,根据上下文补充)相关的日志事件
terminal_name,将它们存储在内存缓冲区中(deque)。 - 然后,您的应用程序可以调用
get_terminal_logs(terminal_name=...)反复获取最新输出,监控进度或查看操作的最终结果。
这种设计避免了长时间运行的HTTP请求,即使在像HTTP这样的无状态协议下,也能提供响应迅速、实时的体验。
WonderChat(可译为“奇妙聊天”或根据具体语境调整,如“沃德聊天”等,但“WonderChat”本身作为专有名词,通常直接保留原名)
随时随地管理您的Dockge实例 WonderChat(可译为“奇妙聊天”或根据具体语境保留原名)。
