用于ETABS结构分析与Claude桌面集成的专业级MCP服务器
ETABS FastMCP 服务器提供了Claude桌面与ETABS(扩展三维建筑系统分析)结构分析软件之间的无缝集成。这个专业级解决方案采用优化了可扩展性、可靠性和易用性的混合Python+C#架构。
┌─────────────────┐ JSON/stdio ┌───────────────────┐ COM API ┌─────────────┐
│ Claude AI │ ◄────────────► │ Python FastMCP │ ◄──────────► │ C# Connector │ ◄──────► │ ETABS │
│ Desktop │ │ Server │ │ │ │ 软件 │
└─────────────────┘ └───────────────────┘ └─────────────┘ └─────────────┘
关键组件:
克隆仓库:
git clone <repository-url>
cd ETABSFastMCP
安装Python依赖项:
cd python-server
pip install -r requirements.txt
构建C#连接器:
cd ../csharp-connector
msbuild ETABSConnector.csproj /p:Configuration=Release
配置Claude桌面:
config/claude_desktop_config.json的内容复制到你的Claude桌面配置中启动ETABS(可选 - 服务器可以自动启动)
测试连接:
# 在Claude桌面中尝试:
"连接到ETABS并创建一个新的空白模型"
创建你的第一个结构元素:
# 给Claude的示例命令:
"在坐标(0, 0, 0)处创建一个点,并设置UZ约束"
"从(0, 0, 0)到(10, 0, 0)创建一个框架,使用W14X90截面"
connect_to_etabs() - 连接到ETABS应用程序create_blank_model() - 创建新的空白模型get_connection_status() - 检查连接状态disconnect_from_etabs() - 从ETABS断开连接create_point(x, y, z, name?, restraints?) - 创建结构点get_point(name) - 获取点信息list_points() - 列出模型中的所有点modify_point(name, x?, y?, z?, restraints?) - 修改点属性delete_point(name) - 从模型中删除点create_frame(start_x, start_y, start_z, end_x, end_y, end_z, name?, section?, material?) - 创建框架元素get_frame(name) - 获取框架信息list_frames() - 列出模型中的所有框架modify_frame(name, section?, material?) - 修改框架属性delete_frame(name) - 从模型中删除框架save_model(file_path?) - 保存当前模型health_check() - 检查系统健康状况# 通过Claude桌面对话:
"连接到ETABS并创建一个新的空白模型"
"创建以下点:
- 点A在(0, 0, 0),具有UX, UY, UZ约束
- 点B在(10, 0, 0),具有UZ约束
- 点C在(10, 10, 0),具有UZ约束
- 点D在(0, 10, 0),具有UZ约束"
"创建框架连接这些点形成矩形框架:
- 框架AB从点A到B,使用W14X90截面
- 框架BC从点B到C,使用W14X90截面
- 框架CD从点C到D,使用W14X90截面
- 框架DA从点D到A,使用W14X90截面"
"列出模型中的所有框架并显示它们的属性"
"创建一个3D建筑物框架:
1. 在标高0处创建一个4x4点网格,间距8米
2. 在标高4米处创建另一个相同的网格
3. 使用W14X74截面连接对应的点形成垂直柱子
4. 使用W21X50截面连接每一层的点形成梁
5. 对所有基点应用铰接约束"
该系统设计易于扩展。要添加新的ETABS功能:
添加到C#连接器:
// 在CommandProcessor.cs中添加新情况:
"your_new_command" => ProcessYourNewCommand(command.Parameters),
// 实现方法:
private CommandResponse ProcessYourNewCommand(Dictionary<string, object> parameters)
{
// 在这里调用ETABS API
return new CommandResponse { Success = true, Data = result };
}
添加到Python服务器:
@mcp.tool()
async def your_new_function(param1: str, param2: float) -> Dict[str, Any]:
"""
新功能的描述
"""
try:
response = await connector.send_command("your_new_command", {
"param1": param1,
"param2": param2
})
return response
except Exception as e:
return {"success": False, "error": str(e)}
分析操作:
加载操作:
设计操作:
连接错误:
错误:"无法启动ETABS连接器"
- 确保已安装并授权ETABS
- 检查ETABSv1.dll是否可访问
- 验证已安装.NET Framework 4.8
权限问题:
错误:"访问ETABS API被拒绝"
- 如需,请以管理员身份运行
- 检查ETABS许可状态
- 验证COM对象注册
通信错误:
错误:"未收到ETABS连接器响应"
- 检查C#连接器构建成功
- 验证Python能否执行连接器
- 检查进程权限
通过设置环境变量启用详细日志记录:
set ETABS_MCP_DEBUG=1
Point3D:
{
"x": 0.0,
"y": 0.0,
"z": 0.0
}
Restraints:
{
"UX": true, // X方向平移
"UY": false, // Y方向平移
"UZ": true, // Z方向平移
"RX": false, // X方向旋转
"RY": false, // Y方向旋转
"RZ": false // Z方向旋转
}
Frame Properties:
{
"name": "F1",
"startPoint": {"x": 10, "y": 0, "z": 0},
"endPoint": {"x": 10, "y": 0, "z": 0},
"section": "W14X90",
"material": "A992",
"length": 10.0
}
git checkout -b feature/amazing-feature)git commit -m '添加神奇功能')git push origin feature/amazing-feature)此项目采用MIT许可证 - 详情参见LICENSE文件。
为结构工程社区打造,充满爱心的专业级生产就绪解决方案