Portainer MCP容器管理平台

@portainer/portainer-mcp
0 Stars 38 次浏览 portainer 更新于 2026-08-23

Portainer MCP

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Portainer MCP

Go Report Card
coverage

是否曾经希望可以简单地询问Portainer正在发生什么?

现在你可以了!Portainer MCP将您的AI助手直接连接到您的Portainer环境中。管理Portainer资源,如用户和环境,或者通过AI直接执行任何Docker或Kubernetes命令来深入探索。

portainer-mcp-demo

概述

Portainer MCP是针对Portainer环境的模型上下文协议 (MCP) 的一个正在进行中的实现。该项目旨在提供一种标准化的方式,以将Portainer的容器管理能力与AI模型和其他服务连接起来。

MCP(模型上下文协议)是一个开放协议,它标准化了应用程序如何向大型语言模型(LLMs)提供上下文。类似于USB-C为设备连接外围设备提供了标准化方式一样,MCP为AI模型连接不同的数据源和工具提供了一种标准化方式。

该实现着重于通过MCP协议公开Portainer环境数据,允许AI助手及其他工具以安全且标准化的方式与您的容器化基础设施交互。

有关兼容性和可用功能的更多详细信息,请参阅Portainer版本支持支持的功能 部分。

注意:此项目目前正在开发中。

当前设计用于配合Portainer管理员API令牌工作。

安装

您可以从最新发布页面下载适用于Linux (amd64) 和 macOS (arm64) 的预构建二进制文件。在“Assets”部分找到适合您操作系统和架构的存档。

下载存档:
通常可以直接从发布页面下载。或者,您可以使用curl。这里以macOS (ARM64) 版本 v0.2.0 为例:

# Example for macOS (ARM64) - adjust version and architecture as needed
curl -Lo portainer-mcp-v0.2.0-darwin-arm64.tar.gz https://github.com/portainer/portainer-mcp/releases/download/v0.2.0/portainer-mcp-v0.2.0-darwin-arm64.tar.gz

(Linux AMD64 二进制文件也可以在发布页面上找到。)

(可选但推荐)验证校验和:
首先,从发布页面下载相应的.md5校验和文件。
例如对于macOS (ARM64) v0.2.0

# Download the checksum file (adjust version/arch)
curl -Lo portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5 https://github.com/portainer/portainer-mcp/releases/download/v0.2.0/portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5
# Now verify (output should match the content of the .md5 file)
if [ "$(md5 -q portainer-mcp-v0.2.0-darwin-arm64.tar.gz)" = "$(cat portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5)" ]; then echo "OK"; else echo "FAILED"; fi

(对于Linux,您可以使用 md5sum -c <checksum_file_name>.md5
如果验证命令输出"OK",则文件完好无损。

解压存档:

# Adjust the filename based on the downloaded version/OS/architecture
tar -xzf portainer-mcp-v0.2.0-darwin-arm64.tar.gz

这将解压出portainer-mcp可执行文件。

移动可执行文件:
将可执行文件移动到您的$PATH中的某个位置(例如,/usr/local/bin),或者记下其位置以便于下面的配置步骤。

使用

使用Claude Desktop时,按如下方式配置:

{
    "mcpServers": {
        "portainer": {
            "command": "/path/to/portainer-mcp",
            "args": [
                "-server",
                "[IP]:[PORT]",
                "-token",
                "[TOKEN]",
                "-tools",
                "/tmp/tools.yaml"
            ]
        }
    }
}

[IP][PORT][TOKEN] 替换为您Portainer实例相关的IP、端口和API访问令牌。

[!NOTE]
默认情况下,该工具会在二进制文件所在的目录中查找 "tools.yaml" 文件。如果该文件不存在,则会在此处使用默认的工具定义创建一个。您可能需要按照上述说明修改此路径,特别是在使用像 Claude 这样的 AI 助手时,它们对工作目录有受限的写权限。

工具自定义

默认情况下,工具定义是嵌入在二进制文件中的。如果尚未存在,应用程序将在默认位置创建一个工具文件。

您可以通过指定 -tools 标志来定制工具定义文件的路径:

{
    "mcpServers": {
        "portainer": {
            "command": "/path/to/portainer-mcp",
            "args": [
                "-server",
                "[IP]:[PORT]",
                "-token",
                "[TOKEN]",
                "-tools",
                "/path/to/custom/tools.yaml"
            ]
        }
    }
}

默认的工具文件可以在源代码中的 internal/tooldef/tools.yaml 处找到供参考。您可以修改工具及其参数的描述,以改变 AI 模型如何解释和决定使用这些工具。如果您不希望使用某些工具,甚至可以决定移除它们。

[!WARNING]
不要更改工具名称或参数定义(除了描述),因为这将阻止工具正确注册和正常工作。

只读模式

对于注重安全性的用户,应用程序可以以只读模式运行。这种模式确保只有读操作可用,完全防止对您的 Portainer 资源进行任何修改。

要启用只读模式,请在命令参数中添加 -read-only 标志:

{
    "mcpServers": {
        "portainer": {
            "command": "/path/to/portainer-mcp",
            "args": [
                "-server",
                "[IP]:[PORT]",
                "-token",
                "[TOKEN]",
                "-read-only"
            ]
        }
    }
}

当使用只读模式时:

  • 仅提供读取工具(列表、获取)给 AI 模型
  • 所有写入工具(创建、更新、删除)都不会加载
  • Docker 代理请求工具不会加载
  • Kubernetes 代理请求工具不会加载

支持的 Portainer 版本

此工具固定支持特定版本的 Portainer。应用程序将在启动时验证 Portainer 服务器版本,并且如果不匹配所需版本则会失败。

Portainer MCP 版本 支持的 Portainer 版本
0.1.0 2.28.1
0.2.0 2.28.1
0.3.0 2.28.1

支持的功能

下表列出了当前(最新版本)通过 MCP 工具支持的操作:

资源 操作 描述 支持的版本
环境
列出环境 列出所有可用环境 0.1.0
更新环境标签 更新与环境关联的标签 0.1.0
更新环境用户访问权限 更新环境的用户访问策略 0.1.0
更新环境团队访问权限 更新环境的团队访问策略 0.1.0
环境组(边缘组)
列出环境组 列出所有可用的环境组 0.1.0
创建环境组 创建新的环境组 0.1.0
更新环境组名称 更新环境组的名称 0.1.0
更新环境组中的环境 更新与组关联的环境 0.1.0
更新环境组标签 更新与组关联的标签 0.1.0
访问组(端点组)
列出访问组 列出所有可用的访问组 0.1.0
创建访问组 创建新的访问组 0.1.0
更新访问组名称 更新访问组的名称 0.1.0
更新访问组用户访问权限 更新访问组的用户访问权限 0.1.0
更新访问组团队访问权限 更新访问组的团队访问权限 0.1.0
将环境添加到访问组 将环境添加到访问组 0.1.0
从访问组中移除环境 从访问组中移除环境 0.1.0
堆栈(边缘堆栈)
列出堆栈 列出所有可用堆栈 0.1.0
获取堆栈文件 获取特定堆栈的compose文件 0.1.0
创建堆栈 创建新的Docker堆栈 0.1.0
更新堆栈 更新现有的Docker堆栈 0.1.0
标签
列出环境标签 列出所有可用的环境标签 0.1.0
创建环境标签 创建新的环境标签 0.1.0
团队
列出团队 列出所有可用的团队 0.1.0
创建团队 创建新团队 0.1.0
更新团队名称 更新团队的名称 0.1.0
更新团队成员 更新团队成员 0.1.0
用户
列出用户 列出所有可用用户 0.1.0
更新用户 更新现有用户 0.1.0
获取设置 获取Portainer实例的设置 0.1.0
Docker
Docker代理 代理任何Docker API请求 0.2.0
Kubernetes
Kubernetes代理 代理任何Kubernetes API请求 0.3.0

开发

代码统计

该仓库包含一个辅助脚本 cloc.sh,用于使用 cloc 工具计算Go源文件的代码行数和其他指标。您可能需要先安装 cloc(例如,通过 sudo apt install clocbrew install cloc 命令)。

从仓库根目录运行脚本以查看默认摘要输出:

./cloc.sh

请参阅 cloc.sh 脚本中的注释头部,以获取有关可用标志的详细信息来检索特定指标。