关于 pAIchart MCP Hub
pAIchart MCP Hub 用于发现 MCP 服务并编排多服务工作流,也支持基础设施变更的设计与审查。团队提供需求和拓扑后,它会生成供人员应用的审查后变更包,而不会自行应用变更。
主要功能
- 01按能力发现服务
- 02用户级 OAuth 身份与范围限定令牌
- 03按顺序、并行或条件编排服务
- 04以依赖图协调 Agent 流水线
- 05通过验证器和发布门审查变更
- 06查看运行历史、产物和检查结果
适用场景
- 01设计并审查网络或 Kubernetes 变更
- 02准备 Terraform 或可观测性配置变更包
- 03编排已注册 MCP 服务间的工作流
- 04检查 Agent 输出和审批决定
MCP 相关
Hub 注册和发现 MCP 服务,并使用用户级身份与范围限定令牌转发调用。MCP 客户端可通过固定工具集编排服务调用和工作流。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://paichart.app/mcpclaude mcp add --transport http app-paichart-mcp-hub https://paichart.app/mcp{"mcpServers":{"app-paichart-mcp-hub":{"type":"http","url":"https://paichart.app/mcp"}}}在 Cursor 中打开{"servers":{"app-paichart-mcp-hub":{"type":"http","url":"https://paichart.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"app-paichart-mcp-hub":{"type":"http","url":"https://paichart.app/mcp"}}}{"mcpServers":{"app-paichart-mcp-hub":{"serverUrl":"https://paichart.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
pAIchart — 输入高级设计,输出经过审查的低级设计
— 源码可用:可自行托管、修改和再分发;不得作为托管服务提供给第三方。
跨网络设备、Terraform、Kubernetes 和可观测性技术栈(Prometheus / Grafana / OpenTelemetry)——在开放的 MCP Hub 上。向 pAIchart 提供位于任意可获取位置的 requirements.md 和 topology.json,它就会返回经过审查的低级设计:每台设备的配置、用于验证其正常工作的确切命令,以及回滚方案。你的团队会在带外以幂等方式应用它。pAIchart 负责设计并审查变更;它绝不会应用变更。
LLD 正是它要消除的瓶颈。如今,编写一份 LLD 意味着资深工程师要读取每台设备的实时状态、用各厂商的语言编写配置,并手动协调跨域传递的值。pAIchart 将这项工作作为由专业 Agent 组成的图来执行,分三个层级进行检查,并交付一份经过审查、等待你批准的结果。你不再需要为每个系统编写内容,而只需批准一个方案包。
有向无环图(DAG)协调 Agent
其他解决方案提供的是任务 DAG。pAIchart 提供的是经过审查的变更 DAG。
每个节点都是一个由 Agent 组成的领域流水线 采集实时状态 → 设计 → 编写 → 审查,每条边都传递一个运行时才产生的值。彼此之间没有连边的分支会并行运行;依赖边则规定顺序,并将实际推导出的值传递下去。
┌──▶ [firewall leg] ──┐
[network leg] ──────┼──▶ [cloud leg] ─────┼──▶ [integration review] ──▶ release gate
└──▶ [k8s leg] ───────┘
derived range checks all legs against
exists only after the one shared contract
this leg runs
这就是图与脚本的区别:云端分支会精确授权网络分支推导出的地址范围,因为云端分支读取了网络分支创建的内容。高级设计中不存在预定义值。
- 多个分支可并行运行或按顺序执行,并支持上下文串联和依赖关系
- 目前支持四个基础设施领域——网络设备、Terraform、Kubernetes、可观测性配置(Prometheus / Grafana / OpenTelemetry)——另加产物合成;整体架构也便于扩展:可观测性领域是通过配置新增的(包括一种协议、四个角色模板和一个只读服务描述符),无需更改引擎
- 图与工作一同声明在单个
PIPELINE任务中,而不是定义在另一个同样需要你运维的调度器中 - 可通过 AI 客户端或 Web UI 上的审批关卡放行;两者共用同一代码路径
- 实时状态来自你的设备,通过各设备的 MCP 服务以只读方式采集
如何通过三个层级检查正确性,且较低层级的结果不能被推翻
第 1 层——用代码进行算术检查。在适用的情况下,pAIchart 会使用代码进行确定性检查,而不是依赖 LLM 审查者的信心。每个派生值都会标记一个 kind,引擎会针对该类型,使用采集到的证据进行算术运算——绝不会使用软件包对这些证据的转述:
cidr— 派生范围是否恰好覆盖其声明的成员?可捕获范围过宽(将已分配的地址一并纳入)和范围过窄(声称的成员落在范围之外)。asn— AS 号是否位于私有范围内,且采集到的状态是否授权了它?这里的关系刻意反转:采集结果是允许列表——设计中设置的 AS 号必须是设备已经在运行的,或是目标中明确指定的。
如果某个 kind 尚未实现,平台会明确说明。它会将该值记录为未经过机械化检查,并将其升级给集成审查者——绝不会把未经检查的值算作通过。VT-14 端到端验证了这条路径:审查者指出了未覆盖的值,追溯了它的来源,发现它没有对应的设备配置,并否决了两项已通过的检查和其自身的批准。
第 2 层——独立审查者。每个环节各有一名审查者,根据各自的契约进行审查;另有一名集成审查者,根据共享契约审查所有环节——并对组合结果运行该领域自身的验证器(完整拓扑 Batfish、terraform plan、kubeconform)。它会使用这些验证器,而不会重新实现它们。
第 3 层——发布门禁。采用确定性的 AND 逻辑:每个环节都已批准 且 没有遏制违规 且 任何未检查的值都有合理的说明 且 集成审查者已批准 且 覆盖完整。门禁中不包含任何信心分数。
无论上层由谁批准,第 1 层的违规都会阻止通过。
我们发布失败的轮次,这就是证明
这个类别的大多数项目都要求你相信演示。我们提供了 21 份验证文档,每份都会在运行前说明预期的可观测结果,然后记录实际发生的情况。
也请看看那些出错的案例。VT-12:某程序在扩大授权的同时,自行认证 programReleasable: true。五层检查都未能发现问题,因此现在会用代码而非文字检查最小性。
- 两次逐字节相同的审查运行,对同一输入分别打出 45 分和 92 分。因此,信心在每个层级都被降级为一项记录事实;发布门禁只根据可验证的事实作出决定——其中不包含任何信心分数。
- 无法运行的检查会导致阻止,而不是通过。“我们无法验证”绝不会被当作“没问题”。
- 三个正确的变更包遭到拒绝,因为审查者对其结构上无法看到的内容作出了判断——其中一位写道“我无法独立重新验证此比较”,却仍断言了结论。改进措辞关闭了一条路径,但同类问题在下一轮再次出现,因此现在会在证据所在之处计算比较结果并交给审查者——审查者仍会对事实无法判定的所有内容作出判断(VT-21)。
→ 验证资料包 · 每项声明均链接到其机器记录 · 协议 · 面向 Agent 的契约,所有运行都依据这些契约进行验证;契约原文发布,并与平台种子逐字节校验一致
五大领域,一个支架
- 网络配置: “为每台交换机添加一个 Loopback0,并将其通告到 BGP” → 生成获批的变更包,由配置团队以幂等方式应用:根据描述符自助配置只读设备服务,采集真实运行状态,设计并编写逐设备配置、验证和回滚方案,再由独立审核者把关。 → 变更报告示例
- Kubernetes / GitOps: “为 orders-api Deployment 添加 HPA 和资源 requests/limits” → 根据集群实时状态生成声明式 kustomize 覆盖配置,并在离线环境中验证(
kubeconform/kustomize build/ OPA,绝不运行kubectl diff)。只读,受 RBAC 限定;会显示 Secret 名称,其值绝不会离开集群。 → 示例(包含一次有理有据的 NEEDS-REVISION——审核者拒绝批准无法验证的内容) · 第二个示例(三轮完成 PodDisruptionBudget——第一份变更包的差距清单成为目标,审核者因可用性计算不当拒绝了首次尝试,修订版则因选择了不同的字段而获批) - 可观测性配置: “在采集器的指标流水线中将 memory_limiter 处理器置于首位,并按 256 MB 容器规格设置大小” → 为运行中的 Prometheus / Grafana / OpenTelemetry 技术栈生成完整文件级期望状态配置,只读采集自采集器已部署文件和 Prometheus 的运行中配置,并提供确定性的应用前验证、以存在性为准的应用后检查,以及采集到的文件作为回滚方案。 → 示例(首个发布后也实际应用的变更包,展示了运行中的系统之后显示的内容——也是审核者首次读取平台盖章的回滚来源事实,而非猜测引文是否确为引文)
- Terraform / 云 IaC:“为 acme-app-logs 存储桶添加版本控制和公共访问阻止配置” → 基于限定范围的
state pull生成 HCL 变更包,作为 PR 提交(不启动任何 provider,也不锁定状态),并附上validate/plan/tflint/ OPA 预期事实和回滚方案。 → 示例(展示分层防护:类似秘密的标签已脱敏,提示词注入标签已拒绝) - 产物合成:源材料(git 历史、执行日志、一个 POV 的交付历史、外部 MCP 服务)→ 通过采集 → 编写 → 审核,生成可发布的交付物。 → 示例
安全地连接你的实时系统——MCP 中枢
收集步骤是一次中枢调用,这套机制也向所有人开放:注册服务、按能力发现服务并编排服务——使用各自用户的身份,不共享 API 密钥。
- 按用户进行身份验证:每次外部调用都通过 OAuth(GitHub / Microsoft)以你的身份运行。没有共享的平台账户。
- 服务可自行验证的令牌:中枢会为每次调用签发一个短期令牌,并在 JWKS 端点发布公钥。支持 JWKS 的服务会自行验证签名,因此 pAIchart 签发的身份凭证可取代 URL 中的静态 API 密钥,我们之间绝不会共享任何密钥。签名密钥每 90 天轮换一次。
- 每个令牌仅对应一个服务:每个签发的令牌都带有按服务限定的受众(RFC 8707),因此从一个服务泄露的令牌无法被重放到另一个服务。
- 信任级别:6 级模型控制令牌转发(INTERNAL → TRUSTED → OWNER → TEAM_MEMBER → SCOPED → ANONYMOUS)。
- 面向 Agent 的固定工具接口:执行循环永久调用六个稳定工具——新注册的服务可通过服务调用供所有 Agent 访问,无需新增工具架构、修改提示词或重新部署。
- 开放注册表:任何 MCP 服务都可以通过一条命令注册,且默认设为私有;按能力而非名称进行发现;工作流可按顺序、并行或有条件地串联服务。
管理、可观测性与访问控制
- 在 Web 应用中更改 DAG 定义或任何 Agent 的系统提示词。数据存储在数据库中,无需重启或重新部署即可生效。
- 完整取证:可在 GUI 中浏览每次运行的元数据和产物:每个 Agent 看到了什么、生成了什么、运行了哪些检查,以及关卡为何暂停。
- 多用户:RBAC 和个人 API 密钥。
- 按 Agent 选择模型:通过下拉菜单从当前 Claude 系列中选择。
组织工作——POV → 阶段 → 任务
在大多数 Agent 框架中,编排图是代码——仅在运行期间存在。在 pAIchart 中,DAG 的每个节点都是一项任务:一条持久化记录,包含状态、依赖项、产物和历史记录,并位于团队已在使用的同一交付计划中。计划和流水线都只是带类型的任务,因此图在重启后仍会保留;每个 Agent 的工作都是可浏览的工作项;审批关卡则是一次任务状态转换——与人工完成任务时经过的流程相同,走的是同一条通用代码路径。
这也解释了为什么无需单独运维调度器,以及为什么取证功能开箱即用:工作流引擎就是交付计划。问一句*“我的哪些 POV 有风险?”*就能得到答案——无需使用 UI。
开始使用
pAIchart 是一个托管的 MCP hub,可配置为 Claude 连接器或 ChatGPT 应用,因此无需安装任何内容。将 AI 客户端指向端点,完成身份验证,然后说明目标。
- Hub:
https://paichart.app/mcp - 连接方式:Claude Desktop(GitHub OAuth)或 ChatGPT(Microsoft OAuth)——也可以使用 Web 应用
- 第一句可以说:“Help me get started with paichart”——也可以运行
list_prompts()查看所有引导式工作流 - 隐私:PRIVACY-DEMO.md——演示账户存储的内容、可执行的操作,以及 30 天后自动删除
要运行一个程序(DAG),请在任何可获取的位置提供两个文件(GitHub 仓库即可):
| 文件 | 内容 |
|---|---|
requirements.md | 你的 HLD——以文字说明目标及其约束 |
topology.json | 范围内的设备/目标及其连接方式 |
然后,在 AI 客户端中请求加载“HOWTO-use-pov-program”提示词,或在 GUI 中创建一个任务,即可运行图。 在 GUI 中查看共享 POV 里的大量示例,或者询问“list my povs and show me the details” 也可以从更简单的操作开始:
- 使用 HOWTO-use-pipeline-harness 提示词,然后询问“为每台交换机配置一个 Loopback0,并将其通告到 BGP”——运行一条流水线,处理一个域,并返回经过审核的软件包
- “我的哪些 POV 存在风险?”——直接获取交付分析结果
- “发现服务”——按功能浏览注册表
自行运行
在全新 Ubuntu 24.04 机器或 VM 上完成安装——docs/SELF-HOST-RUN-SHEET.md。
按顺序执行每条命令,无需预先准备任何内容:安装 PostgreSQL 16 和 Node 20,创建数据库,克隆、配置、初始化并启动应用,
完成首次登录,创建管理员账户,安装 Claude Code 并将其连接到你的 hub,还可以选择注册你自己网络中的服务。大约需要 40 分钟,其中大部分时间用于运行 npm ci。
已经有 Node 20、PostgreSQL 16 和一个空数据库?简要步骤如下:
git clone https://github.com/paichart/paichart && cd paichart && npm ci
cp .env.example .env # set DATABASE_URL, APP_BASE_URL and ADMIN_EMAIL; then:
npm run --silent jwt:keys >> .env # RS256 signing keys (--silent keeps npm's banner out of .env)
npm run db:seed # schema, grants, first SUPER_ADMIN (password printed once), protocols, hub prompts
npm run dev # web app → http://localhost:3000
npm run mcp:http:dev # MCP hub → http://localhost:8080/mcp
- docs/RUNNING.md——说明每个步骤的作用:双进程结构、角色、
APP_BASE_URL、生产环境说明 - docs/VERIFYING-SELF-HOST.md——证明安装使用自己的身份:每个令牌和 OAuth 文档都基于你自己的
APP_BASE_URL生成,并且会拒绝为其他任何发行方签发的令牌 - docs/OAUTH-SETUP.md——注册你自己的 GitHub / Google / Microsoft 应用(可选;无需注册也可使用密码登录)
- CONTRIBUTING.md · SECURITY.md
该平台以Elastic License 2.0 提供源代码:你可以使用、修改、自托管(包括在自己的组织内用于商业用途)并再分发;唯一禁止的事项是将其作为托管或管理服务提供给第三方。本仓库包含完整源代码(Web 应用 + MCP 服务),以及协议和验证套件。paichart.app 上的托管服务运行的也是同一份代码。服务器管理工具(监控、部署、备份)有意不纳入此仓库。
内部机制
You (Claude Desktop / ChatGPT / web app)
→ authenticate to the pAIchart Hub
→ one PIPELINE task, its title declaring the graph, pointing at your HLD
│
├─▶ Program Architect designs the DAG + the interface contract every leg must honour
│
├─▶ ⏸ PLAN GATE — a human releases it (AI client or GUI, one common code path)
│
├─▶ legs execute: parallel where no edge joins them, sequenced where one does
│ each leg: harvest (read-only, via per-device MCP) → design → author → review
│ each edge: carries a real derived value forward, not an assumption
│
├─▶ Tier 1 arithmetic in code · Tier 2 integration review over the composed set
│
└─▶ release gate — a deterministic AND, no confidence number
↓
a reviewed LLD change package, in your AI client and the web GUI
your team applies it — idempotently, out of band, with the rollback
所有外部调用都以你的身份执行,绝不会使用共享的平台账户——这一点在 Agent 之下强制执行,因此即使提示词注入了 Agent,它也无法超出发出请求的用户权限。
实时服务
Hub 的开放注册表。设备服务有所不同——每次运行时都会根据描述符按需配置,并在运行结束后拆除,因此 pAIchart 绝不会存储你的设备凭据。描述符规范是开放的:规范 + JSON Schema + 四个经过生产环境验证的示例——为你自己的设备编写一个描述符,并在运行前验证。
| 服务 | 功能 | 用户级身份验证 |
|---|---|---|
| Snowflake | 数据仓库查询 | ✅ 外部 OAuth |
| EIA | 美国能源数据分析 | 服务账号 |
| Weather | 实时天气数据 | 服务账号 |
| EODHD | 金融市场数据 | 服务账号 |
| Alpha Vantage | 金融数据 — 113 个工具 | 服务账号 |
| Browser Automation | 网页抓取、屏幕截图、PDF | 服务账号 |
| Notifications | 电子邮件、Slack、webhook | 服务账号 |
| Token Validator | JWT/JWKS 集成与信任级别调试 | ✅ 用户级 JWT |
运行 HOWTO-register-service(list_prompts()),查看从基本注册到 A 级工具架构、访问控制和信任级别的操作指南。
只需一条命令即可注册你自己的服务:
registry(action: "register", {
name: "my-service",
description: "What your service does",
endpoint: "https://my-service.com/mcp",
category: "data-services"
})
学习
- 验证资料包 — 20 份文档,每份都在运行前说明预期观察结果。包括失败的轮次。
- 协议 — 资料包用于约束运行的、面向 Agent 的精确契约;原样发布,并与平台种子逐字节校验。决策日志中的每个版本标记都能在此找到可读文本。
- 开放问题 — 面向研究人员。我们认为有趣的三项发现(一处缺陷曾在信心逐步上升时获得三层审查人员的一致认可)、一个我们无力定论的假设,以及我们愿意分享的实验室运行数据。
- 案例研究 — 同一个真实网络→云项目的三篇操作指南:经机器检查(能信任它吗)、由你审批;并非由你编写(它能带来什么)、多领域项目内部解析(它如何构建——DAG、审查层级及其扩展能力)。
- MCP 工具卓越实践 — 共 12 章,介绍如何构建无需外部文档即可供 AI 客户端调用的 MCP 工具,内容摘自 pAIchart 自身的生产审计:tutorials/README.md
@paichart/containment-checks— 一级算术检查,原样提取为 MIT 许可库,并附带其事件样例测试套件:对 LLM 衍生基础设施值(cidr、asn——可按kind扩展)进行机械检查;未实现的检查会报告未经过机械覆盖,绝不会报告通过。
链接
- Hub(在此连接):paichart.app/mcp
- JWKS:
https://paichart.app/api/auth/jwks - 验证:verification/
- 文档:AI 客户端中的 MCP 资源,或
list_prompts() - 源代码与自托管:本仓库 — docs/RUNNING.md
致谢
设备采集基于 @sydasif 的 nornir-napalm-mcp 构建,依据 MIT 许可证使用,并经过修改。
关键词
mcp mcp-hub mcp-server model-context-protocol dag directed-acyclic-graph multi-agent-orchestration low-level-design hld-to-lld change-synthesis intent-driven human-gated network-automation network-provisioning napalm nornir batfish kubernetes gitops terraform infrastructure-as-code multi-domain-automation verification deterministic-gate autonomous-agents change-management delivery-management pov service-discovery external-oauth jwks rfc8707 per-user-authentication workflow-orchestration claude-desktop chatgpt snowflake
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。