甜蜜之家3D MCP插件
  
一个插件 甜蜜的家3D 其将MCP(模型上下文协议)服务器直接嵌入应用程序中。让Claude和其他人工智能助手通过HTTP控制Sweet Home 3D——创建墙壁、放置家具、渲染照片等等——而无需任何外部代理或单独的服务器进程。
Claude Desktop / Claude Code
│ HTTP (JSON-RPC 2.0)
▼
┌─────────────────────────────────────┐
│ Sweet Home 3D + MCP Plugin │
│ Built-in HTTP server on port 9877 │
│ http://127.0.0.1:9877/mcp │
└─────────────────────────────────────┘截图
需求
| 要求 | 版本 |
|---|---|
| 甜蜜的家3D | 6.0或更高版本 |
| Java(与SH3D或系统捆绑在一起) | 11或更高版本 |
注: Sweet Home 3D附带了捆绑的JRE。请确保它是Java 11+。由于以下原因,非常旧的SH3D版本(JRE 1.8的32位Windows安装程序)将无法加载插件 UnsupportedClassVersionError.安装
步骤1。 下载最新 .sh3p 文件来自 发布.
步骤2。 将其复制到您的Sweet Home 3D插件文件夹:
| OS | 插件文件夹 |
|---|---|
| 窗户 | %APPDATA%\eTeks\Sweet Home 3D\plugins\ |
| macOS | ~/Library/Application Support/eTeks/Sweet Home 3D/plugins/ |
| Linux | ~/.sweethome3d/plugins/ |
步骤3。 重启《甜蜜家园3D》。MCP服务器在端口上自动启动 9877.
您可以验证它是否正在运行: 工具→ MCP服务器。.. 显示服务器状态。
克劳德配置
添加到您的Claude桌面 claude_desktop_config.json:
{
"mcpServers": {
"sweethome3d": {
"type": "http",
"url": "http://localhost:9877/mcp"
}
}
}对于Claude Code,创建 .mcp.json 在您的项目目录中:
{
"mcpServers": {
"sweethome3d": {
"type": "http",
"url": "http://localhost:9877/mcp"
}
}
}该插件还内置了 “自动配置克劳德桌面” 按钮位于 工具→ MCP服务器。.. 自动写入此配置。
可用命令
12个类别的42个命令。
场景
| 命令 | 描述 |
|---|---|
get_state | 全场景状态:墙壁、家具、房间、相机、标签、标高 |
clear_scene | 从场景中删除所有对象 |
墙
| 命令 | 描述 |
|---|---|
create_wall | 两点之间的单墙 |
create_walls | 矩形房间(4面连接墙) |
modify_wall | 更改高度、厚度、颜色、弧度、坐标 |
delete_wall | 按ID删除墙 |
connect_walls | 连接两面墙以进行正确的角渲染 |
房间
| 命令 | 描述 |
|---|---|
create_room_polygon | 从多边形点阵列中的房间 |
modify_room | 更改名称、地板/天花板颜色、可见性 |
delete_room | 按ID删除房间 |
家具
| 命令 | 描述 |
|---|---|
list_categories | 所有家具目录类别,包括项目数量 |
list_furniture_catalog | 浏览目录;按名称、类别或类型筛选 |
place_furniture | 在场景中放置目录项 |
modify_furniture | 按ID移动、旋转、调整大小、重新着色家具 |
delete_furniture | 按ID删除家具 |
duplicate_objects | 按ID复制一个或多个对象 |
group_furniture | 将多个部分组合成一个对象 |
ungroup_furniture | 将一组分成单独的部分 |
门窗
| 命令 | 描述 |
|---|---|
place_door_or_window | 从目录中放置到墙上(自动计算位置和角度) |
纹理和外观
| 命令 | 描述 |
|---|---|
list_textures_catalog | 浏览纹理目录;按名称或类别筛选 |
apply_texture | 将目录纹理应用于墙侧或房间表面 |
set_environment | 地面/天空颜色、照明、墙透明度、绘图模式 |
3D形状
| 命令 | 描述 |
|---|---|
generate_shape | 创建自定义三维几何体:基本体(长方体、球体、圆柱体、圆锥体、楔形、拱形、楼梯、圆环体、半球体、管道)、拉伸、网格和CSG布尔运算(并集、相减、相交) |
注释
| 命令 | 描述 |
|---|---|
add_label | 二维平面图上的文字注释 |
add_dimension_line | 带自动偏移的测量线 |
相机
| 命令 | 描述 |
|---|---|
set_camera | 切换到顶部/观察者模式;设定位置, lookAt 点,或 target 对象 |
store_camera | 将当前视点另存为命名书签 |
get_cameras | 列出所有已保存的相机视点 |
多级
| 命令 | 描述 |
|---|---|
add_level | 添加新标高(楼层/楼层) |
list_levels | 列出所有级别;显示当前选定的内容 |
set_selected_level | 切换活动级别 |
delete_level | 删除标高及其所有对象 |
渲染和导出
| 命令 | 描述 |
|---|---|
render_photo | 光线追踪3D渲染(阳光流);标准或俯视鸟瞰图;内联JPEG或保存的PNG |
export_plan_image | PNG格式的二维平面图 |
export_svg | SVG二维平面图 |
export_to_obj | 3D场景为波前OBJ(ZIP:OBJ+MTL+纹理) |
保存/加载
| 命令 | 描述 |
|---|---|
save_home | 将场景保存到 .sh3d 文件 |
load_home | 加载a .sh3d 文件,替换当前场景 |
检查点(撤消时间线)
| 命令 | 描述 |
|---|---|
checkpoint | 保存内存中的快照(可选描述) |
restore_checkpoint | 从快照还原(支持强制模式) |
list_checkpoints | 列出当前撤消光标位置的所有快照 |
批次
| 命令 | 描述 |
|---|---|
batch_commands | 在一个请求中执行多个命令 |
坐标系
- 单位: 厘米 (500=5米)
- X轴:右,Y轴: 下 (屏幕坐标)
- 所有对象ID都是稳定的UUID——可以在多个调用中安全使用
从源头构建
先决条件: Java 11+、Maven 3.6+(或使用附带的 mvnw 包装)。
# 1. Clone
git clone https://github.com/grimashevich/sweethome3d-mcp-server.git
cd sweethome3d-mcp-server
# 2. Obtain SweetHome3D.jar (copies from your SH3D installation or downloads it)
./scripts/setup-dev.sh # macOS / Linux / Git Bash on Windows
# scripts\setup-dev.bat # Windows Command Prompt
# 3. Build
./mvnw clean package
# 4. Run tests
./mvnw test
# The plugin artifact is at:
# target/sh3d-mcp-plugin-1.0.0.sh3p为什么是设置脚本?SweetHome3D.jar是从git中排除的46 MB二进制文件。 该脚本首先检查您本地的Sweet Home 3D安装(最快,脱机工作), 然后回到从SourceForge下载。 三个Java3D JAR(j3dcore,j3dutils,vecmath)包含在lib/直接。
建筑
该插件是一个独立的组件,没有外部运行时依赖关系:
plugin--入口点(SH3DMcpPlugin),设置对话框http--流式HTTP MCP服务器(JSON-RPC 2.0,端口9877)command--42个命令处理程序,通过自动注册CommandRegistrybridge-威胁安全的甜蜜家园3D API包装(HomeAccessor通过EDT,CheckpointManager,ObjectResolver)protocol--手写JSON解析器(零外部依赖)config--插件设置,Claude Desktop自动配置器
看 建筑.md 用于完整的设计、ADR决策和序列图。
添加新命令
只需要一个类——注册表会自动拾取它:
public class MyCommandHandler implements CommandHandler, CommandDescriptor {
@Override
public Response execute(Request request, HomeAccessor accessor) {
// All Home mutations must run on the Event Dispatch Thread:
Object result = accessor.runOnEDT(() -> {
Home home = accessor.getHome();
// ... do something
return "done";
});
return Response.success(result);
}
@Override
public String getDescription() { return "Does something useful."; }
@Override
public Map getSchema() {
return SchemaBuilder.object()
.prop("name", "string", "Object name")
.required("name")
.build();
}
}然后在中注册 SH3DMcpPlugin.createCommandRegistry():
registry.register("my_command", new MyCommandHandler());看 贡献.md 获取完整的开发指南。
许可证
GNU通用公共许可证v2.0——请参阅 许可证 了解详情。
此插件使用 甜蜜的家3D 插件API(GPL v2)和Java3D(BSD/JOGL许可证)。
