关于 endiagram-mcp
endiagram-mcp 是用于 EN Diagram 的 MCP 服务,通过图论对并发系统进行确定性结构分析,面向系统建模与验证场景。计算不使用 AI,每项结果均对应明确的数学定理。
主要功能
- 01分析系统结构和关键路径
- 02检查不变量与活性
- 03查询实体间可达性
- 04比较或演化系统模型
- 05合并或提取子系统
- 06渲染 SVG 或 PNG 图表
适用场景
- 01识别并发系统中的死锁风险
- 02验证实体之间的路径与防护
- 03比较模型变更前后的结构
- 04生成系统结构图
MCP 相关
向 MCP 客户端提供结构分析、验证、比较、组合和图表渲染工具。可通过 stdio 启动,也提供 HTTP 传输端点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.endiagram.com/mcpclaude mcp add --transport http dushyant30suthar-endiagram https://api.endiagram.com/mcp{"mcpServers":{"dushyant30suthar-endiagram":{"type":"http","url":"https://api.endiagram.com/mcp"}}}在 Cursor 中打开{"servers":{"dushyant30suthar-endiagram":{"type":"http","url":"https://api.endiagram.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"dushyant30suthar-endiagram":{"type":"http","url":"https://api.endiagram.com/mcp"}}}{"mcpServers":{"dushyant30suthar-endiagram":{"serverUrl":"https://api.endiagram.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
7| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| node | string | 否 | 节点名称。提供此项时,将返回此特定节点的各项中心性指标(介数、接近度、特征向量),而不是概览。 |
| source | string | 是 | EN 源代码,或 .en/.txt 文件路径 |
| detect_findings | string | 否 | 设置为 'true' 以标记命名的结构发现项。可能的值:unguarded-sink、single-cut-path、multi-cut-path。 |
详细介绍
@endiagram/mcp
适用于 EN Diagram 的 MCP 服务——由图论驱动的确定性结构分析。每个结果都有明确命名的数学定理作为依据。计算过程不使用 AI。
安装
直接运行:
npx @endiagram/mcp
或全局安装:
npm install -g @endiagram/mcp
连接
Claude Code
claude mcp add endiagram npx @endiagram/mcp
Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"endiagram": {
"command": "npx",
"args": ["@endiagram/mcp"]
}
}
}
Cursor
将以下内容添加到项目根目录下的 .cursor/mcp.json:
{
"mcpServers": {
"endiagram": {
"command": "npx",
"args": ["@endiagram/mcp"]
}
}
}
HTTP(零安装)
任何支持 HTTP 传输的 MCP 客户端:
https://api.endiagram.com/mcp
Smithery
smithery mcp add dushyant30suthar/endiagram
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
EN_API_URL | https://api.endiagram.com | EN Diagram 服务的 API 端点 |
工具
针对任意系统的六个问题,外加一个渲染工具。每个工具都接收 source(EN 代码或 .en/.txt 文件路径)。工具名称只是简写,并非规范说明——调用前请阅读各工具的描述;compose 和 equivalent 基于模式运行,并非通用分析器。
| 工具 | 回答的问题 | 可调参数 |
|---|---|---|
structure | 这个系统是什么?形状、阶段、桥接点、环路、关键路径、支配树、最小割、子系统、参与者、位置。 | detect_findings=true 可标记风险(unguarded-sink、single-cut-path、multi-cut-path);node=X 返回各节点的中心性(中介中心性、接近中心性、特征向量中心性)。 |
invariant | 哪些性质始终成立?守恒律、T 不变量(可持续环路)、可耗尽集合、亏格、可逆性。 | rules(每行一条)用于检查自定义断言。支持四种形式:no bridge that is also hub · every path from X to Y passes through at least one of [A,B,C](优先关系)· no node with centrality above N · removing any single node disconnects at most N others。 |
live | 系统会死锁吗?实体会溢出吗?信标、陷阱、无界环路、结构活性和有界性。 | — |
reachable | X 能到达 Y 吗?路径、距离、边界穿越。from/to 接受实体或动作名称。 | defense_nodes=a,b,c 用于检查防护节点是否覆盖所有路径。 |
equivalent | 两个系统是否相同?或者修改当前系统会带来哪些变化? | 比较模式(source_a+source_b):编辑距离 + 谱余谱性。演化模式(source+patch):纯 EN 添加;- name 删除;同名替换。 |
compose | 各部分如何组合(合并)?或者某个部分如何独立存在(提取)? | 合并:source_a+source_b+links(每行一个 a.entity=b.entity)。提取:source+subsystem(名称来自 structure.subsystems)。 |
render | SVG 或 PNG 图表。仅在用户要求可视化时调用。 | 主题:Editorial、Primer、Carbon(各自支持 ± isDark),或根据 color=#RRGGBB 派生种子。structure_layers 位掩码(1=subsystems,2=pipelines,4=cycles,8=forks,16=joins,32=hubs,64=deadlock,128=overflow)。 |
EN 语法
每行一条语句:
actor do: action needs: input1, input2 yields: output1, output2
产出和需求中的同名项会自动建立连接:
customer do: place order needs: menu yields: order
kitchen do: prepare food needs: order yields: meal
waiter do: deliver needs: meal yields: served customer
建模
同名即同一事物。将所有必需输入放在同一个 needs: 列表中(AND)。让两个动作使用相同的产出名称,即表示替代方案(OR)。序列表示一个动作消耗另一个动作的产出。对有状态资源重新产出,以保持其持续存在;一次性数据则会被消耗。按实际的原子粒度建模——仅当各部分可以独立访问时才拆分。
在 endiagram.com 了解更多。
遥测
@endiagram/mcp 首次运行时会生成一个随机安装 ID,并将其存储在
~/.endiagram/install-id(模式为 0600)。每次请求都会通过
X-Endiagram-Install-Id HTTP 标头发送该 ID,以便我们关联来自同一安装的请求,排查仅凭每 IP 信号无法追踪的问题(移动网络、VPN 和 CGNAT 都会导致 IP 合并或频繁变化)。
**不会发送源代码、文件路径、环境变量或任何个人身份信息。**安装 ID 是在本地生成的随机、不透明 UUIDv4。
首次运行时,会在 stderr 中显示一条通知(绝不会输出到 stdout——stdout 是 MCP JSON-RPC 通道),其中包含相关说明和退出方法。该通知每次安装只显示一次,不会再次显示。
退出遥测
以下三种方法均可停用安装 ID:
- 将
ENDIAGRAM_TELEMETRY=off设置为环境变量(也接受0、false、no)。 - 在
~/.endiagram/telemetry创建一个文件,并在其中写入单词off。 - 删除
~/.endiagram/install-id。(下次运行时会生成一个新的,除非同时启用了方法 1 或 2。)
启用上述任一方法后,将完全不发送 X-Endiagram-Install-Id 标头——服务会改用按 IP 生成的 HMAC cid 进行关联,这对于短期的会话跟踪完全够用。
完整隐私政策:endiagram.com/privacy
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。