Docker管理工具

一个基于Rust的高性能Docker管理工具,允许AI代理与Docker基础设施进行交互。

  • by FabienGaut
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 FabienGaut/mcp-docker-sentinel

使用说明

mcp-docker-sentinel

An MCP server in Rust — let your AI talk to Docker.


这个项目源于双重目标:掌握模型上下文协议(MCP),同时深化我在Rust方面的专业知识。通过在LLM和Docker基础设施之间构建高性能的桥梁,我正在探索低级系统编程如何为AI代理提供安全、异步和细粒度的控制。

工具

工具 描述 参数
list_containers 列出所有容器(名称、图像、状态) --
get_logs 获取容器的最后N行日志 container_id, tail (默认值:50)
inspect_container 完整的技术细节(网络、卷、环境) container_id
stop_container 停止正在运行的容器 container_id
start_container 启动已停止的容器 container_id
restart_container 重新启动正在运行或已停止的容器 container_id
remove_container 删除容器 container_id, force (默认值:false)
list_images 列出所有本地Docker镜像(id、标签、大小) --
get_stats 容器的实时CPU/内存/网络使用情况 container_id
exec_command 在容器内运行命令(docker exec) container_id, command (数组)
remove_image 删除本地映像 image_id, force (默认值:false)
pull_image 从注册表中提取图像 image
list_networks 列出Docker网络及其连接的容器 --
list_volumes 列出Docker卷 --

需求

  • 锈 (2024年版)
  • Docker守护进程在本地运行

构建

git clone https://github.com/FabienGaut/mcp-docker-sentinel.git
cd mcp-docker-sentinel
cargo build --release

二进制文件将位于 ./target/release/mcp-docker-sentinel.

对于开发(未优化,编译速度更快):

cargo run

设置

克劳德代码

选项1-CLI(推荐)

claude mcp add docker-sentinel -- ./target/release/mcp-docker-sentinel

选项2——手动配置

添加 ~/.claude/settings.json (全球)或 .claude/settings.json (每个项目):

{
  "mcpServers": {
    "docker-sentinel": {
      "command": "./target/release/mcp-docker-sentinel"
    }
  }
}

克劳德桌面版

添加到您的配置文件中:

  • Linux — ~/.config/Claude/claude_desktop_config.json
  • macOS — ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗 — %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "docker-sentinel": {
      "command": "./target/release/mcp-docker-sentinel"
    }
  }
}

保存后重新启动Claude Desktop。

光标

添加 .cursor/mcp.json 在项目根目录中(或 ~/.cursor/mcp.json 全球):

{
  "mcpServers": {
    "docker-sentinel": {
      "command": "/absolute/path/to/mcp-docker-sentinel"
    }
  }
}

帆板运动

添加 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "docker-sentinel": {
      "command": "/absolute/path/to/mcp-docker-sentinel"
    }
  }
}

备注:对于上述所有配置,将命令路径替换为构建二进制文件的绝对路径(例如。 /home/user/mcp-docker-sentinel/target/release/mcp-docker-sentinel).

项目结构

src/
├── main.rs           # MCP server + ServerHandler impl
├── docker/
│   └── client.rs     # Docker API wrapper (bollard)
└── mcp/
    ├── handlers.rs   # Tool dispatch
    └── tools.rs      # Tool definitions & schemas

配置

  • 通过TCP支持远程Docker守护进程(DOCKER_HOST)
  • 远程守护进程的TLS身份验证
  • Allowlist/denylist用于限制AI可以触摸哪些容器
  • 实时日志流,而不仅仅是尾部

许可证

麻省理工学院