关于 Podman MCP Server
Podman MCP Server 是一个面向容器运行时的 MCP 服务,同时支持 Podman 和 Docker。它面向需要通过 AI 客户端管理容器、镜像、网络和卷的开发者与运维人员。服务可在 api 与 cli 两种后端之间自动检测或手动指定。
主要功能
- 01容器的查看、运行、停止、删除与日志查询
- 02镜像的构建、拉取、推送与删除
- 03网络与卷的列表查询
- 04自动检测或指定 api 与 cli 后端
- 05支持 STDIO 与 HTTP 传输模式
适用场景
- 01通过 AI 客户端列出并查看正在运行的容器
- 02根据 Containerfile 构建镜像并推送到镜像仓库
- 03在 Claude Desktop 或 VS Code 中管理本地容器
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露容器、镜像、网络和卷相关的工具,并可通过 STDIO 或 HTTP 提供服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Podman MCP 服务
✨ 功能 | 🚀 快速开始 | 📚 文档 | 🎥 演示 | ⚙️ 配置 | 🛠️ 工具 | 🧑💻 开发
✨ 功能
一个功能强大且灵活的 MCP 服务,支持 Podman 和 Docker 容器运行时。
🚀 快速开始
Claude Desktop
使用 npx
如果已安装 npm,这是在 Claude Desktop 上开始使用 podman-mcp-server 的最快方式。
打开 claude_desktop_config.json,并将 MCP 服务添加到 mcpServers 列表中:
{
"mcpServers": {
"podman": {
"command": "npx",
"args": [
"-y",
"podman-mcp-server@latest"
]
}
}
}
VS Code / VS Code Insiders
点击以下任一链接安装 Podman MCP 服务:
或者,运行以下命令手动安装扩展:
# For VS Code
code --add-mcp '{"name":"podman","command":"npx","args":["-y","podman-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"podman","command":"npx","args":["-y","podman-mcp-server@latest"]}'
Goose CLI
Goose CLI 是开始使用人工智能(AI)Agent 最简单(也最便宜)的方式。
使用 npm
如果已安装 npm,这是开始使用 podman-mcp-server 的最快方式。
打开 Goose 的 config.yaml,并将 MCP 服务添加到 mcpServers 列表中:
extensions:
podman:
command: npx
args:
- -y
- podman-mcp-server@latest
📚 文档
有关详细的设置指南、配置参考和功能规格,请参阅**文档**。
🎥 演示
⚙️ 配置
Podman MCP 服务可通过命令行(CLI)参数进行配置。
你可以使用 npx 运行 CLI 可执行文件,也可以下载最新版本的二进制文件。
# Run the Podman MCP server using npx (in case you have npm installed)
npx podman-mcp-server@latest --help
# Run the Podman MCP server using the latest release binary
./podman-mcp-server --help
配置选项
| 选项 | 描述 |
|---|---|
--port、-p | 以 HTTP 模式启动 MCP 服务,在 /mcp 提供 Streamable HTTP 端点,在 /sse 提供 SSE 端点。 |
--output-format、-o | 列表命令的输出格式:text(默认,以易读表格形式显示)或 json。 |
--podman-impl | 要使用的 Podman 实现。若未指定,则自动检测。 |
--sse-port | 已弃用。 请改用 --port。以仅 SSE 模式启动 MCP 服务。 |
--sse-base-url | 已弃用。 发送端点消息时使用的 SSE 公共基础 URL。 |
传输模式
该服务支持多种传输模式:
- STDIO 模式(默认)- 通过标准输入/输出通信
- HTTP 模式(
--port)- 现代 HTTP 传输,同时提供 Streamable HTTP 和 SSE 端点 - 仅 SSE 模式(
--sse-port)- 旧版 Server-Sent Events 传输(已弃用)
# Start HTTP server on port 8080 (Streamable HTTP at /mcp and SSE at /sse)
podman-mcp-server --port 8080
# Legacy SSE-only server on port 8080 (deprecated, use --port instead)
podman-mcp-server --sse-port 8080
Podman 实现
该服务支持多种 Podman 后端实现:
| 实现 | 描述 | 优先级 |
|---|---|---|
api | 通过 Unix 套接字使用 Podman REST API | 100(首选) |
cli | Podman/Docker 命令行包装器 | 50(备用) |
默认情况下,该服务会自动检测可用的最佳实现。
如果 Podman 套接字可用,则优先使用 api 实现;否则,将使用 cli 实现作为备用方案。
使用 --podman-impl 标志强制指定实现:
# Force CLI implementation
podman-mcp-server --podman-impl=cli
# Force API implementation (requires Podman socket)
podman-mcp-server --podman-impl=api
api 实现通过 Unix 套接字直接与 Podman REST API 通信,而 cli 实现则调用 podman 或 docker 二进制文件。
🛠️ 工具
容器
-
container_inspect - 显示具有指定容器 ID 或名称的 Docker 或 Podman 容器的底层信息和配置
name(string) (必填) - 要显示信息的 Docker 或 Podman 容器 ID 或名称
-
container_list - 输出正在运行的 Docker 或 Podman 容器的信息
-
container_logs - 显示具有指定容器 ID 或名称的 Docker 或 Podman 容器的日志
name(string) (必填) - 要显示日志的 Docker 或 Podman 容器 ID 或名称
-
container_remove - 移除具有指定容器 ID 或名称的 Docker 或 Podman 容器(rm)
name(string) (必填) - 要移除的 Docker 或 Podman 容器 ID 或名称
-
container_run - 使用指定的镜像名称运行 Docker 或 Podman 容器
environment(array) - 要在容器中设置的环境变量。格式:=。示例:FOO=bar。(可选,仅在设置环境变量时添加)imageName(string) (必填) - 要运行的 Docker 或 Podman 容器镜像名称ports(array) - 要在主机上公开的端口映射。格式::。示例:8080:80。(可选,仅在公开端口时添加)
-
container_stop - 停止具有指定容器 ID 或名称的正在运行的 Docker 或 Podman 容器
name(string) (必填) - 要停止的 Docker 或 Podman 容器 ID 或名称
镜像
-
image_build - 根据 Dockerfile、Podmanfile 或 Containerfile 构建 Docker 或 Podman 镜像
containerFile(string) (必填) - 用于构建镜像的 Dockerfile、Podmanfile 或 Containerfile 的绝对路径imageName(string) - 如果构建过程成功,则为生成的镜像指定名称(--tag、-t)
-
image_list - 列出本地计算机上的 Docker 或 Podman 镜像
-
image_pull - 从镜像仓库将 Docker 或 Podman 容器镜像复制(拉取)到本地计算机存储中
imageName(string) (必填) - 要拉取的 Docker 或 Podman 容器镜像名称
-
image_push - 将 Docker 或 Podman 容器镜像、清单列表或镜像索引从本地计算机存储推送到镜像仓库
imageName(string) (必填) - 要推送的 Docker 或 Podman 容器镜像名称
-
image_remove - 从本地计算机存储中移除 Docker 或 Podman 镜像
imageName(string) (必填) - 要移除的 Docker 或 Podman 容器镜像名称
网络
- network_list - 列出所有可用的 Docker 或 Podman 网络
卷
- volume_list - 列出所有可用的 Docker 或 Podman 卷
🧑💻 开发
使用 mcp-inspector 运行
编译项目,并使用 mcp-inspector 运行 Podman MCP 服务,以检查该 MCP 服务。
# Compile the project
make build
# Run the Podman MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/podman-mcp-server
mcp-name: io.github.manusa/podman-mcp-server
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。