使用说明
彭罗斯MCP
基于以下内容构建的图表生成系统 CMU的彭罗斯发动机,作为CLI工具公开 主控程序 服务器。
Penrose通过受约束的数值优化将数学对象和关系的声明性描述转化为漂亮的SVG图。该项目封装了该引擎,以便LLM代理(在Cursor、Claude Desktop、VS Code等中)和命令行用户可以生成图表,而无需直接学习Penrose的三语言系统。
快速开始
安装
npm install
CLI使用情况
列出可用的图表域:
npx tsx src/cli/penrose-render.ts list-domains
获取有关域的详细信息(类型、谓词、样式、示例):
npx tsx src/cli/penrose-render.ts domain-info set-theory
渲染图表:
npx tsx src/cli/penrose-render.ts render \
-d set-theory \
-s venn \
-S "Set A, B, C
Subset(B, A)
Subset(C, A)
Disjoint(B, C)
AutoLabel All" \
-o diagram.svg
使用不同的变体种子作为替代布局:
npx tsx src/cli/penrose-render.ts render \
-d set-theory -s venn \
-S "Set A, B
Subset(B, A)
AutoLabel All" \
-v "seed42" -o diagram.svg
MCP服务器(用于LLM代理)
通过stdio运行MCP服务器:
npx tsx src/mcp/server.ts
光标配置
添加到光标MCP设置(.cursor/mcp.json 或全局设置):
{
"mcpServers": {
"penrose": {
"command": "npx",
"args": ["tsx", "src/mcp/server.ts"],
"cwd": "/path/to/penrose_mcp"
}
}
}
Claude桌面配置
添加 claude_desktop_config.json:
{
"mcpServers": {
"penrose": {
"command": "npx",
"args": ["tsx", "src/mcp/server.ts"],
"cwd": "/path/to/penrose_mcp"
}
}
}
可用域名
| 域 | 描述 | 样式 |
|---|---|---|
set-theory |
具有子集、不相交和相交关系的集合 | venn (维恩图), tree (防护树) |
linear-algebra |
向量空间、向量、正交性 | vectors (箭头从原点) |
graphs |
具有邻接关系的节点和边 | directed (带箭头), undirected |
euclidean-geometry |
点、线段、三角形、角度 | geometry (经典建筑风格) |
MCP工具
当作为MCP服务器连接时,LLM可以使用以下工具:
| 工具 | 说明 |
|---|---|
list_domains |
列出所有可用的图表域及其样式 |
get_domain_info |
获取域的类型、谓词、样式和示例 |
render_diagram |
编译Penrose图并将其渲染为SVG |
服务器还公开了一个 penrose_usage_guide 提示任何MCP客户端都可以获取完整的使用说明。
运作原理
Penrose使用三种声明性语言:
- 领域 --定义存在哪些类型的对象以及可能存在的关系
- 风格 --定义对象的视觉渲染方式(形状、约束、布局规则)
- 物质 --声明特定的对象实例及其关系(每个图的输入)
域+样式对是一个可重用的库。根据图表,物质是唯一会发生变化的东西。该项目捆绑了几个域+样式对,并允许您通过编写(或让LLM编写)Substance程序来生成图表。
创建新域名
要添加新的图表域,请执行以下操作:
- 在下面创建一个目录
domains/使用您的域名 - 写一个
.domain带有类型和谓词声明的文件 - 写一个或多个
.style定义视觉映射的文件 - 添加示例
.substance文件 - 创建一个
meta.json为文件编制索引
请参阅现有域以供参考。这 彭罗斯文件 有编写域和样式程序的全面指南。
项目结构
src/
core/
renderer.ts -- Penrose compile → optimize → toSVG pipeline
registry.ts -- Scans and indexes bundled domain+style pairs
types.ts -- Shared TypeScript interfaces
cli/
penrose-render.ts -- CLI entry point
mcp/
server.ts -- MCP server entry point
tools/ -- MCP tool handlers
resources/ -- MCP resource handlers
domains/ -- Bundled domain+style libraries
看 建筑.md 详细的技术设计。
路线图
- []带有HTTP传输的Docker容器,用于远程MCP访问
- []参数图调整的会话状态(热启动重新优化)
- []其他领域:软件架构、ER图、网络拓扑
- []用于高性能集成的gRPC网关
- []用于交互式图表编辑的Web UI
许可证
麻省理工学院
致谢
建立在 彭罗斯 作者:卡内基梅隆大学的叶嘉欣、倪、克里格、玛扬、怀斯、奥尔德里奇、阳光和克兰。
叶等著,《彭罗斯:从数学符号到美丽的图表》,ACM翻译。图表。39、4(信号图2020)。