内容
# TSD MCP 服务器
> 基于人工智能的Tekla Structural Designer工程界面。通过模型上下文协议(MCP),使用自然语言查询、分析、审查和估算结构模型。
由结构工程师为结构工程师打造。该MCP服务器允许您用纯英文与打开的TSD模型对话 - 查询构件、审查设计状态、进行钢材估算和估算材料成本,无需点击TSD界面。






---
## 演示
> *"列出TSD模型中的所有构件"*
> *"哪些构件的设计检查失败了?"*
> *"显示给我利用率最高的构件"*
> *"生成钢材估算"*
> *"估算钢材成本为每吨4200美元"*
> *"这个模型中有多少吨HSS?"*
> *"是否有验证错误?"*
> *"告诉我构件B4869的信息"*
连接后,Claude查询实时TSD模型并立即返回结果。
---
## 什么是该项目?
MCP(模型上下文协议)是一种开放标准,允许AI助手连接到外部工具和数据源。该服务器通过官方远程API将Claude Desktop和Tekla Structural Designer 2025连接起来 - 为Claude提供对打开的结构模型的实时读取访问。
无需文件导出。无需复制粘贴。Claude直接与您在TSD中打开的模型对话。
---
## 您可以使用该项目做什么
**模型探索**
- 列出所有具有类型分类的构件
- 按类型或截面大小过滤构件
- 检查单个构件的详细信息,包括截面、材料和设计检查
- 获取完整的模型概览
**设计审查**
- 提取整个模型的利用率比率
- 确定失败的构件(UC ≥ 1.0)
- 标记接近极限的构件(0.90 ≤ UC < 1.0)
- 拉取按临界度排序的利用率最高的构件
- 获取验证错误和设计状态摘要
**钢材估算和估价**
- 生成完整的钢材估算,包括长度、每英尺重量、总重量和总吨位
- 按构件类型、截面类型或单个截面分解吨位
- 确定贡献最大的截面
- 按每吨成本估算材料成本
---
## 为什么创建该项目?
结构工程师花费大量时间浏览菜单、报告和电子表格,只是为了回答有关模型的一些简单问题。
该项目通过将Tekla Structural Designer远程API暴露给模型上下文协议(MCP),将AI直接带入结构工程工作流。
工程师可以简单地询问,而不是手动搜索对话框:
• 哪些构件失败了?
• 显示我所有的W33x130梁。
• 生成钢材估算。
• 估算结构钢材成本。
• 哪些截面贡献了最多的吨位?
目标是使工程数据对话化。
---
## 要求
- 安装并许可 **Tekla Structural Designer 2025** 的Windows PC
- 调用工具时,TSD必须 **运行** 且有模型 **打开**
- [Claude Desktop](https://claude.ai/download)
- [Node.js](https://nodejs.org)(LTS版本)
- **Visual Studio 2022或更高版本** (社区版免费)
- .NET 8.0
- Claude账户(推荐专业计划)
---
## 架构
Claude Desktop
↓ MCP
Node.js MCP服务器 (server/index.js)
↓ 子进程
C# 桥接器 (bridge/Program.cs)
↓ 远程API
Tekla Structural Designer 2025
↓
打开TSD模型
Node.js MCP服务器从Claude Desktop接收工具调用,并将命令作为子进程传递给C#桥接器。桥接器通过官方远程API连接到正在运行的TSD实例,并返回JSON结果。
---
## 安装
### 步骤 1 — 构建C#桥接器
1. 打开 **Visual Studio**
2. 创建新的 **控制台应用** (C#,.NET — 不是.NET Framework),命名为 `TsdBridge`,位置为 `C:\tsd-mcp\bridge`
3. 将框架设置为 **.NET 8.0**
4. 进入 **工具 → NuGet 包管理器 → 管理解决方案的 NuGet 包**,搜索 `TeklaStructuralDesigner.RemotingAPI` 并安装版本 **25.3.0**
5. 进入 **生成 → 配置管理器** 并将平台设置为 **x64**
6. 用此存储库中的 `bridge/Program.cs` 替换 `Program.cs` 的所有内容
7. 按 **Ctrl+Shift+B** 生成
编译后的桥接器将位于:
C:\tsd-mcp\bridge\ConsoleApp1\ConsoleApp1\bin\x64\Debug\net8.0\ConsoleApp1.exe
---
### 步骤 2 — 设置Node.js MCP服务器
打开命令提示符并依次运行以下命令:
```bash
mkdir C:\tsd-mcp\server
cd C:\tsd-mcp\server
npm init -y
npm install @modelcontextprotocol/sdk
```
打开 `C:\tsd-mcp\server\package.json` 并添加 `"type": "module"`:
```json
{
"name": "tsd-mcp-server",
"version": "1.0.0",
"type": "module",
"main": "index.js"
}
```
将此存储库中的 `server/index.js` 复制到 `C:\tsd-mcp\server\index.js`。
---
### 步骤 3 — 测试桥接器
用任意模型打开TSD,然后在命令提示符中运行:
"C:\tsd-mcp\bridge\ConsoleApp1\ConsoleApp1\bin\x64\Debug\net8.0\ConsoleApp1.exe" list_members
您应该会看到模型中所有构件的JSON数组。如果您看到 `"error": "TSD is not running"` — 请确保TSD已打开并加载了模型。
---
### 步骤 4 — 连接到Claude Desktop
打开 `%APPDATA%\Claude\claude_desktop_config.json` 并在 `mcpServers` 中添加 `tsd-mcp` 条目:
```json
{
"mcpServers": {
"tsd-mcp": {
"command": "node",
"args": ["C:\\tsd-mcp\\server\\index.js"]
}
}
}
```
完全退出Claude Desktop并重新打开。
---
### 步骤 5 — 验证是否正在运行
进入 **设置 → 开发者** 并确认 `tsd-mcp` 显示为 **正在运行**。
---
## 示例提示
**模型探索**
```
列出TSD模型中的所有构件
```
```
显示我所有的支撑
```
```
显示我所有的W 33x130构件
```
```
告诉我构件B4869的信息
```
**设计审查**
```
哪些构件失败了?
```
```
显示接近失败的构件
```
```
显示给我利用率最高的构件
```
```
给我一个设计状态摘要
```
```
有任何验证错误吗?
```
**钢材估算**
```
生成钢材估算
```
```
这个模型中有多少吨钢材?
```
```
W形构件有多少吨?
```
```
显示我最重的截面
```
**估价**
```
按每吨4200美元估算钢材成本
```
```
总吨位是多少?
```
---
## 示例输出
```json
{
"member": "B4869",
"section": "W 33x130",
"material": "Steel",
"utilization_ratio": 1.093,
"status": "Fail"
}
```
---
## 可用工具
| 工具 | 描述 |
|---|---|
| `list_tsd_members` | 列出所有具有推断类型(梁、柱、支撑、柱底板)的构件 |
| `list_tsd_members_with_sections` | 列出所有具有截面尺寸和类型的构件 |
| `get_tsd_member_details` | 返回指定构件的截面、材料和设计检查详细信息 |
| `get_tsd_members_by_type` | 按类型过滤构件 |
| `get_tsd_members_by_section` | 返回使用给定截面尺寸的所有构件 |
| `get_tsd_design_summary` | 按类型分组的构件计数 |
| `get_tsd_model_overview` | 包括截面和材料的完整模型库存 |
| `get_tsd_validation_errors` | 模型的验证警告和错误 |
| `get_tsd_design_status_summary` | 模型的通过/失败/警告计数 |
| `get_tsd_failing_members` | 所有UC ≥ 1.0的构件 |
| `get_tsd_members_near_limit` | 0.90 ≤ UC < 1.0的构件 |
| `get_tsd_top_utilized_members` | 按临界度排序的最高利用率构件 |
| `get_tsd_steel_takeoff` | 完整的钢材估算,包括长度、每英尺重量、总重量和按截面、截面类型和构件类型分组的吨位 |
| `get_tsd_takeoff_by_member_type` | 按梁、柱、支撑、柱底板分组的吨位 |
| `get_tsd_takeoff_by_section_type` | 按W形、HSS、角钢和其他截面类型分组的吨位 |
| `get_tsd_heaviest_sections` | 对模型贡献最大的截面 |
| `get_tsd_model_cost_estimate` | 给定每吨成本的估算材料成本 |
| `get_tsd_official_material_quantities` | 直接从Tekla Structural Designer返回官方材料数量,包括总质量、体积、表面积、连接件、钢筋和隐含碳 |
| `get_tsd_load_combinations` | 列出所有荷载组合,包括强度/服务分类、活动状态和元数据 |
---
## 当前限制
- 只读访问
- 仅限Tekla Structural Designer 2025
- 仅限Windows
- 需要活动的TSD会话
- 目前支持一次打开一个模型
---
## 技术说明
### 连接方法
桥接器使用以下方法发现正在运行的TSD实例:
```csharp
ApplicationFactory.GetRunningApplicationsAsync()
```
TSD必须已经运行。桥接器不会启动TSD。
---
### 对象层次结构
远程API遵循以下层次结构:
应用程序 → 文档 → 模型 → 构件 → 跨度 → 单元截面 → 物理截面
截面尺寸从 `PhysicalSection.LongName` 提取:
W 14x193
HSS 10x10x1/2
W 24x76
钢材估算计算直接来自TSD截面质量和构件长度属性 - 无需外部AISC数据库。
---
### 构件类型分类
远程API将所有构件公开为通用 `Member` 类型。类型根据TSD自己的命名约定推断:
| 前缀 | 类型 |
|---|---|
| B | 梁 |
| C | 柱 |
| BR | 支撑 |
| CBase | 柱底板 |
---
### x64要求
TSD远程API针对AMD64。桥接器必须编译为x64。编译为 `Any CPU` 可能会成功编译,但在运行时会失败。
---
## 路线图
**已完成**
- [x] 通过远程API连接实时TSD
- [x] 构件列表和类型分类
- [x] 截面和材料提取
- [x] 按类型和截面过滤构件
- [x] 单个构件详细信息检查
- [x] 模型概览
- [x] 验证错误提取
- [x] 设计状态摘要
- [x] 利用率比率提取
- [x] 失败构件(UC ≥ 1.0)
- [x] 接近极限的构件(0.90 ≤ UC < 1.0)
- [x] 利用率最高的构件
- [x] 按截面、截面类型和构件类型进行钢材估算
- [x] 最重截面分析
- [x] 材料成本估算
### 第一阶段 — 分析发现
- [x] 荷载组合
- [ ] 求解器警告
- [ ] 分析状态
### 第二阶段 — 结构力
- [ ] 构件力
- [ ] 基础反力
- [ ] 控制荷载组合
### 第三阶段 — 设计智能
- [ ] 解释为什么构件失败
- [ ] 优化建议
- [ ] 构件设计摘要
### 第四阶段 — 报告
- [ ] Excel导出
- [ ] CSV导出
- [ ] PDF报告
### 第五阶段 — AI工作流
- [ ] 自动QA/QC
- [ ] 设计审查助手
- [ ] 制造包生成
---
## 关于
由 **Vibhanshu Mishra, PE** 构建 — AG&E结构工程师事务所的结构工程师,位于德克萨斯州奥斯汀。
专门从事钢结构和关键任务结构。 为一个没有AI工具的领域构建AI工具。