容器管理器-A2A|AG-UI|MCP
*版本:1.11.0*
概述
容器管理器提供了一个强大的通用接口来管理Docker和Podman容器、网络、卷、, 以及Docker Swarm服务,实现程序化和远程容器管理。
此软件包包含MCP服务器+A2A服务器开箱即用!
此存储库正在积极维护中-欢迎投稿!
特性
- 管理Docker和Podman容器、映像、卷和网络
- 支持Docker Swarm操作
- 支持Docker Compose和Podman Compose操作
- 用于远程API访问的FastMCP服务器
- 全面的日志记录和错误处理
- 用于额外容器运行时的可扩展架构
- 用于委托集装箱管理的多代理A2A系统
主控程序
MCP工具
get_version:检索容器运行时的版本信息get_info:获取有关容器运行时的系统信息list_images:列出所有可用图像pull_image:从注册表中提取图像remove_image:删除图像list_containers:列出正在运行或所有的容器run_container:运行一个新容器stop_container:停止正在运行的容器remove_container:移除容器get_container_logs:从容器中检索日志exec_in_container:在容器中执行命令list_volumes:列出所有卷create_volume:创建新卷remove_volume:删除卷list_networks:列出所有网络create_network:创建新网络remove_network:删除网络compose_up:启动Compose文件中定义的服务compose_down:停止并删除Compose文件中定义的服务compose_ps:列出Compose项目的容器compose_logs:查看Compose项目或特定服务的日志init_swarm:初始化Docker Swarmleave_swarm:离开Docker Swarmlist_nodes:列出Docker Swarm中的节点list_services:列出Docker Swarm中的服务create_service:在Docker Swarm中创建新服务remove_service:从Docker Swarm中删除服务
MCP-CLI
| 短旗 | 长旗 | 描述 |
|---|---|---|
| -h | --help | 显示帮助信息 |
| -t | --transport | 传输方法:“stdio”、“http”或“sse”\[遗留\](默认值:stdio) |
| -s | --host | HTTP传输的主机地址(默认值:0.0.0.0) |
| -p | --port | HTTP传输的端口号(默认值:8000) |
| --auth-type | 身份验证类型:“none”、“static”、“jwt”、“oauth代理”、“oidc代理”和“remote oauth”(默认值:none) | |
| --令牌jwks-uri | 用于JWT验证的jwks uri | |
| --代币发行人 | JWT验证发行人 | |
| --令牌受众 | JWT验证的受众 | |
| --oauth上游授权端点 | oauth代理的上游授权端点 | |
| --oauth上游令牌端点 | oauth代理的上游令牌端点 | |
| --oauth上游客户端id | oauth代理的上游客户端id | |
| --oauth上游客户端机密 | oauth代理的上游客户端机密 | |
| --oauth基本url | oauth代理的基本url | |
| --oidc配置url | oidc配置url | |
| --oidc客户端id | oidc客户端id | |
| -oidc客户端机密 | oidc客户端机密 | |
| --oidc基本url | oidc代理的基本url | |
| --远程身份验证服务器 | 远程OAuth的逗号分隔的授权服务器列表 | |
| --远程基本url | 远程OAuth的基本url | |
| --允许的客户端重定向URI | 逗号分隔的允许客户端重定向URI列表 | |
| --eunomia type | eunomia授权类型:“无”、“嵌入式”、“远程”(默认值:无) | |
| --eunomia策略文件 | 嵌入式eunomia的策略文件(默认:mcp_policies.json) | |
| --eunomia远程url | 远程eunomia服务器的url |
A2A代理
A2A-CLI
端点
- Web 用户界面:
http://localhost:8000/(如果启用) - A2A:
http://localhost:8000/a2a(发现:/a2a/.well-known/agent.json) - AG-UI:
http://localhost:8000/ag-ui(职位)
| 长旗 | 描述 | |
|---|---|---|
| --host | 绑定服务器的主机(默认值:0.0.0.0) | |
| --port | 绑定服务器的端口(默认值:9000) | |
| --provider | LLM提供者:openai、anthropic、google、hugginface(默认:openai) | |
| --型号id | LLM型号id(默认:nvidia/nemotron-3-super) | |
| --基本url | LLM基本url(适用于OpenAI兼容的提供者) | |
| --api-key | LLM api密钥 | |
| --mcp url | mcp服务器url(默认值:http://localhost:8000/mcp) | |
| --web | 启用Pydantic AI web UI | False(环境:Enable_web_UI) |
图形架构
此代理使用 pydantic-graph 智能路由和最佳上下文管理的编排。
---
title: Container Manager MCP Graph Agent
---
stateDiagram-v2
[*] --> RouterNode: User Query
RouterNode --> DomainNode: Classified Domain
RouterNode --> [*]: Low confidence / Error
DomainNode --> [*]: Domain Result- 路由器节点:快速、轻便的LLM(例如。,
nvidia/nemotron-3-super)它将用户的查询分类到一个专门的域中。 - 域节点:执行器节点。对于所选域,它动态设置环境变量,以暂时仅启用与该域相关的工具,从而创建高度集中的子代理(例如。,
gpt-4o)以完成请求。这保留了LLM上下文并防止了工具幻觉。
用法
用作MCP服务器
MCP服务器可以在两种模式下运行: stdio (用于本地测试)或 http (用于网络访问)。要启动服务器,请使用以下命令:
在stdio模式下运行(默认):
container-manager-mcp在HTTP模式下运行:
container-manager-mcp --transport "http" --host "0.0.0.0" --port "8000"将MCP服务器部署为服务
ServiceNow MCP服务器可以使用Docker部署,具有可配置的身份验证、中间件和Eunomia授权。
使用Docker运行
docker pull knucklessg1/container-manager:latest
docker run -d \
--name container-manager-mcp \
-p 8004:8004 \
-e HOST=0.0.0.0 \
-e PORT=8004 \
-e TRANSPORT=streamable-http \
-e AUTH_TYPE=none \
-e EUNOMIA_TYPE=none \
knucklessg1/container-manager:latest运行A2A代理(Docker):
docker run -d \
--name container-manager-agent \
-p 9000:9000 \
-e PORT=9000 \
-e PROVIDER=openai \
-e MODEL_ID=nvidia/nemotron-3-super \
-e BASE_URL=http://host.docker.internal:11434/v1 \
-e MCP_URL=http://host.docker.internal:8004/mcp \
knucklessg1/container-manager:latest \
container-manager-agent对于高级身份验证(例如JWT、OAuth代理、OIDC代理、远程OAuth)或Eunomia,添加相关的环境变量:
docker run -d \
--name container-manager-mcp \
-p 8004:8004 \
-e HOST=0.0.0.0 \
-e PORT=8004 \
-e TRANSPORT=streamable-http \
-e AUTH_TYPE=oidc-proxy \
-e OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration \
-e OIDC_CLIENT_ID=your-client-id \
-e OIDC_CLIENT_SECRET=your-client-secret \
-e OIDC_BASE_URL=https://your-server.com \
-e ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/* \
-e EUNOMIA_TYPE=embedded \
-e EUNOMIA_POLICY_FILE=/app/mcp_policies.json \
knucklessg1/container-manager:latest使用Docker Compose
创建一个 docker-compose.yml 文件:
services:
container-manager-mcp:
image: knucklessg1/container-manager:latest
environment:
- HOST=0.0.0.0
- PORT=8004
- TRANSPORT=streamable-http
- AUTH_TYPE=none
- EUNOMIA_TYPE=none
ports:
- 8004:8004对于具有身份验证和Eunomia的高级设置:
services:
container-manager-mcp:
image: knucklessg1/container-manager:latest
environment:
- HOST=0.0.0.0
- PORT=8004
- TRANSPORT=streamable-http
- AUTH_TYPE=oidc-proxy
- OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration
- OIDC_CLIENT_ID=your-client-id
- OIDC_CLIENT_SECRET=your-client-secret
- OIDC_BASE_URL=https://your-server.com
- ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/*
- EUNOMIA_TYPE=embedded
- EUNOMIA_POLICY_FILE=/app/mcp_policies.json
ports:
- 8004:8004
volumes:
- ./mcp_policies.json:/app/mcp_policies.json运行服务:
docker-compose up -d配置 mcp.json AI集成
{
"mcpServers": {
"container_manager": {
"command": "uv",
"args": [
"run",
"--with",
"container-manager-mcp",
"container-manager-mcp"
],
"env": {
"CONTAINER_MANAGER_SILENT": "False", //Optional
"CONTAINER_MANAGER_LOG_FILE": "~/Documents/container_manager_mcp.log" //Optional
"CONTAINER_MANAGER_TYPE": "podman", //Optional
"CONTAINER_MANAGER_PODMAN_BASE_URL": "tcp://127.0.0.1:8080" //Optional
},
"timeout": 200000
}
}
}安装Python包
python -m pip install container-manager-mcp或
uv pip install --upgrade container-manager-mcp测试
container-manager-mcp --transport streamable-http --host 127.0.0.1 --port 8080这将使用本地主机端口8080上的HTTP传输启动MCP服务器。
要以编程方式与MCP服务器交互,您可以使用FastMCP客户端或向公开的端点发出HTTP请求。使用curl拉取图像的示例:
curl -X POST http://127.0.0.1:8080/pull_image \
-H "Content-Type: application/json" \
-d '{"image": "nginx", "tag": "latest", "manager_type": "docker"}'安装Python包:
python -m pip install container-manager-mcp依赖项
- Python 3.7+
fastmcp用于MCP服务器功能dockerDocker支持podman为Podman提供支持pydantic用于数据验证
安装依赖项:
python -m pip install fastmcp docker podman pydantic确保Docker或Podman已安装并在您的系统上运行。
发展与贡献
欢迎投稿!贡献:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/your-feature) - 提交您的更改(
git commit -am 'Add your feature') - 推到分支(
git push origin feature/your-feature) - 创建新的Pull请求
请确保您的代码遵循项目的编码标准,并包含适当的测试。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
存储库所有者
MCP配置示例
1.标准IO(stdio)部署
{
"mcpServers": {
"container-manager-mcp": {
"command": "uv",
"args": [
"run",
"container-manager-mcp"
],
"env": {
"AGENT_DESCRIPTION": "",
"AGENT_SYSTEM_PROMPT": "",
"COMPOSETOOL": "True",
"CONTAINERTOOL": "True",
"CONTAINER_MANAGER_LOG_FILE": "",
"CONTAINER_MANAGER_PODMAN_BASE_URL": "",
"CONTAINER_MANAGER_SILENT": "",
"CONTAINER_MANAGER_TYPE": "",
"DEFAULT_AGENT_NAME": "",
"IMAGETOOL": "True",
"INFOTOOL": "True",
"LLM_API_KEY": "",
"LLM_BASE_URL": "",
"LOGTOOL": "True",
"MCP_URL": "",
"MISCTOOL": "True",
"MODEL_ID": "",
"NETWORKTOOL": "True",
"SPECIALIST_TOOL": "True",
"SWARMTOOL": "True",
"SYSTEMTOOL": "True",
"VOLUMETOOL": "True"
}
}
}
}2.流式HTTP(SSE)部署
{
"mcpServers": {
"container-manager-mcp": {
"command": "uv",
"args": [
"run",
"container-manager-mcp",
"--transport",
"http",
"--host",
"0.0.0.0",
"--port",
"8000"
],
"env": {
"AGENT_DESCRIPTION": "",
"AGENT_SYSTEM_PROMPT": "",
"COMPOSETOOL": "True",
"CONTAINERTOOL": "True",
"CONTAINER_MANAGER_LOG_FILE": "",
"CONTAINER_MANAGER_PODMAN_BASE_URL": "",
"CONTAINER_MANAGER_SILENT": "",
"CONTAINER_MANAGER_TYPE": "",
"DEFAULT_AGENT_NAME": "",
"IMAGETOOL": "True",
"INFOTOOL": "True",
"LLM_API_KEY": "",
"LLM_BASE_URL": "",
"LOGTOOL": "True",
"MCP_URL": "",
"MISCTOOL": "True",
"MODEL_ID": "",
"NETWORKTOOL": "True",
"SPECIALIST_TOOL": "True",
"SWARMTOOL": "True",
"SYSTEMTOOL": "True",
"VOLUMETOOL": "True"
}
}
}
}