Skip to main content
Glama

Portainer MCP

Official
by portainer
zlib License
20
  • Linux
  • Apple

波特纳 MCP

覆盖范围

您是否曾希望直接询问 Portainer 发生了什么事?

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

portainer-mcp-演示

概述

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

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

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

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

注:该项目目前正在开发中。

它目前设计用于与 Portainer 管理员 API 令牌配合使用。

安装

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

**下载归档文件:**通常可以直接从发布页面下载。或者,也可以使用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 访问令牌。

默认情况下,该工具会在二进制文件所在的目录中查找“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.02.28.1
0.2.02.28.1
0.3.02.28.1
0.4.02.29.2
0.4.12.29.2
0.5.02.30.0

支持的功能

下表列出了当前(最新版本)通过 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
DockerProxy代理任何 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脚本中的注释标头。

令牌计数

要估计当前工具定义在提示中消耗了多少个令牌,您可以使用提供的 Go 程序和 shell 脚本来查询 Anthropic API 的令牌计数端点。

1.生成工具 JSON:

首先,使用token-count Go 程序将 YAML 工具定义转换为 Anthropic API 所需的 JSON 格式。从仓库根目录运行此程序:

# Replace internal/tooldef/tools.yaml with your YAML file if different # Replace .tmp/tools.json with your desired output path go run ./cmd/token-count -input internal/tooldef/tools.yaml -output .tmp/tools.json

此命令从指定的输入 YAML 文件读取工具定义,并将工具的 JSON 数组(包含namedescriptioninput_schema )写入指定的输出文件。

2.查询Anthropic API:

接下来,使用token.sh脚本将这些工具定义连同示例消息一起发送到 Anthropic API。此步骤需要 Anthropic API 密钥。

# Ensure you have jq installed # Replace sk-ant-xxxxxxxx with your actual Anthropic API key # Replace .tmp/tools.json with the path to the file generated in step 1 ./token.sh -k sk-ant-xxxxxxxx -i .tmp/tools.json

该脚本将输出来自 Anthropic API 的 JSON 响应,其中包括所提供工具的估计令牌数和usage.input_tokens字段下的示例消息。

此过程有助于理解与提供给语言模型的工具集相关的令牌成本。

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

波特纳 MCP

  1. 概述
    1. 安装
      1. 用法
        1. 工具定制
        2. 只读模式
      2. Portainer 版本支持
        1. 支持的功能
          1. 发展
            1. 代码统计
            2. 令牌计数

          Related MCP Servers

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/portainer/portainer-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server