mcpField
A
archlang-mcp

archlang-mcp

本地服务
archlang.uk媒体与设计26今天更新

关于 archlang-mcp

archlang-mcp 是用于编写、检查和修复代码化建筑平面图的 stdio MCP 服务。它将 ArchLang 库封装为 MCP 工具,供原生 MCP 客户端使用,并非用于替代 ArchLang 命令行工具。

主要功能

  1. 01将平面图编译为 SVG、文本、JSON 或 PNG
  2. 02描述房间、面积和相邻关系
  3. 03检查规则并验证平面图
  4. 04修复并补全平面图源代码
  5. 05提供语言规范与结构定义

适用场景

  1. 01渲染代码化平面图以供审阅
  2. 02根据设计概要检查平面图
  3. 03修复布局问题并补齐图纸细节

MCP 相关

stdio 服务将 ArchLang 操作作为 MCP 工具公开,并以资源形式提供语言规范、结构定义和语法。工具接收平面图源代码并返回结构化结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chanmeng666-archlang": {
"command": "npx",
"args": [
"-y",
"@chanmeng666/archlang-mcp"
]
}
}
}
启动命令npx -y @chanmeng666/archlang-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@chanmeng666/archlang-mcp0.2.29

工具

10

收录的工具列表 · 更新于 今天

参数类型必填说明
levelinteger否仅渲染多层平面图中的此楼层。未声明的楼层会报错,不会猜测。
formatenum否svg(默认)或 txt(零依赖 ASCII)。svg | txt
sourcestring否ArchLang 源代码(一个 `plan "…" { … }`)。请提供此项或 plan_json。
overlayenum否绘制可选的流线覆盖层(仅限 SVG)。circulation
plan_jsonobject否Plan JSON(RPLAN 结构),可替代 `source`;会先转换为 .arch 再编译。
accessibleboolean否输出 <title>/<desc>/role/aria 无障碍元数据(仅限 SVG)。

详细介绍

@chanmeng666/archlang-mcp

一个用于 ArchLang 的 Model Context Protocol 服务,可通过任何支持 MCP 的主机,以代码编写、检查和修复架构平面图。

它是一个基于 @chanmeng666/archlang 库的轻量 stdio 适配层(不启动子进程,也不重新实现):每个工具都封装一个纯导出函数。核心保持零依赖——MCP SDK 仅存在于此软件包中。

何时优先使用 CLI

ArchLang 面向 Agent 的主要接口是原生支持 Agent 的 archlang CLI,而非此服务。CLI 在调用前不会占用 Agent 上下文窗口,而 MCP 工具架构则会永久占据窗口。如果你的 Agent 已有 shell,请优先使用:

npx -y @chanmeng666/archlang context     # the whole language + workflow + CLI + errors, one call
npx -y @chanmeng666/archlang compile plan.arch -o out.svg --json

执行 npm i -g @chanmeng666/archlang 后,相同的调用命令是 archlang context 和 archlang compile …。此软件包也会安装 arch 别名,但在 Linux、macOS 和 Git Bash 上,coreutils 自带同名的 arch,因此在这些环境中直接运行 arch 会调用错误的程序。

此 MCP 服务的用途是让原生支持 MCP 的主机能够通过注册表发现 ArchLang,并在没有 shell 的情况下驱动它。它已列入官方 MCP 注册表,名称为 io.github.ChanMeng666/archlang-mcp。它是用于提高可发现性的渠道,而非替代方案。参见 ADR 0012(该文档修订了 ADR 0009 中关于优先分发而非协议的立场)。

服务说明

在 initialize 时,服务会发送一段简短的 instructions 字符串,支持该功能的主机会将其添加到模型上下文中:先读取 archlang://spec 资源,再编写 .arch → compile(和 fix)→ describe → 使用 strict:true 执行 validate → 完成操作,然后再导出。这是 SKILL.md 中工作循环的精简版;测试会确保其中列出的命令与 CLI 清单一致,且顺序符合该循环。

工具

每个工具都接收 ArchLang source(plan "…" { … } 字符串),并返回结构化 JSON。compile 还接受 plan_json(Plan-JSON / RPLAN 结构)。

工具功能
compile将源代码(或 plan_json)渲染为 SVG,或渲染为零依赖的 ASCII(format:"txt")、对象形式的 Plan JSON(format:"json",结构与 plan_json 接受的相同),或 PNG 图像(format:"png",使用 archlang preview 的宽度,除非 width 覆盖该值;宽度限制在指定范围内;需要可选依赖 @resvg/resvg-js,而 .mcpb bundle 不包含它)。可选启用 accessible、overlay:"circulation"。返回输出和诊断信息。多层平面图会在 pages[] 中返回每一层;level 可渲染其中一层。
describe语义事实(房间、面积、相邻关系、门、流线、区域、楼层、精确的 floor_polygon/floor_circle 形状,以及说明哪些位置由用户手动编写、哪些由解析器推导的 freedom 报告)——无需图像即可验证意图。
lint提供建议性的 W_* 正确性警告(可能包括用于推断房间用途的修复项 W_ALIAS_MATCH,该用途是从间接标签别名推断得出的);profile 用于选择规则集。
validate解析 + 推导 + lint,作为交付门槛。strict 会在出现警告时失败;graph 会根据预期的房间图检查室内门的相邻关系;intent 会根据概要的约定进行门控(见 archlang://intent-schema)。
score连续型意图 METER:衡量平面图满足概要要求的程度(satisfied/total/score/subscores)。仅衡量,不设门槛。
repair显式修正器:将家具移出墙体/门口/开启范围 → 新的 .arch 源代码 + 变更日志。不会添加门或窗。
finish完成图纸:为没有家具的房间添加家具,然后补上缺失的 paper、scale、dims auto、title、schedule rooms 和 legend → 新的 .arch 源代码 + 变更日志。只补充缺失项;only 仅运行一个阶段(furnish 或 sheet);reissue 可以替换 paper/scale。
fix应用平面图诊断信息中可由机器应用的修复项(语法修正器;有界不动点)。unsafe 会将范围扩展到 maybe-incorrect。
suggest提供建议性的门/窗语句(每条语句都通过稳定引用——用户编写的 ID 或唯一类别——或绝对坐标来引用墙体,绝不使用可重新绑定的位置 ID),以解决无法到达的房间/没有窗户的卧室问题——仅返回数据,不会应用。
complete返回指定源字节偏移处、作用域内的 LSP 补全项。
link返回两个 URL,可在浏览器中显示平面图且无需安装任何内容:playground(托管的编辑器,含渲染结果)和 embed(仅平面图,供 iframe 使用),以及压缩后平面图的大小 bytes,还有 ok(平面图无法编译时附带 errors 计数;仍会生成链接,页面会显示诊断信息)。平面图会放在 URL 片段中。需要导出 ./link 的 core;较旧版本会返回 ok:false 及所需版本。
此处 compile 的 accessible 有何作用——以及它不做什么

accessible: true 会为 SVG 添加 <title>/<desc> 对,并在根元素上设置 role="img";这就是此兼容层所提供的全部选项。**v1.36 的元素控件无法通过 MCP 使用。**它们需要同时设置 annotate 和 accessible,而此工具只会在 format:"txt" 时传递 annotate;它还将 accessible 作为布尔值,因此也无法请求 { idPrefix } 这种形式来避免同一 HTML 页面上的多个方案共享 arch-title/arch-desc。

如果宿主需要绘图可通过键盘操作并兼容屏幕阅读器(每个元素上都有 data-arch-primary、role="button"、aria-label),就必须调用库。CLI 也无法生成这种绘图:annotate 没有对应的标志,因此 archlang compile --accessible 也只会生成 <title>/<desc> 对。

import { compile } from "@chanmeng666/archlang";
compile(src, { annotate: true, accessible: { idPrefix: "plan-7" } });

输出约定、嵌入方仍需负责的事项,以及已知的屏幕阅读器限制,详见语言参考。

资源

URI内容
archlang://spec完整语言规范,汇集于一个页面(spec.llm.md)。
archlang://context完整的 Agent 上下文:规范 + 工作流 + CLI 参考 + 错误目录(llms-full.txt)。
archlang://schemaPlan-JSON 编译输入的 JSON Schema(2020-12)。
archlang://grammar用于保证生成结果可解析的 GBNF 约束解码语法。
archlang://intent-schemaBrief 的 Intent 的 JSON Schema(2020-12)——即 validate 的 intent 和 score 的 brief 所采用的结构。

安装

Claude Code
claude mcp add archlang -- npx -y @chanmeng666/archlang-mcp
Claude Desktop

在 claude_desktop_config.json 中添加(Settings → Developer → Edit Config):

{
  "mcpServers": {
    "archlang": {
      "command": "npx",
      "args": ["-y", "@chanmeng666/archlang-mcp"]
    }
  }
}
Cursor

在 .cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局)中添加:

{
  "mcpServers": {
    "archlang": {
      "command": "npx",
      "args": ["-y", "@chanmeng666/archlang-mcp"]
    }
  }
}
VS Code

在 .vscode/mcp.json 中添加:

{
  "servers": {
    "archlang": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@chanmeng666/archlang-mcp"]
    }
  }
}

许可证

MIT © Chan Meng

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。