quote-mcp-server
MCP server for hard decoration quoting: parses DXF floor plans, reconstructs room topology, computes material quantities, and generates deterministic itemized quotes with tiered pricing. Exposes tools parse_dxf, compute_quote, and generate_report via stdio.
README
🏗️ decoration-quote-engine
装修硬装报价引擎:DXF 墙线拓扑重建 → 工程量提取 → 确定性报价 → MCP Server
配套智能体项目:interior-ai-agent(LangGraph 编排,经 MCP 调用本引擎)
✨ 它做什么
输入一张量房后的原始墙体图(DWG→DXF),输出一份可直接给客户看的硬装报价单:
新块1.dxf(60.48㎡ 两室两厅)
→ 7 个房间自动围合 + 干湿区分类(客厅/餐厅/卧室=dry,厨/卫/阳台独立)
→ 门 5 / 窗 5 / 垭口 1 自动识别
→ 硬装报价 ¥92,806.79,69 项明细(JSON + 打印友好 HTML)
没有一次 LLM 调用——几何计算和算钱全部是确定性代码,可复现、可审计。
🧠 核心设计
1. 墙线拓扑重建(takeoff.py)
原始墙体图往往没有闭合的房间多段线。本引擎用 shapely.polygonize + networkx
从纯墙线段自动围合房间,再按文字标注/面积启发式判定房间功能(厨房/卫生间/阳台),
输出带置信度的工程量 JSON(房间面积/周长、墙面净面积、门窗洞口统计)。
2. 规则报价引擎(cost.py)
单价表按 zone(dry/wet/kitchen/balcony/all)× basis(计量依据)驱动,内置一线业务规则:
| 规则 | 说明 |
|---|---|
| 门按套计 | 木门 1298 元/套;门套按 2×高+宽 算延米,入户门单边、垭口双边 |
| 瓷砖品牌统一 | 同空间墙/地砖自动选同一品牌(两种品牌有 200 元小单费) |
| 地面材质分支 | 铺瓷砖→含铺贴人工、免地垫宝;铺地板→需地垫宝找平、踢脚线赠送 |
| 水电分档 | 1室1厅≤60平 8500;2室以上≤75平 10000;>75平按建筑面积×140(建面=套内/0.75) |
| 石膏板平顶 | 只算衣柜柜头:投影面积×(柜深/柜高),非全屋满吊 |
| 橱柜/定制柜估算 | 按套内面积-户型对照表自动估延米/投影面积,可用实测值覆盖 |
| 提问点机制 | 层高、卧室瓷砖还是地板、下沉找平——计算前必须确认 |
3. MCP Server(src/mcp_server/server.py)
引擎以 MCP stdio 协议对外暴露 3 个工具,可被 LangGraph Agent、Claude Desktop、Cursor 等任何 MCP Host 调用:
| Tool | 输入 → 输出 |
|---|---|
parse_dxf |
DXF 路径 → 工程量 JSON + confidence + 房间摘要 |
compute_quote |
takeoff JSON + ProjectConfig(层高/地面材质/品牌偏好/tier)→ 报价 JSON |
generate_report |
报价 JSON → 打印友好 HTML |
4. 档次分档(tier)—— 激活「预算调高 / 调低」
单价表(config/unit_price_nanjing_mq.csv)每行带 tier 列:最简 / 标准 / 轻奢 / 通用
(不分档)。引擎按档位选单价,实现同一套工程量下的预算升降:
标准为锚点(即原南京美全价目表基线);最简/轻奢缺项时自动回退到标准,保证任何档位都能算全。- 分档价差覆盖:木门、强化地板、瓷砖(300/800 系列)、钛合金门、集成吊顶、开关插座、定制柜等主材。
- 语义归一:
低档/经济→最简,中档/性价比→标准,高档/豪华→轻奢(大小写与别名都接受)。 intent_node解析「预算调高」→高档→轻奢,「预算调低」→低档→最简,金额随之真实变化。
📁 项目结构
decoration-quote-engine/
├── src/
│ ├── core/models.py # 数据模型(Takeoff / HardQuote / ProjectState)
│ ├── agents/hard/
│ │ ├── takeoff.py # DXF 解析 + 墙线拓扑重建 + 工程量提取
│ │ ├── cost.py # 规则报价引擎(ProjectConfig + zone/basis 匹配)
│ │ └── quote_report.py # 报价 JSON → HTML
│ └── mcp_server/server.py # quote-mcp-server(FastMCP stdio)
├── config/
│ └── unit_price_template.csv # 单价表格式模板(真实价目表不入库)
├── tests/ # pytest(takeoff 回归 + MCP 全链路冒烟)
└── 装修报价智能体_技术方案文档.md
🚀 快速开始
pip install -e . # 或 pip install -r requirements.txt
# 1) DXF → 工程量
python -m src.agents.hard.takeoff path/to/户型.dxf output/takeoff.json
# 2) 工程量 → 报价(需按 config/unit_price_template.csv 格式准备单价表)
python -m src.agents.hard.cost output/takeoff.json config/你的单价表.csv output/quote.json
# 2b) 带档次:--tier 最简/标准/轻奢(或 低档/中档/高档)
python -m src.agents.hard.cost output/takeoff.json --tier 轻奢 output/quote_lux.json
# 3) 报价 → HTML
python src/agents/hard/quote_report.py output/quote.json output/quote.html
# 或者直接起 MCP Server
quote-mcp-server # stdio transport
# 测试
pytest tests/ -q
⚠️ 已知边界
- 单价表基于南京市场(2026),其他城市需替换
config/下的价目表 - 房间围合依赖墙线基本闭合;低置信度结果会在 JSON 中给出 warnings,由上层做人工确认(HITL)
- 橱柜延米/衣柜投影面积默认按户型规则估算,精确报价需实测值覆盖
📜 License
MIT © 2026
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。