SuperAPI AI 工具集

infrahub-sot

部署与运维

查看项目

更新于 10-15 17:21

技能介绍

用途:该技能封装 opsmill/infrahub-mcp(MCP Server),用于连接运行中的 Infrahub 实例,查询基础设施事实源数据,并以分支隔离方式安全地提出变更。适合自定义基础设施模型、需要版本化与人工评审变更的场景,也可用于纯分析/审计。

主要能力:提供 10 个工具。只读工具 5 个:get_nodes(按 kind 类型化读取节点,支持属性/关系过滤、部分匹配与分页)、search_nodes(按子串模糊查找)、get_schema(发现 kind 目录或查看某 kind 的属性、关系与过滤映射)、get_session_info(报告当前会话状态)、query_graphql(执行只读 GraphQL 查询,拒绝 mutation)。写入工具 5 个(READ_ONLY 模式下隐藏):node_upsert、node_delete、mutate_graphql、propose_changes、reset_session_branch。另提供 3 个资源加 1 个模板:infrahub://schema、infrahub://schema/{kind}、infrahub://graphql-schema、infrahub://branches,以及 4 个提示词。

安全模型:写入永不落在默认分支。会话内首次写入会惰性自动创建名为 mcp/session-YYYYMMDD-<hex> 的会话分支(模式可配置),所有 upsert/delete/mutate 均落在该分支;propose_changes 生成 Proposed Change 供人工在 Infrahub UI 审核合并,智能体不执行合并。设置 INFRAHUB_MCP_READ_ONLY=true 可隐藏写入工具并阻止 GraphQL mutation,适合纯分析或审计连接。

必要用法:安装方式为 pip install infrahub-mcp、Docker 镜像 registry.opsmill.io/opsmill/infrahub-mcp 或从源码构建,入口为 infrahub-mcp 控制台脚本。需设置 INFRAHUB_ADDRESS,并提供 INFRAHUB_API_TOKEN 或 INFRAHUB_USERNAME+INFRAHUB_PASSWORD。传输默认为 stdio,也可用 --transport streamable-http(远程客户端/认证模式),--host 默认 127.0.0.1,--port 默认 8001。Python 需 3.13+,依赖 fastmcp>=3.2.0 与 infrahub-sdk>=1.20.0。

推荐流程:先读取 infrahub://schema 或空参数 get_schema 发现可用 kind,再查看目标 kind 的 schema 与过滤条件,然后 get_nodes 分页读取。写入前先调用 get_session_info 确认目标分支,变更后用 get_nodes 验证,最后 propose_changes 交由人工合并;开始无关的新变更时调用 reset_session_branch。mutation 必须通过 mutate_graphql,不走 query_graphql。

限制:写入需要令牌或用户具备写权限;schema/分支管理类 mutation 被阻止;reset_session_branch 拒绝默认分支及已合并/只读分支;OIDC、token-passthrough、basic-passthrough 等认证模式需搭配 streamable-http;速率限制、重试、缓存与 OpenTelemetry/Prometheus 可观测性均为可选配置。配套的 infrahub-skills 插件用于编写 schema、检查、转换与生成器等文件型工件,其中仅 infrahub-analyzing-data 需要已连接的 Infrahub MCP,其余为文件读写,可与本技能配合使用。