portainer mcp docker
Docker化版本 Portainer MCP服务器 便于部署。
该项目提供了最小的基于Alpine的Docker镜像,可以使用Docker Compose与Portainer一起部署,而不是手动下载和管理二进制文件。
特性
- 最小Alpine Linux镜像与官方
portainer-mcp二进制 - 两种变体: stdio(本地)和HTTP(远程/web)
- 支持多种架构(linux/amd64、linux/arm64)
- 当新的上游版本发布时,通过GitHub Actions自动更新
- 通过带有自动合并功能的Dependabot进行基础图像更新(安全补丁、Alpine更新)
- 与上游版本匹配的版本标签(例如。,
v0.7.0-1)
图像变体
| 图像标签 | 运输 | 用例 |
|---|---|---|
latest / v0.7.0-1 | stdio | 本地MCP客户端(克劳德桌面、克劳德代码CLI) |
http / v0.7.0-1-http | 流式HTTP | 远程访问(Claude Web,共享服务器) |
stdio(默认)
标准图像。MCP客户端启动容器并通过stdin/stdout进行通信。最适合MCP客户端在同一台机器上运行的本地设置。
超文本传输协议
将MCP服务器包装为 mcp代理 通过Streamable HTTP公开它。支持承载令牌身份验证,因此端点不可公开访问。最适合远程访问,例如,从Claude Web连接到服务器上的Portainer实例。
安装
先决条件
- 跑步 波特纳 例子
- Portainerneneneba API访问令牌(从下的PortainerUI生成 *我的帐户>访问令牌*)
- Docker和Docker Compose
______________________________________________________________________
stdio变体(本地)
快速开始
docker pull ghcr.io/serraniel/portainer-mcp-docker:latest
docker run -i --rm ghcr.io/serraniel/portainer-mcp-docker:latest \
-server your-portainer:9443 \
-token your-api-token网络:同一主机上的Portainer
当Portainer与MCP容器在同一台机器上运行时, localhost 容器内部是指容器本身,而不是主机。使用 host.docker.internal 相反:
docker run -i --rm \
--add-host=host.docker.internal:host-gateway \
ghcr.io/serraniel/portainer-mcp-docker:latest \
-server host.docker.internal:9443 \
-token your-api-tokenMCP客户端配置
克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"portainer": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--add-host=host.docker.internal:host-gateway",
"ghcr.io/serraniel/portainer-mcp-docker:latest",
"-server", "host.docker.internal:9443",
"-token", "your-api-token"
]
}
}
}替换host.docker.internal:9443与您的Portainer的实际hostname:port如果它在另一台机器上运行。
克劳德代码
添加到您的Claude Code MCP设置中:
{
"mcpServers": {
"portainer": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--add-host=host.docker.internal:host-gateway",
"ghcr.io/serraniel/portainer-mcp-docker:latest",
"-server", "host.docker.internal:9443",
"-token", "your-api-token"
]
}
}
}______________________________________________________________________
HTTP变体(远程)
生成令牌
HTTP变体需要两个令牌:
- Portainer API令牌 (
PORTAINER_TOKEN)--根据您的Portainer实例对MCP服务器进行身份验证。在Portainer UI中生成一个 *我的帐户>访问令牌>添加访问令牌*.
- MCP承载令牌 (
API_ACCESS_TOKEN)--保护HTTP端点,因此只有授权的MCP客户端才能连接。这是你自己创造的秘密。生成安全的随机令牌:
openssl rand -hex 32使用输出作为您的 MCP_API_TOKEN 在 .env 在MCP客户端的文件中配置相同的值 Authorization: Bearer 头球
快速开始
docker pull ghcr.io/serraniel/portainer-mcp-docker:http
docker run -d --rm \
-p 8080:8080 \
-e PORTAINER_SERVER=your-portainer:9443 \
-e PORTAINER_TOKEN=your-portainer-api-token \
-e API_ACCESS_TOKEN=your-mcp-bearer-token \
ghcr.io/serraniel/portainer-mcp-docker:httpDocker Compose
services:
portainer:
image: portainer/portainer-ce:latest
restart: always
ports:
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
portainer-mcp:
image: ghcr.io/serraniel/portainer-mcp-docker:http
restart: always
ports:
- "8080:8080"
environment:
- PORTAINER_SERVER=portainer:9443
- PORTAINER_TOKEN=${PORTAINER_TOKEN}
- API_ACCESS_TOKEN=${MCP_API_TOKEN}
# Optional:
# - PORTAINER_READ_ONLY=true
# - PORTAINER_DISABLE_VERSION_CHECK=true
# - MCP_PORT=8080
# - MCP_HOST=0.0.0.0
volumes:
portainer_data:创建一个 .env 文件:
PORTAINER_TOKEN=your-portainer-api-token
MCP_API_TOKEN=your-mcp-bearer-tokenMCP客户端配置(远程)
克劳德网络/克劳德桌面(远程URL)
配置您的MCP客户端以连接到HTTP端点:
- 网址:
http://your-server:8080/sse - 授权: 持票人代币(
MCP_API_TOKEN您已配置)
克劳德代码(远程)
{
"mcpServers": {
"portainer": {
"type": "url",
"url": "http://your-server:8080/sse",
"headers": {
"Authorization": "Bearer your-mcp-bearer-token"
}
}
}
}环境变量(HTTP)
| 变量 | 必填 | 描述 |
|---|---|---|
PORTAINER_SERVER | 是 | 门户服务器地址为 host:port (无协议前缀,自动使用HTTPS) |
PORTAINER_TOKEN | 是 | Portainer API访问令牌 |
API_ACCESS_TOKEN | 推荐 | MCP端点身份验证的承载令牌 |
PORTAINER_READ_ONLY | 否 | 设置为 true 用于只读模式 |
PORTAINER_DISABLE_VERSION_CHECK | 否 | 设置为 true 跳过版本验证 |
MCP_PORT | 否 | HTTP侦听端口(默认值: 8080) |
MCP_HOST | 否 | HTTP侦听地址(默认值: 0.0.0.0) |
______________________________________________________________________
命令行选项(stdio)
支持上游二进制文件中的所有标志:
| 标志 | 描述 |
|---|---|
-server | Portainer服务器地址,无协议前缀(必需的) |
-token | Portainer API访问令牌(必需的) |
| `-tools | |
| ` | 自定义工具YAML文件的路径 |
-read-only | 仅限于只读操作(仅GET请求) |
-disable-version-check | 跳过Portainer服务器版本验证 |
版本控制
图像标签遵循以下格式 v-:
v0.7.0-1-首次构建上游v0.7.0(stdio)v0.7.0-1-http-相同版本,HTTP变体v0.7.0-2-重建(例如,基础映像安全更新)latest-最新的stdio版本http-最新HTTP版本
自动更新的工作原理
| 触发器 | 发生了什么 |
|---|---|
| 新的上游发布 | 每日检查创建新的标签(例如。, v0.8.0-1)并构建两个图像 |
| Dependabot PR合并 | 构建测试后自动合并,增加构建数量并重建 |
| 手动调度 | 可以使用特定的上游版本手动触发工作流 |
上游文件
有关Portainer MCP服务器功能、工具和Portainer版本兼容性的完整文档,请参阅 上游README.
许可证
该项目根据 欧盟公共许可v1.2 (EUPL-1.2)。
