@crayon-c4/mcp (英语)
MCP 服务器,允许任何 AI 编码代理创建、更新和维护一个 克雷扬-C4 结构模型——在一个.NET,Java,节点,Python或 任何语文储存库——和 永远 生成无效文件.
它与克洛德代码,克洛德桌面,克洛德光标,VS代码,Zed,或者其他任何 讲"示范背景协议".
安装
没有安装。 指向您的 MCP 客户端:
{
"mcpServers": {
"crayon-c4": {
"command": "npx",
"args": ["-y", "@crayon-c4/mcp", "."],
"env": {
// Optional. Without it you get the free tier, which is the whole local
// authoring loop — see "Licensing" below.
"CRAYON_C4_LICENSE_KEY": "crayon-c4.…"
}
}
}
}
这个 "." 是服务器的工作空间 。 工具的每个路径都会解决
里面还有 可能无法逃脱 ——呼叫者是传递其推断路径的代理人
而工作空间根是您同意的边界.
需要节点18+.
担保
此服务器所写的每个模型都是有效的 . 不是"通常",也不是"如果特工小心":
- 每个编辑工具都会验证 内存中的全部模型 并仅采用该修改 暂停,所以一个被拒绝的编辑会让会话保持原样,并告诉代理商原因;
write_model在边界重新验证 拒绝 坚持任何无效的;- 校验为 两个通行证因为他们捕捉到不同的东西.. 已发表 杰森·斯克马 (2020-12-草案)说文件是否正确 形状,而且应用程序本身的语义 验证者是否表示 表示 关系指向一个元素 不存在, 配属到一个系统的一个组件, 一个指定容器编号的部署 不见了 任何计划都无法表达这些,而它们使进口变为空.
错误会随着JSON指针的出现而回来,每条指针后面都有规则,所以一个特工可以修复和 重提而不是猜测.
它会做什么
撰写 - 安装一个模型,创建和更新带有C4封装的元素,
维护一个中央关系列表,构建图表(与 subject 绘制为
边界框架,将首先报告的级联安全移除,并用
diff 预览 .
谅解 ——机器可读能力地图,编导指南,已知好
实例,以及 explain_c4,它回答每个图级是什么 页:1 而不是说
它的形状。 生成的模型最常见的失败不是无效;
每张图都显示一个不同的缩放.
扫描 (持证) 检测堆栈,从代码中获取一个C4模型,从代码中获取一个
从 Dockerfiles 的部署视图并作曲( 声明它所做的每个来源) 没有 改为:
Kubernetes, Helm, Terraform, CI), 行为流的微量, 并合并一个再扫描成一个
现有模式 没有丢弃手写的装饰。同样合并
校正仓库本身 adr/*.md 决策记录 - Git-inative格式
模型本身导出到——所以编辑一个决定文件(或写一个全新的文件,没有)
编号需要)并重新运行 merge_model 是一个真正的双向通道,而不是只输出.
决定 ——查找并管理模型的架构决定(ADRs):按
状态、类别或它们所涉及的要素(扩展至其内部或包含的内容)
它),全文读出一个,记录一个与元素相联的新元素,移动它整个生命周期,
替换它,重新编号(项目中的每一处内容都重写),并检查 stale
链接。 规则是应用程序自己的:接受的决定是 记录 内容无法
更长时间的编辑——你将取代它——而地位只能向前发展. write_model 保留
adr/*.md 中,包括删除用于居住的重命名或被删除的决定.
浓缩 (持证) 列出仍然缺失的每个描述(取自模型) 自己,所以重新运行 从不重复别人已经写的东西) 并填满他们,拒绝 覆盖已经存在的道词.
指导工作流程 - 5个提示(author-c4-model, (中文(简体) ), add-deployment-view, (中文(简体) ), add-flow, (中文(简体) ),
tune-config, (中文(简体) ), enrich-descriptions——计划,而不是讲座:每个工具的名称,
命令,和陷阱 特定的工作陷入.
偏好来自何处
三个声音, 命令他们如何具体的工作:
- 页:1 引擎默认, (中文(简体) ),
- 这个 仓库 —— 说
.crayon/config.json,节authoring, (中文(简体) ), - 这个 第二届会议 —— 说
set_session_settings。 。 。 .
以后赢了, 每个字段。无人设置的字段会停留在引擎默认状态,而不是
写成一个,这样设置 language 从未默默采用 granularity 你没有
提及. get_session_settings 报告有效值 和每个来自哪里, (中文(简体) ),
因为"为什么它释放出双向边缘"需要一个答案.
许可证发放
校验为 离线: 二进制中的公用钥匙船,所以一个钥匙在飞机上工作 这层完全没有遥测.
- 免费 ——每个资源,既通过验证,又通过整个本地的作者循环.
- 有执照 - 仓库扫描(
scan)和AI浓缩管弦乐(enrich) (中文(简体) ).
键读取自 CRAYON_C4_LICENSE_KEY,则 .crayon/license 在工作空间.
它没有打开. 没有密钥,一个无法读取的文件,一个伪造的密钥,一个过期的密钥——每一个
他们给你一个工作免费的会话和句子 解释为什么,从来没有坠机和
从来没有一个死服务器。 打电话 license_status (从来没有门,从来没有错误) 看到准确的
这届会议能做什么.
买个钥匙 https://crayon-c4.com/#定价。 。 。 .
托管
第二个入口, crayon-c4-mcp-http中,用于
团队。 它已经 无文件系统 ——你的仓库在你的机器上,不是我们的——所以每一个
读取工作空间的工具被拒绝,并指定要运行的本地服务器.
内相编译回路,资源与导出全部工作不变.
走过: 从仓库到模型, 您可以导入
此序之分为序. 一个开始在它面前写入元素的代理 可以说系统 实值 生产出技术上有效的模型,不说任何东西.
1. 了解你在建模的内容.
explain_c4 → what C4 is for, and each level
explain_c4 { level: "container" } → the level most models are missing
读吧 crayon-c4://capabilities ——机器可读规则——和
crayon-c4://examples/c4-only 为了形状.
2. 说你想写什么. (可选)
set_session_settings { descriptionStyle: "concise", language: "nl" }
get_session_settings → the effective values AND where each came from
3. 获得第一个模型. 要么从中得出
detect_stack → is there anything here to scan?
propose_config → measure first: which diagrams come out too big
write_config { config: <the proposal>, confirm: true }
scan_repo { depth: "container", adopt: true }
——或手写:
create_model { name: "Acme Shop" }
upsert_nodes { nodes: [ …system and its containers, in one call… ] }
upsert_relationships { relationships: [ …between the DEEPEST elements that talk… ] }
upsert_layer { id: "l-context", label: "…", diagramType: "context", subject: null }
upsert_layer { id: "l-containers", label: "…", diagramType: "container", subject: "sys-shop", parent: "l-context" }
upsert_nodes { nodes: [{ id: "sys-shop", zoomLevel: "l-containers" }] } → drill-in
4.填出通论. (持证)
list_enrichment_tasks { limit: 10 } → what is missing, and the file to read it FROM
apply_enrichment { fills: [ … ] } → refuses to overwrite anything already written
5. 检查和写作.
validate_model → fix every error; read the warnings
write_model → a DIFF, and nothing written
write_model { confirm: true } → writes the model + its sidecars
6. 稍后,当代码继续运行时.
merge_model → the whole change set, nothing applied
merge_model { apply: true, acceptRemovals: [ … ] }
merge_model 从不丢弃拼写:描述和姓名
双方更改的名称被报告为冲突并被单独保留,以及一个因素
代码不再被删除 只有在你要求它通过 id —— 如果它是
手作相从起. 裁决记录 adr/*.md 从未被它删除
全部 任何关于决定的信息 都不是代码生成的 所以一个失踪的文件被报告
有保留,没有提出去除;有记录 proposed 永远不会被
文档,无论你解决什么,因为模型自己的 接受/折旧/被取代
不可剥夺规则也在这里适用.
最后,导入 crayon-c4-project.json 时间 https://crayon-c4.com (英语) (单位:千美元)新项目 + 从
文件,或 从代码更新 画、整理和分享.
参考文献
图例: 小时 =读取或写出您的工作空间,所以在主机运输上被拒绝.
工具
| 工具 | 需求 | 小时 | 它会做什么 |
|---|---|---|---|
validate_model | 免费 | 请检查access-date=中的日期值 (帮助) 财务报告和审定财务报表 语义——内含或路径 | |
create_model | 免费 | 会话中的脚手架新有效模式 | |
read_model | 免费 | 小时 | 打开一个模型并概括它( 计数, 图表, 什么是错的) |
upsert_nodes | 免费 | 创建或更新元素, 已执行封装 | |
upsert_relationships | 免费 | 创建或更新中央关系列表 | |
upsert_layer | 免费 | 创建或更新图:其元素、主题、父体、行样式 | |
remove_elements | 免费 | 安全删除,首先报告级联(dryRun(中文(简体) ) | |
set_layout | 免费 | 一个图上的平面元素位置 | |
write_model | 免费 | 小时 | 验证 = 预览 diff = 写入 confirm |
list_decisions | 免费 | 按地位、文本、类别、日期或所涉要素查找决定 | |
get_decision | 免费 | 一项完整的决定,及其环节和取而代之 | |
create_decision | 免费 | 记录与决定内容相关的决定 | |
update_decision | 免费 | 编辑草稿;在被接受的记录中仅列出链接和类别 | |
set_decision_status | 免费 | (仅提前) | |
supersede_decision | 免费 | 替换决定并链接链条 | |
acknowledge_decision | 免费 | 确认标记的决定仍然有效 | |
delete_decision | 免费 | 删除 a proposed 草案 | |
renumber_decision | 免费 | 重新编号并重写每一次提及(审查,然后) confirm(中文(简体) ) | |
check_decisions | 免费 | 调试链接, 决定审查, 无效的记录 | |
import_decisions | 免费 | 小时 | 折叠 adr/*.md 手编辑和新文件输入模型 |
license_status | 免费 | 层次、能力,以及——当没有许可证时——究竟为什么 | |
explain_c4 | 免费 | 每个图级用于什么;6个专题深度 | |
get_session_settings | 免费 | 有效的设置和决定每个声音的声音 | |
set_session_settings | 免费 | 本会话的偏好, 每个字段合并 | |
read_config | 免费 | 小时 | 读取和验证 .crayon/config.json |
write_config | 免费 | 小时 | 合并写作,拒绝计划拒绝的任何东西 |
detect_stack | scan | 小时 | Next.js / react /.NET / Java,外加部署证据 |
scan_repo | scan | 小时 | 从代码中衍生出一个 C4 模型 |
extract_deployment | scan | 小时 | Dockerfiles + 作曲 ~ 部署画布, 声明它做了什么 没有 读取 |
extract_flows | scan | 小时 | 从指定的切入点追踪 F4 流量 |
merge_model | scan | 小时 | 重新扫描一下,不要丢弃装饰 |
propose_config | scan | 小时 | 措施、提议和重新措施 |
list_enrichment_tasks | enrich | 每个描述仍然缺失, 及其源文件 | |
apply_enrichment | enrich | 写他们,永远不要覆写什么 |
资源
| URI 资源 | 这是什么 |
|---|---|
crayon-c4://capabilities | 先念此经. 元素类型和每个元素的用途, 封装规则,什么 subject 指每个关卡,关系语义,DC-*约束的完整目录 |
crayon-c4://guide/authoring | 传言指南,包括部署和行为片合同 |
crayon-c4://schema/model | 已公布型号为JSON Schema(2020-12草案) |
crayon-c4://schema/config | 这个 .crayon/config.json 计划 |
crayon-c4://schema/decisions | 决定(ADR) |
crayon-c4://examples/c4-only | 最小的完整型号 |
crayon-c4://examples/full-stack | 三个片段, 显示交叉连接 |
crayon-c4://model/current | 此会话的模式正在编辑,包括未写编辑 |
crayon-c4://config/current | 磁盘上的这个寄存器配置 |
crayon-c4://license | 本届会议的级别和能力 |
提示
| 提示 | 参数 | 它让你经历的 |
|---|---|---|
author-c4-model | system, (中文(简体) ), depth | 了解系统,然后自下而上地构建系统,以便级别一致 |
add-deployment-view | environments | 在集装箱实际运行的地方,连接回它们 |
add-flow | flow | 在一次互动中会发生什么,在进行互动的各要素之间 |
tune-config | —— 说 | 使生成的图表可以读取——在改变任何东西之前进行测量 |
enrich-descriptions | —— 说 | 写什么扫描不能推断, 不重写一个人做了什么 |
它写的文件
仅在 write_model { confirm: true },并且只在模型旁边:
| 文件 | 为什么这很重要 |
|---|---|
crayon-c4-project.json | 那个模特儿 上面印有一条线索的新线 所以重写是干净的 Git diff |
crayon-c4-provenance.json | 上次扫描的结果是什么? 就是让一个后期的重播 告诉一个名字 个人 从代码上写到——没有它,合并就悄悄地取回代码的名字 |
crayon-c4-enrichment.json | 每个缺失的描述均应取自 |
adr/*.md | 每个决定一个文件,只有在模型携带任何文件时才写出. 同样的格式 merge_model 直接编辑一个,或者写一个全新的,真正的双向频道 |
全部四人承诺. .crayon/license,如果你使用一个, 应该在 .gitignore。 。 。 .
许可证和隐私
CRAYON-C4为专有;参见 LICENSE。列出捆绑的开源依赖
通知在 THIRD-PARTY-NOTICES.txt。 。 。 .
服务器只读取您指向的工作空间, 并且只在您调用工具时 说它有。 离线层不提出任何网络要求.