背景:现在AI特别火,像claude code已经可以生成代码,编译,测试一条龙。遗憾的是它不能控制kanzi studio,本方案研究 kanzi studio的AI化。
1. 架构
claude code可以通过mcp控制kanzi studio。
MCP(Model Context Protocol)是Anthropic推出的开放标准,让AI工具能连接外部数据源和服务。把它想象成Claude Code的USB接口:插上不同的MCP服务器,Claude就获得了对应的能力。

技术选型
- MCP Server: C# 控制台程序,手写 JSON-RPC over stdio(约 200 行代码)
- 通信: Named Pipe(System.IO.Pipes)实现进程间双向通信
- 无外部依赖: 不需要任何第三方库或 SDK
MCP Server 提供的能力(第一版)
Claude Code 可以调用以下工具:
| 工具名 | 功能 |
|---|---|
kanzi_query_nodes | 按类型/名称/路径查询节点 |
kanzi_get_node_tree | 获取节点树结构 |
kanzi_list_node_types | 列出所有可用节点类型 |
文件清单
MCP Server(独立进程)
| 文件 | 作用 |
|---|---|
McpModels.cs | JSON-RPC 请求/响应数据结构 |
NodeModels.cs | 节点树数据结构 |
KanziMcpServer.cs | MCP 协议处理器,stdio 主循环 |
PipeClient.cs | Named Pipe 客户端,向 Kanzi 插件发送请求 |
Program.cs | 控制台程序入口 |
Kanzi 插件(现有命令行插件改造)
| 文件 | 作用 |
|---|---|
修改 Class1.cs | 添加 Named Pipe Server 监听 |
KanziMcpService.cs | 封装 Kanzi API,提供节点查询能力 |
2. 部署
2.1 安装 .NET 10.0 SDK
https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-10.0.202-windows-x64-installer
2.2 编译 MCP Server
cd McpServer
"C:\Program Files\dotnet\dotnet.exe" build
2.3 使用步骤
1. 编译插件 PluginKanziMCP.dll
2. 复制插件到 Kanzi 插件目录
C:\ProgramData\Rightware\Kanzi\3.9.8\plugins\
3. 启动 Kanzi Studio,加载插件
在插件菜单中点击 "KanziMCP Start/Stop" 激活 MCP 服务
4. 打开一个 Kanzi 项目
5. 配置claude项目根目录 .mcp.json
{
"mcpServers": {
"kanzi": {
"command": "C:/Program Files/dotnet/dotnet.exe",
"args": [
"run",
"--project",
"McpServer/KanziMcpServer.csproj"
],
"workingDirectory": "D:/chenchao/mysvnlocal/chenchao/06_Plugins/PluginKanziMCP",
"timeout": 5000
}
}
}
6. 配置项目 .claude/settings.local.json(自动启动 MCP 服务器)
{
"permissions": {
"allow": [
"mcp__kanzi__kanzi_query_nodes",
"mcp__kanzi__kanzi_list_node_types",
"mcp__kanzi__kanzi_get_node_tree"
]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"kanzi"
]
}
3. 测试方法
3.1 用 Claude Code 连接测试
进入 Claude Code 后输入 /mcp 查看mcpServers状态
3.2 建议的问法
请使用 MCP 工具列出 Kanzi 工程中所有 TextBlock2D 类型的节点及其路径
或者:
用 kanzi_query_nodes 工具,查询 type=TextBlock2D 的所有节点
3.3 强制使用 MCP 的技巧
- 明确指定工具名:使用 kanzi_list_node_types 工具
- 阻止读取本地文件:不要读取本地文件,只通过 MCP 工具访问 Kanzi
3.4 测试用例
用 MCP 工具列出所有 TextBlock2D 节点
用 MCP 工具查找预设件 Prefab 里面的 Image2D 节点
用 MCP 工具查找预设件 Prefab 里面的 Image2D 节点,名字是 ImagePrefab,列出它的属性
用 MCP 工具查找预设件 Prefab 里面的 Image2D 节点,名字是 ImagePrefab,列出它的所有子节点



4. 后续增强 MCP 功能计划
当前支持的功能
| 工具名称 | 功能描述 |
|---|---|
kanzi_query_nodes | 按类型/名称/路径查询节点 |
kanzi_get_node_tree | 获取节点树结构 |
kanzi_list_node_types | 列出支持的节点类型 |
扩展新功能需要修改的文件
添加新功能(如:获取节点属性、修改节点属性、创建节点等)需要同时修改以下 3 个文件:
1. KanziMcpService.cs(核心逻辑)
- 位置:
PluginKanziMCP/KanziMcpService.cs - 添加新的处理方法
- 示例:
public string GetNodeProperties(SimpleJson arguments)
{
var path = arguments["path"];
var node = FindNodeByPath(path);
if (node == null) return "{\"error\":\"Node not found\"}";
// 获取节点属性并返回 JSON
var props = new Dictionary<string, object>();
// ... 调用 Kanzi API 获取属性
return JsonSerialize(props);
}
2. KanziPipeServer.cs(路由分发)
- 位置:
PluginKanziMCP/KanziPipeServer.cs - 在
ProcessRequest的 switch 语句中添加新的 case - 示例:
case "kanzi_get_node_properties":
result = _mcpService.GetNodeProperties(argsJson);
break;
3. KanziMcpServer.cs(工具注册)
- 位置:
McpServer/KanziMcpServer.cs - 在
HandleToolsListAsync方法中注册工具定义 - 示例:
new
{
name = "kanzi_get_node_properties",
description = "Get properties of a specific node by path",
inputSchema = new
{
type = "object",
properties = new
{
path = new { type = "string", description = "Full node path" }
},
required = new[] { "path" }
}
}
建议新增的功能
| 工具名称 | 功能描述 | 优先级 |
|---|---|---|
kanzi_get_node_properties | 获取节点属性 | 高 |
kanzi_set_node_property | 设置节点属性值 | 高 |
kanzi_create_node | 创建新节点 | 中 |
kanzi_delete_node | 删除节点 | 中 |
kanzi_get_property_metadata | 获取属性元数据(类型、范围等) | 低 |

被折叠的 条评论
为什么被折叠?



