gauss-mcp
基于 uv 管理的 Python MCP server,用于把本地图片导入为方案,并通过 job 协议提供可轮询的进度与结果。
当前 MVP 范围
- 输入本地图片路径
- 上传图片
- 判断普通图/全景图
- 普通图转全景图
- 可选清家具
- 全景图转点云
- 空间调整
- 导入方案
- 返回 design link
核心设计
- 普通 tool 调用保持短切片,不等待整条 job 结束
- 对外主流程暴露 7 个 job tools:
gauss_start_image_jobgauss_update_job_inputsgauss_wait_current_stagegauss_poll_jobgauss_get_jobgauss_resume_jobgauss_list_jobs
gauss_wait_current_stage是默认等待手段:服务端内部执行poll + wait,只等待“当前阶段结束”或一个timeout_sec切片,默认 60 秒;超时返回status=in_progressgauss_poll_job保留给 debug 或细粒度观察,不再要求 agent 自己 Bashsleep- 对于用户未提前给出的阶段参数,可以在
gauss_start_image_job时显式传null,等进入对应阶段前再通过gauss_update_job_inputs补齐 clear_furniture只在pano_clear阶段生效,level_height_mm只在gauss_import阶段生效- 当 job 进入缺参数阶段时,紧凑
job.required_user_input会给出结构化提问信号,default_allowed=false表示调用方必须先问用户,不能自行默认 gauss_wait_current_stage在这种场景下会返回status=needs_user_input,而不是继续自动等待- 通过阶段事件与阶段摘要给 skill 提供进度展示依据,而不是 fake percent
- 紧凑
job返回会在已有可展示全景图时携带pano_url,供 skill 直接展示图片反馈 - Claude Code skill 不会在任务一开始统一追问参数;只有在
pano_clear/gauss_import开始前才会询问对应设置 - 长耗时阶段按 15-30 秒节奏推进;同步 wait tool 会复用阶段轮询间隔,减少 transcript 噪音
gauss_import完成后会立即产出design_url,用户可以先打开方案预览;gauss_show_info继续补齐splat_url/drc_url- job 状态落盘到
IMAGE_TO_DESIGN_JOB_STATE_DIR,支持中断后继续查询或恢复
阶段顺序
uploadimage_typeimg2panopano_clearpano2pointcloudspatial_tunegauss_importgauss_show_info
开发
uv sync --dev
uv run pytest
uv run ruff check src tests
运行 MCP Server
uv run gauss-mcp
本地 smoke test
默认使用同步 wait tool:
uv run python scripts/e2e_image_to_plan.py /absolute/path/to/image.png
可选参数:
uv run python scripts/e2e_image_to_plan.py /absolute/path/to/image.png \
--floor-plan-name demo-plan \
--level-height-mm 2800 \
--no-clear-furniture \
--wait-timeout-sec 60
如需切回细粒度 poll 调试:
uv run python scripts/e2e_image_to_plan.py /absolute/path/to/image.png --mode poll
Claude Code Skill
Skill 位于:
.claude/skills/gauss-image-to-plan/SKILL.md
它基于 gauss_* job tools 做阶段式编排:
- 启动新任务时可先把未知的
clear_furniture/level_height_mm置为null,不阻塞上传与前置处理 - 当
job.current_stage == pano_clear且job.clear_furniture == null时,再询问是否清家具,并调用gauss_update_job_inputs - 当
job.current_stage == gauss_import且job.level_height_mm == null时,再询问层高,并调用gauss_update_job_inputs - 主路径优先使用
gauss_wait_current_stage,不再要求 agent 自己 Bashsleep - 长耗时阶段默认按 60 秒切片同步等待,减少 transcript 噪音
- 每次阶段推进都要同步当前阶段与阶段进度,不要只说“继续等待”
- 如果
status=needs_user_input或job.required_user_input非空,说明当前阶段在等用户补齐输入,必须先问用户,不能自行默认 job.pano_url首次可用时,会在对话里展示全景图反馈gauss_import完成后先返回可预览的design_urlgauss_show_info继续补齐splat_url/drc_urlgauss_poll_job只保留给 debug 或细粒度观察
Metadata
Release files for image-to-design-mcp 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| image_to_design_mcp-0.1.6.tar.gz | 19.3 kB | Without provenance | Details for image_to_design_mcp-0.1.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| image_to_design_mcp-0.1.6-py3-none-any.whl | Python 3 | none | any | Details for image_to_design_mcp-0.1.6-py3-none-any.whl |
Total release size: 46.5 kB
Release files / image_to_design_mcp-0.1.6.tar.gz
| Download URL | image_to_design_mcp-0.1.6.tar.gz |
|---|---|
| Size | 19.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1815589f9a2aaaf54f7696b8a0c39e467a6aca4225ded1d81ac3d280b9d2e7a
|
|
BLAKE2b-256 checksum How to use checksums |
8b7fc5ce7c585e0a9f069b31238ffe61dc481f40225b5684e7cfa714da242683
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / image_to_design_mcp-0.1.6-py3-none-any.whl
| Download URL | image_to_design_mcp-0.1.6-py3-none-any.whl |
|---|---|
| Size | 27.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5b7961ab62f156b158cacb61f366a8cb0c25d542f1129fba31a7c6c2d1988eb5
|
|
BLAKE2b-256 checksum How to use checksums |
ae0befe51f8cde8502cdae036051eb079ce42d5623f517ed33395ffe4d830af6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for image-to-design-mcp 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.