波特纳 MCP
您是否曾希望直接询问 Portainer 发生了什么事?
现在就可以了!Portainer MCP 将您的 AI 助手直接连接到您的 Portainer 环境。您可以管理 Portainer 资源(例如用户和环境),或通过 AI 直接执行任何 Docker 或 Kubernetes 命令来深入了解。
概述
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
的示例:
(Linux AMD64 二进制文件也可在发布页面上找到。)
**(可选,但建议)验证校验和:**首先,从发布页面下载相应的.md5
校验和文件。以 macOS (ARM64) v0.2.0
为例:
(对于 Linux,可以使用md5sum -c <checksum_file_name>.md5
)如果验证命令输出“OK”,则表示文件完好无损。
提取档案:
这将提取portainer-mcp
可执行文件。
**移动可执行文件:**将可执行文件移动到$PATH
中的某个位置(例如, /usr/local/bin
)或记下其位置以供下面的配置步骤使用。
用法
使用 Claude Desktop,按如下方式配置它:
将[IP]
、 [PORT]
和[TOKEN]
替换为与 Portainer 实例关联的 IP、端口和 API 访问令牌。
默认情况下,该工具会在二进制文件所在的目录中查找“tools.yaml”。如果该文件不存在,则会使用默认工具定义在该目录中创建该文件。您可能需要如上所述修改此路径,尤其是在使用 Claude 等限制了工作目录写入权限的 AI 助手时。
工具定制
默认情况下,工具定义嵌入在二进制文件中。如果工具文件尚不存在,应用程序将在默认位置创建一个。
您可以使用-tools
标志指定自定义工具文件路径来自定义工具定义:
默认工具文件可在源代码中的internal/tooldef/tools.yaml
中引用。您可以修改工具及其参数的描述,以改变 AI 模型对它们的解释和使用方式。如果您不想使用某些工具,甚至可以选择将其移除。
[!WARNING] 请勿更改工具名称或参数定义(描述除外),因为这将阻止工具正确注册和正常运行。
只读模式
对于注重安全的用户,该应用程序可以以只读模式运行。此模式确保仅可进行读取操作,从而完全阻止对 Portainer 资源的任何修改。
要启用只读模式,请将-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 |
0.4.0 | 2.29.2 |
0.4.1 | 2.29.2 |
0.5.0 | 2.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 cloc
或brew install cloc
)。
从存储库根目录运行脚本以查看默认摘要输出:
有关可用于检索特定指标的标志的详细信息,请参阅cloc.sh
脚本中的注释标头。
令牌计数
要估计当前工具定义在提示中消耗了多少个令牌,您可以使用提供的 Go 程序和 shell 脚本来查询 Anthropic API 的令牌计数端点。
1.生成工具 JSON:
首先,使用token-count
Go 程序将 YAML 工具定义转换为 Anthropic API 所需的 JSON 格式。从仓库根目录运行此程序:
此命令从指定的输入 YAML 文件读取工具定义,并将工具的 JSON 数组(包含name
、 description
和input_schema
)写入指定的输出文件。
2.查询Anthropic API:
接下来,使用token.sh
脚本将这些工具定义连同示例消息一起发送到 Anthropic API。此步骤需要 Anthropic API 密钥。
该脚本将输出来自 Anthropic API 的 JSON 响应,其中包括所提供工具的估计令牌数和usage.input_tokens
字段下的示例消息。
此过程有助于理解与提供给语言模型的工具集相关的令牌成本。
Related MCP Servers
- MIT License
- GoMIT License
- -securityAlicense-qualityMarineTraffic MCP ServerLast updated -1TypeScriptMIT License
- GoMIT License