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可以触摸哪些容器
- 实时日志流,而不仅仅是尾部
