keyshot-mcp 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,39 @@ All notable changes to KeyShot MCP are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.12.0] - 2026-09-01
8
+
9
+ ### Added
10
+
11
+ - Structured bug and feature request forms, a pull request checklist, support
12
+ guidance, code ownership, and a bilingual community code of conduct.
13
+ - Weekly Dependabot updates for npm and monthly updates for GitHub Actions.
14
+ - CodeQL analysis for JavaScript and TypeScript changes and a weekly scheduled scan.
15
+
16
+ ### Changed
17
+
18
+ - Contribution guidance now describes the complete validation suite, real KeyShot
19
+ testing expectations, compatibility rules, and confidential-asset restrictions.
20
+ - Security guidance now links directly to GitHub private vulnerability reporting.
21
+ - Release validation now checks that required community health files remain present.
22
+
23
+ ## [0.11.0] - 2026-08-12
24
+
25
+ ### Added
26
+
27
+ - `keyshot_sync_saved_scene`, which detects the newest saved `.bip`, copies it to
28
+ a collision-safe output, returns a content fingerprint, and optionally embeds a
29
+ preview.
30
+ - Machine-readable interaction-mode diagnostics so Agents can explain that stable
31
+ tools work on saved scenes rather than an unsaved GUI session.
32
+ - An original KeyShot MCP project mark and a clearer README introduction,
33
+ navigation, highlights, and bilingual positioning for easier recognition.
34
+
35
+ ### Changed
36
+
37
+ - README, Agent Skill, and MCP workflow guidance now explain the tested KeyShot
38
+ Script Runner limitation and recommend the saved-scene synchronization workflow.
39
+
7
40
  ## [0.10.0] - 2026-08-11
8
41
 
9
42
  ### Added
@@ -22,5 +55,7 @@ All notable changes to KeyShot MCP are documented in this file.
22
55
 
23
56
  - Documented that scene metadata and preview images may be sent by an MCP client to its configured model provider.
24
57
 
25
- [Unreleased]: https://github.com/truman-t3/keyshot-mcp/compare/v0.10.0...HEAD
58
+ [Unreleased]: https://github.com/truman-t3/keyshot-mcp/compare/v0.12.0...HEAD
59
+ [0.12.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.11.0...v0.12.0
60
+ [0.11.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.10.0...v0.11.0
26
61
  [0.10.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.9.1...v0.10.0
@@ -0,0 +1,28 @@
1
+ # Community Code of Conduct / 社区行为准则
2
+
3
+ ## Our standards
4
+
5
+ KeyShot MCP welcomes designers, developers, testers, technical artists, and
6
+ documentation contributors. Participate respectfully, discuss the work rather than
7
+ the person, accept constructive feedback, and make room for different experience
8
+ levels and languages.
9
+
10
+ Harassment, discrimination, threats, deliberate disruption, and publication of
11
+ another person's private or confidential information are not accepted. Never upload
12
+ customer assets, private scenes, license data, credentials, or unpublished renders
13
+ without clear authorization from their owner.
14
+
15
+ Maintainers may edit or remove content, close interactions, or restrict participation
16
+ when behavior puts people, projects, or confidential work at risk. Serious platform
17
+ abuse can also be reported through GitHub's reporting tools.
18
+
19
+ ## 中文说明
20
+
21
+ KeyShot MCP 欢迎设计师、开发者、测试人员、技术美术和文档贡献者参与。请尊重
22
+ 他人,只讨论工作本身,接受建设性反馈,并尊重不同经验水平和语言背景。
23
+
24
+ 社区不接受骚扰、歧视、威胁、蓄意干扰或公开他人隐私和保密信息。未经所有者明确
25
+ 授权,不得上传客户资产、私人场景、许可证信息、账号凭据或未公开渲染图。
26
+
27
+ 当行为危害参与者、项目或保密工作时,维护者可以编辑或删除内容、结束讨论或限制
28
+ 参与。严重的平台滥用行为也可以通过 GitHub 的举报工具报告。
package/CONTRIBUTING.md CHANGED
@@ -2,44 +2,93 @@
2
2
 
3
3
  ## English
4
4
 
5
- Contributions are welcome.
5
+ Contributions are welcome from designers, developers, technical artists, and
6
+ testers. Useful contributions include:
6
7
 
7
- Useful areas:
8
+ - Testing a clean installation or another KeyShot release.
9
+ - Reproducing a workflow problem with generated or non-confidential assets.
10
+ - Improving designer-facing instructions and MCP client examples.
11
+ - Adding focused wrappers for documented KeyShot `lux` APIs.
12
+ - Improving tests, diagnostics, security, or release reliability.
8
13
 
9
- - Test with more KeyShot versions.
10
- - Improve compatibility with macOS and Linux paths.
11
- - Add examples for Claude Desktop, Codex, and other MCP clients.
12
- - Add more precise wrappers for KeyShot `lux` APIs.
14
+ Start with a GitHub Discussion for usage questions. Open an Issue before a large
15
+ implementation so the workflow, KeyShot API availability, compatibility, and safety
16
+ expectations can be agreed first.
13
17
 
14
- Before opening a pull request:
18
+ ### Development setup
19
+
20
+ Requirements: Node.js 20 or newer, pnpm 10, and Python 3.11 or newer.
15
21
 
16
22
  ```bash
17
- npm install
18
- npm run build
19
- npm run status
23
+ pnpm install --frozen-lockfile
24
+ pnpm run check
25
+ pnpm test
26
+ python -m unittest discover -s tests -p "test_*.py"
27
+ pnpm run format:check
28
+ python -m ruff check scripts tests
29
+ pnpm run docs:tools:check
30
+ node scripts/check-release.mjs
31
+ npm pack --dry-run
20
32
  ```
21
33
 
22
- Do not include proprietary KeyShot scenes, license data, customer assets, or private render outputs in issues or pull requests.
34
+ Run `pnpm run smoke:keyshot` only on a computer with a supported, licensed KeyShot
35
+ installation. Record the KeyShot version and operating system in the pull request.
36
+ CI on Linux validates the MCP and bridge logic; it does not verify KeyShot itself.
37
+
38
+ ### Pull requests
23
39
 
24
- ---
40
+ - Keep changes focused and preserve existing tool names and inputs unless a breaking
41
+ change has been discussed.
42
+ - Update tests, generated tool documentation, README, Skill, and changelog when the
43
+ public interface changes.
44
+ - Use generated or clearly redistributable test assets.
45
+ - Explain real KeyShot validation when behavior depends on the `lux` API.
46
+ - Follow the pull request checklist and wait for CI to pass.
47
+
48
+ Never include proprietary KeyShot scenes, license data, customer assets, credentials,
49
+ private paths, or unpublished renders in Issues, Discussions, commits, or pull requests.
50
+ Report vulnerabilities through GitHub's private security reporting form.
25
51
 
26
52
  ## 中文
27
53
 
28
- 欢迎参与贡献。
54
+ 欢迎设计师、开发者、技术美术和测试人员参与。比较有价值的贡献包括:
55
+
56
+ - 在干净环境或其他 KeyShot 版本上测试安装。
57
+ - 使用项目生成或不保密的素材复现工作流问题。
58
+ - 改进面向设计师的说明和 MCP 客户端示例。
59
+ - 为官方文档公开的 KeyShot `lux` API 增加聚焦的工具封装。
60
+ - 改进测试、诊断、安全和发布可靠性。
29
61
 
30
- 比较有价值的方向:
62
+ 普通使用问题请先在 GitHub Discussions 讨论。准备较大功能前请先创建 Issue,确认
63
+ 工作流、KeyShot API 可用性、兼容范围和安全要求。
31
64
 
32
- - 测试更多 KeyShot 版本。
33
- - 改进 macOS 和 Linux 路径兼容。
34
- - 增加 Claude Desktop、Codex 和其他 MCP 客户端示例。
35
- - 为 KeyShot `lux` API 增加更精确的封装。
65
+ ### 开发环境
36
66
 
37
- 提交修改前建议先运行:
67
+ 需要 Node.js 20 或更高版本、pnpm 10,以及 Python 3.11 或更高版本。
38
68
 
39
69
  ```bash
40
- npm install
41
- npm run build
42
- npm run status
70
+ pnpm install --frozen-lockfile
71
+ pnpm run check
72
+ pnpm test
73
+ python -m unittest discover -s tests -p "test_*.py"
74
+ pnpm run format:check
75
+ python -m ruff check scripts tests
76
+ pnpm run docs:tools:check
77
+ node scripts/check-release.mjs
78
+ npm pack --dry-run
43
79
  ```
44
80
 
45
- 请不要在 issue pull request 里上传专有 KeyShot 场景、许可证数据、客户资产或私人渲染结果。
81
+ 只有在本机已安装并合法授权 KeyShot 时才运行 `pnpm run smoke:keyshot`,并在 PR
82
+ 注明操作系统和 KeyShot 版本。Linux CI 只验证 MCP 与 Bridge 逻辑,不代表已经实测
83
+ KeyShot。
84
+
85
+ ### Pull Request
86
+
87
+ - 保持改动聚焦;除非已讨论破坏性变更,否则保留现有工具名称和输入兼容性。
88
+ - 公共接口变化时同步测试、自动生成工具文档、README、Skill 和 Changelog。
89
+ - 只使用项目生成或明确允许再分发的测试素材。
90
+ - 依赖 `lux` 行为的改动需要说明真实 KeyShot 验证结果。
91
+ - 完成 PR 检查项并等待 CI 通过。
92
+
93
+ 不要在 Issue、Discussion、提交或 PR 中包含专有 KeyShot 场景、许可证数据、客户资产、
94
+ 账号凭据、私人路径或未公开渲染图。安全漏洞请通过 GitHub 私密安全报告提交。
package/README.md CHANGED
@@ -1,35 +1,79 @@
1
- # KeyShot MCP
2
-
3
- [![npm version](https://img.shields.io/npm/v/keyshot-mcp.svg)](https://www.npmjs.com/package/keyshot-mcp)
4
- [![CI](https://github.com/truman-t3/keyshot-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/truman-t3/keyshot-mcp/actions/workflows/ci.yml)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
-
7
- [English](#english) | [中文](#中文)
8
-
9
- > **Useful for your KeyShot workflow? Star the repository to help other designers discover it.**
10
- >
11
- > **如果它改善了你的 KeyShot 工作流,欢迎点一个 Star,让更多设计师发现这个项目。**
1
+ <p align="center">
2
+ <img src="assets/logo-lockup.png" width="620" alt="KeyShot MCP">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <strong>Turn product-rendering requests into safe, repeatable KeyShot workflows.</strong><br>
7
+ <strong>将产品渲染需求转化为安全、可重复执行的 KeyShot 工作流。</strong>
8
+ </p>
9
+
10
+ <p align="center">
11
+ Inspect scenes, prepare product views, adjust materials, cameras and environments,
12
+ and return Agent-visible renders through local KeyShot headless scripting.<br>
13
+ 检查场景、准备产品视图、调整材质、相机和环境,并通过本地 KeyShot headless 脚本将渲染结果返回给 Agent。
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/keyshot-mcp"><img src="https://img.shields.io/npm/v/keyshot-mcp.svg" alt="npm version"></a>
18
+ <a href="https://github.com/truman-t3/keyshot-mcp/actions/workflows/ci.yml"><img src="https://github.com/truman-t3/keyshot-mcp/actions/workflows/ci.yml/badge.svg" alt="CI status"></a>
19
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"></a>
20
+ <img src="https://img.shields.io/badge/tools-19-55E6A5" alt="19 MCP tools">
21
+ <img src="https://img.shields.io/badge/MCP-Model_Context_Protocol-111827" alt="Model Context Protocol">
22
+ <img src="https://img.shields.io/badge/KeyShot-14.1_tested-00AEEF" alt="KeyShot 14.1 tested">
23
+ <img src="https://img.shields.io/badge/Node.js-20%2B-339933" alt="Node.js 20 or newer">
24
+ <img src="https://img.shields.io/badge/TypeScript-5.9-3178C6" alt="TypeScript 5.9">
25
+ </p>
26
+
27
+ <p align="center">
28
+ <a href="#quick-start-for-designers">Quick start</a> ·
29
+ <a href="#highlights">Highlights</a> ·
30
+ <a href="#common-workflows">Workflows</a> ·
31
+ <a href="#tools">Tools</a> ·
32
+ <a href="#configuration">Configuration</a>
33
+ </p>
34
+
35
+ <p align="center"><a href="#english">English</a> · <a href="#中文">简体中文</a></p>
36
+
37
+ <p align="center">
38
+ <strong>Useful for your KeyShot workflow? Star the repository to help other designers discover it.</strong><br>
39
+ <strong>如果它改善了你的 KeyShot 工作流,欢迎点一个 Star,让更多设计师发现这个项目。</strong>
40
+ </p>
12
41
 
13
42
  KeyShot MCP connects an MCP-compatible AI agent to a licensed KeyShot installation
14
- on the same computer. It can inspect scenes, import models, apply materials, set
15
- cameras and environments, save scene copies, and render images through KeyShot
16
- headless scripting. KeyShot file processing stays local; however, an MCP client may
17
- send tool results, scene metadata, or embedded previews to its configured model
43
+ on the same computer. KeyShot file processing stays local; however, an MCP client
44
+ may send tool results, scene metadata, or embedded previews to its configured model
18
45
  provider. See [Security](SECURITY.md) before using confidential work.
19
46
 
20
47
  ![KeyShot MCP workflow](assets/workflow.svg)
21
48
 
22
49
  ## English
23
50
 
51
+ ### Highlights
52
+
53
+ - **Start with a request, not a render-settings checklist.** Use one product tool
54
+ for model import, object materials, camera, environment, scene copy, and output.
55
+ - **See before committing.** Bounded PNG previews are returned directly to the
56
+ Agent for composition, material, and lighting feedback.
57
+ - **Keep source scenes protected.** Editing workflows write controlled copies and
58
+ reject output paths outside the configured safe directory by default.
59
+ - **Continue from the latest save.** Saved-scene sync detects real file changes,
60
+ creates a collision-safe copy, and avoids duplicate work with fingerprints.
61
+ - **Use focused controls when needed.** Nineteen documented tools cover inspection,
62
+ presets, cameras, materials, environments, render queues, and all-camera output.
63
+
64
+ > [!NOTE]
65
+ > Tested on Windows 11 with KeyShot Studio 2025 / KeyShot 14.1. KeyShot and a valid
66
+ > license are required and are not included with this independent project.
67
+
24
68
  ### Quick start for designers
25
69
 
26
70
  The easiest setup is to send this prompt to an agent that can edit your MCP
27
71
  configuration:
28
72
 
29
73
  ```text
30
- Install KeyShot MCP 0.10.0 and configure it in my MCP client.
74
+ Install KeyShot MCP 0.12.0 and configure it in my MCP client.
31
75
 
32
- 1. Use: npx -y keyshot-mcp@0.10.0
76
+ 1. Use: npx -y keyshot-mcp@0.12.0
33
77
  2. Find my local keyshot_headless.exe and set KEYSHOT_HEADLESS_EXE to its full path.
34
78
  3. Keep outputs in the default KeyShot MCP Outputs folder unless I choose another safe folder.
35
79
  4. Keep KEYSHOT_ALLOW_EXTERNAL_OUTPUTS disabled.
@@ -55,9 +99,41 @@ from C:\models\speaker.obj.
55
99
  they are not currently verified by this project.
56
100
  - KeyShot, its license, materials, and environments are not included.
57
101
 
102
+ ### Why the stable release does not control the open KeyShot window
103
+
104
+ The stable server works on saved scene files through KeyShot headless scripting;
105
+ it does not control the currently open, unsaved KeyShot GUI session. This is a
106
+ boundary of the public KeyShot scripting execution model, not an omitted MCP
107
+ connection. KeyShot's Script Runner keeps a GUI script active until that script
108
+ returns. In our Live Companion prototype, keeping a bridge alive also kept the
109
+ Script Runner open and blocked normal interaction with the KeyShot window.
110
+
111
+ Calling `lux.sync()` can flush pending KeyShot operations, but it does not provide
112
+ a documented background service, GUI event callback, or plugin lifecycle that can
113
+ safely host a persistent MCP bridge. Calling `lux` from an arbitrary worker thread
114
+ would also risk unsafe access to the scene. For that reason, the project does not
115
+ present the experimental bridge as production-ready realtime control.
116
+
117
+ For a reliable workflow, save the scene first. The Agent can inspect or edit a
118
+ safe copy through headless KeyShot, return a preview, and preserve the original
119
+ file. True realtime GUI control can be reconsidered if KeyShot exposes a supported
120
+ non-blocking GUI extension or main-thread callback API.
121
+
122
+ Use `keyshot_sync_saved_scene` for the closest stable alternative to realtime
123
+ collaboration. Give it a saved `.bip` file or one folder containing `.bip` files.
124
+ It selects the newest saved scene, computes a content fingerprint, copies it to a
125
+ collision-safe output name, and returns an embedded preview by default. Pass the
126
+ returned fingerprint on the next call; if the user has not saved a new change,
127
+ the tool reports `changed: false` without creating another copy or render.
128
+
129
+ ```text
130
+ I saved my KeyShot scene in C:\projects\speaker. Sync the newest .bip from that
131
+ folder, show me a preview, and do not overwrite the original scene.
132
+ ```
133
+
58
134
  ### Install
59
135
 
60
- The current release is `0.10.0`.
136
+ The current release is `0.12.0`.
61
137
 
62
138
  #### Run with npx
63
139
 
@@ -68,7 +144,7 @@ No global npm installation is required:
68
144
  "mcpServers": {
69
145
  "keyshot": {
70
146
  "command": "npx",
71
- "args": ["-y", "keyshot-mcp@0.10.0"],
147
+ "args": ["-y", "keyshot-mcp@0.12.0"],
72
148
  "env": {
73
149
  "KEYSHOT_HEADLESS_EXE": "C:/Program Files/KeyShot Studio/bin/keyshot_headless.exe"
74
150
  }
@@ -80,7 +156,7 @@ No global npm installation is required:
80
156
  #### Install globally
81
157
 
82
158
  ```bash
83
- npm install -g keyshot-mcp@0.10.0
159
+ npm install -g keyshot-mcp@0.12.0
84
160
  ```
85
161
 
86
162
  ```json
@@ -185,6 +261,7 @@ Lower-level render tools preserve their existing behavior when no preset is give
185
261
  | `keyshot_status` | Diagnose local configuration, output access, presets, and KeyShot startup. |
186
262
  | `keyshot_product_render` | Prepare, save, and render a model or scene in one process. |
187
263
  | `keyshot_preview_render` | Return a temporary or saved PNG directly to the Agent for visual review. |
264
+ | `keyshot_sync_saved_scene` | Copy the newest saved scene safely, detect changes, and return a preview. |
188
265
  | `keyshot_inspect_scene` | List scene metadata, objects, cameras, materials, model sets, and references. |
189
266
  | `keyshot_list_cameras` | Return saved camera names before a selected-camera render. |
190
267
  | `keyshot_render` | Render one active or named camera. |
@@ -203,7 +280,7 @@ Lower-level render tools preserve their existing behavior when no preset is give
203
280
 
204
281
  The server also exposes one MCP Prompt for product rendering and one MCP Resource
205
282
  describing the KeyShot headless workflow. The complete generated reference for
206
- all 18 tools is in [`docs/TOOLS.md`](docs/TOOLS.md). The bundled Agent Skill in
283
+ all 19 tools is available in [`docs/TOOLS.md`](docs/TOOLS.md). The bundled Agent Skill in
207
284
  [`skills/keyshot-mcp`](skills/keyshot-mcp) teaches compatible agents how to install,
208
285
  diagnose, and use the server safely.
209
286
 
@@ -257,10 +334,14 @@ directory. A representative result is included below:
257
334
  ### Development
258
335
 
259
336
  ```bash
260
- pnpm install
261
- pnpm check
337
+ pnpm install --frozen-lockfile
338
+ pnpm run check
262
339
  pnpm test
263
340
  python -m unittest discover -s tests -p "test_*.py"
341
+ pnpm run format:check
342
+ python -m ruff check scripts tests
343
+ pnpm run docs:tools:check
344
+ node scripts/check-release.mjs
264
345
  npm pack --dry-run
265
346
  ```
266
347
 
@@ -268,6 +349,21 @@ CI runs on Windows and Ubuntu with Node.js 20 and 24. Linux CI validates the MCP
268
349
  server, bridge logic, metadata, and package; it does not claim that KeyShot itself
269
350
  was tested on Linux.
270
351
 
352
+ ### Community and support
353
+
354
+ - Ask installation and usage questions in
355
+ [GitHub Discussions](https://github.com/truman-t3/keyshot-mcp/discussions).
356
+ - Use the structured [Bug report](https://github.com/truman-t3/keyshot-mcp/issues/new?template=bug-report.yml)
357
+ or [Feature request](https://github.com/truman-t3/keyshot-mcp/issues/new?template=feature-request.yml)
358
+ forms for actionable project work.
359
+ - Report vulnerabilities through
360
+ [private vulnerability reporting](https://github.com/truman-t3/keyshot-mcp/security/advisories/new).
361
+ - Read [SUPPORT.md](SUPPORT.md), [CONTRIBUTING.md](CONTRIBUTING.md), and
362
+ [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) before sharing diagnostics or contributing.
363
+
364
+ Never attach customer scenes, proprietary models, license information, credentials,
365
+ or confidential renders to a public post.
366
+
271
367
  ### Roadmap
272
368
 
273
369
  - Verify additional supported KeyShot releases on real installations.
@@ -293,14 +389,29 @@ bypass licensing or redistribute proprietary KeyShot software or assets.
293
389
  KeyShot MCP 在本机处理 KeyShot 文件;但 MCP 客户端可能会把工具结果、场景元数据或
294
390
  内嵌预览发送给它所配置的模型服务。处理保密项目之前请先阅读[安全说明](SECURITY.md)。
295
391
 
392
+ ### 核心特点
393
+
394
+ - **从设计需求开始,而不是先填写一堆渲染参数。** 一个产品出图工具即可完成模型导入、
395
+ 指定对象材质、相机、环境、场景副本和渲染输出。
396
+ - **正式出图前先看预览。** 预览 PNG 会直接返回给 Agent,用于检查构图、材质和光线。
397
+ - **保护源场景。** 编辑流程默认生成受控副本,并拒绝向安全输出目录之外写入文件。
398
+ - **从最近一次保存继续。** 保存同步会识别真实文件变化、创建不重名副本,并用内容指纹
399
+ 避免重复处理。
400
+ - **需要精细控制时仍然可用。** 19 个工具覆盖场景检查、预设、相机、材质、环境、
401
+ 渲染队列和全部相机出图。
402
+
403
+ > [!NOTE]
404
+ > 已实测 Windows 11 + KeyShot Studio 2025 / KeyShot 14.1。使用时需要另行安装并合法
405
+ > 授权 KeyShot;本项目是独立开源项目,不包含 KeyShot 软件或许可证。
406
+
296
407
  ### 设计师快速开始
297
408
 
298
409
  最简单的安装方式,是把下面这段话发给能够修改 MCP 配置的 Agent:
299
410
 
300
411
  ```text
301
- 请安装 KeyShot MCP 0.10.0,并配置到我的 MCP 客户端。
412
+ 请安装 KeyShot MCP 0.12.0,并配置到我的 MCP 客户端。
302
413
 
303
- 1. 使用:npx -y keyshot-mcp@0.10.0
414
+ 1. 使用:npx -y keyshot-mcp@0.12.0
304
415
  2. 查找本机 keyshot_headless.exe,并把完整路径设置为 KEYSHOT_HEADLESS_EXE。
305
416
  3. 默认把结果保存在“文档/KeyShot MCP Outputs”,除非我明确选择其他安全目录。
306
417
  4. 保持 KEYSHOT_ALLOW_EXTERNAL_OUTPUTS 关闭。
@@ -324,9 +435,36 @@ KeyShot MCP 在本机处理 KeyShot 文件;但 MCP 客户端可能会把工具
324
435
  - 暴露相同脚本 API 的其他 KeyShot 版本可能可用,但本项目暂未完成实机验证。
325
436
  - 本项目不包含 KeyShot、许可证、官方材质或环境资源。
326
437
 
438
+ ### 为什么稳定版不能控制当前打开的 KeyShot 窗口
439
+
440
+ 稳定版通过 KeyShot headless 脚本处理已经保存的场景文件,不能直接控制 KeyShot
441
+ 窗口中尚未保存的当前会话。这是 KeyShot 现有公开脚本执行方式的边界,并不是 MCP
442
+ 连接功能遗漏。
443
+
444
+ 我们已经制作并实机测试过 Live Companion 原型。为了等待 Agent 指令,Bridge 脚本
445
+ 必须长期保持运行;但 KeyShot Script Runner 会一直等待脚本结束,导致脚本窗口持续
446
+ 占用并阻挡 KeyShot GUI 的正常交互。`lux.sync()` 只能同步待处理操作,公开文档没有
447
+ 提供可安全承载常驻 MCP Bridge 的后台服务、GUI 事件回调或插件生命周期。让普通后台
448
+ 线程直接调用 `lux` 也可能造成不安全的场景访问。因此,本项目没有把这个实验方案包装成
449
+ 可用于正式工作的“实时控制”。
450
+
451
+ 可靠的工作方式是先保存场景,再让 Agent 使用 headless KeyShot 检查或修改安全副本、
452
+ 返回预览并保留原文件。如果 KeyShot 后续公开非阻塞 GUI 扩展接口或主线程回调 API,
453
+ 本项目可以重新评估真正的实时 GUI 控制。
454
+
455
+ `keyshot_sync_saved_scene` 是目前最接近实时协作、同时保持稳定的方案。向它提供一个已
456
+ 保存的 `.bip` 文件,或只包含当前项目场景的文件夹。工具会选择最近保存的场景、计算
457
+ 内容指纹、复制到不会重名的安全输出路径,并默认返回内嵌预览。下一次调用时传入上次的
458
+ 指纹;如果用户没有保存新的修改,工具会返回 `changed: false`,不会重复复制或渲染。
459
+
460
+ ```text
461
+ 我已经把 KeyShot 场景保存在 C:\projects\speaker。请同步这个文件夹中最新的 .bip,
462
+ 给我看预览,而且不要覆盖原场景。
463
+ ```
464
+
327
465
  ### 安装
328
466
 
329
- 当前正式版本为 `0.10.0`。
467
+ 当前正式版本为 `0.12.0`。
330
468
 
331
469
  #### 使用 npx 免安装运行
332
470
 
@@ -335,7 +473,7 @@ KeyShot MCP 在本机处理 KeyShot 文件;但 MCP 客户端可能会把工具
335
473
  "mcpServers": {
336
474
  "keyshot": {
337
475
  "command": "npx",
338
- "args": ["-y", "keyshot-mcp@0.10.0"],
476
+ "args": ["-y", "keyshot-mcp@0.12.0"],
339
477
  "env": {
340
478
  "KEYSHOT_HEADLESS_EXE": "C:/Program Files/KeyShot Studio/bin/keyshot_headless.exe"
341
479
  }
@@ -347,7 +485,7 @@ KeyShot MCP 在本机处理 KeyShot 文件;但 MCP 客户端可能会把工具
347
485
  #### 全局安装
348
486
 
349
487
  ```bash
350
- npm install -g keyshot-mcp@0.10.0
488
+ npm install -g keyshot-mcp@0.12.0
351
489
  ```
352
490
 
353
491
  ```json
@@ -446,6 +584,7 @@ pnpm build
446
584
  | `keyshot_status` | 检查本机配置、输出目录、预设和 KeyShot 启动状态。 |
447
585
  | `keyshot_product_render` | 在一个进程中整理、保存并渲染模型或场景。 |
448
586
  | `keyshot_preview_render` | 将临时或保留的 PNG 直接返回给 Agent 进行视觉检查。 |
587
+ | `keyshot_sync_saved_scene` | 安全同步最近保存的场景、检测变化并返回预览。 |
449
588
  | `keyshot_inspect_scene` | 查看场景、对象、相机、材质、模型集和外部引用。 |
450
589
  | `keyshot_list_cameras` | 返回场景中的相机名称。 |
451
590
  | `keyshot_render` | 渲染当前或指定相机。 |
@@ -463,7 +602,7 @@ pnpm build
463
602
  | `keyshot_save_scene` | 将场景保存到受控输出路径。 |
464
603
 
465
604
  服务还提供一个产品渲染 MCP Prompt,以及一个说明 headless 工作流程的 MCP Resource。
466
- 完整的 18 个工具参考由代码自动生成在 [`docs/TOOLS.md`](docs/TOOLS.md)。
605
+ 完整的 19 个工具参考由代码自动生成在 [`docs/TOOLS.md`](docs/TOOLS.md)。
467
606
  [`skills/keyshot-mcp`](skills/keyshot-mcp) 中的 Agent Skill 会指导兼容的 Agent 安装、
468
607
  诊断并安全使用这些工具。
469
608
 
@@ -511,16 +650,31 @@ npm run smoke:keyshot
511
650
  ### 开发与测试
512
651
 
513
652
  ```bash
514
- pnpm install
515
- pnpm check
653
+ pnpm install --frozen-lockfile
654
+ pnpm run check
516
655
  pnpm test
517
656
  python -m unittest discover -s tests -p "test_*.py"
657
+ pnpm run format:check
658
+ python -m ruff check scripts tests
659
+ pnpm run docs:tools:check
660
+ node scripts/check-release.mjs
518
661
  npm pack --dry-run
519
662
  ```
520
663
 
521
664
  CI 在 Windows 和 Ubuntu 上使用 Node.js 20、24。Linux CI 验证 MCP 服务、bridge、
522
665
  元数据和 npm 包,不表示 KeyShot 软件已经在 Linux 上通过实机测试。
523
666
 
667
+ ### 社区与支持
668
+
669
+ - 安装和使用问题请在 [GitHub Discussions](https://github.com/truman-t3/keyshot-mcp/discussions) 提问。
670
+ - 可以复现的问题使用 [Bug 报告](https://github.com/truman-t3/keyshot-mcp/issues/new?template=bug-report.yml),
671
+ 工作流建议使用 [功能建议](https://github.com/truman-t3/keyshot-mcp/issues/new?template=feature-request.yml)。
672
+ - 安全漏洞通过 [私密安全报告](https://github.com/truman-t3/keyshot-mcp/security/advisories/new) 提交。
673
+ - 公开诊断信息或参与贡献前,请阅读 [SUPPORT.md](SUPPORT.md)、
674
+ [CONTRIBUTING.md](CONTRIBUTING.md) 和 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
675
+
676
+ 不要在公开内容中附加客户场景、专有模型、许可证信息、账号凭据或保密渲染图。
677
+
524
678
  ### 路线图
525
679
 
526
680
  - 在更多受支持的 KeyShot 正式版本上完成实机验证。
package/SECURITY.md CHANGED
@@ -30,8 +30,10 @@ execution.
30
30
 
31
31
  ### Reporting issues
32
32
 
33
- Report vulnerabilities through a private GitHub security advisory before posting
34
- technical details publicly.
33
+ Report vulnerabilities through the repository's
34
+ [private vulnerability form](https://github.com/truman-t3/keyshot-mcp/security/advisories/new)
35
+ before posting technical details publicly. Include the affected version, impact,
36
+ reproduction steps, and a safe proof of concept that contains no private assets.
35
37
 
36
38
  ---
37
39
 
@@ -60,4 +62,7 @@ KeyShot MCP 本身不会上传文件、运行远程服务或收集遥测数据
60
62
 
61
63
  ### 报告安全问题
62
64
 
63
- 请先通过 GitHub 私密安全公告报告漏洞,不要直接公开技术细节。
65
+ 请先通过仓库的
66
+ [私密安全报告入口](https://github.com/truman-t3/keyshot-mcp/security/advisories/new)
67
+ 报告漏洞,不要直接公开技术细节。请说明受影响版本、影响、复现步骤,并确保验证材料
68
+ 不包含私人资产。
package/SUPPORT.md ADDED
@@ -0,0 +1,28 @@
1
+ # Support / 支持
2
+
3
+ ## English
4
+
5
+ Use the channel that matches the request:
6
+
7
+ - Installation and usage questions: [GitHub Discussions](https://github.com/truman-t3/keyshot-mcp/discussions)
8
+ - Reproducible bugs: [Bug report](https://github.com/truman-t3/keyshot-mcp/issues/new?template=bug-report.yml)
9
+ - Workflow proposals: [Feature request](https://github.com/truman-t3/keyshot-mcp/issues/new?template=feature-request.yml)
10
+ - Vulnerabilities: [Private security report](https://github.com/truman-t3/keyshot-mcp/security/advisories/new)
11
+
12
+ Before posting, run `keyshot_status` and remove license credentials, tokens,
13
+ customer names, private paths, scene files, models, and confidential renders.
14
+ Support is provided by the community on a best-effort basis. KeyShot product,
15
+ license, or account support must be requested from KeyShot.
16
+
17
+ ## 中文
18
+
19
+ 请根据问题选择对应入口:
20
+
21
+ - 安装和使用问题:[GitHub Discussions](https://github.com/truman-t3/keyshot-mcp/discussions)
22
+ - 可以复现的 Bug:[Bug 报告](https://github.com/truman-t3/keyshot-mcp/issues/new?template=bug-report.yml)
23
+ - 工作流建议:[功能建议](https://github.com/truman-t3/keyshot-mcp/issues/new?template=feature-request.yml)
24
+ - 安全漏洞:[私密安全报告](https://github.com/truman-t3/keyshot-mcp/security/advisories/new)
25
+
26
+ 提交前请先运行 `keyshot_status`,并删除许可证、Token、客户名称、私人路径、
27
+ 场景文件、模型和保密渲染图。社区维护者会尽力提供支持;KeyShot 软件、许可证
28
+ 或账号问题需要联系 KeyShot 官方支持。
Binary file
@@ -74,6 +74,13 @@ export async function runKeyShotDiagnostics(config, runStatus = runKeyShotSerial
74
74
  availableFunctionCount: availableFunctions.length,
75
75
  capabilities: capabilitySummary(availableFunctions),
76
76
  serverVersion: VERSION,
77
+ interaction: {
78
+ mode: "saved-scene-headless",
79
+ realtimeGuiControl: false,
80
+ requiresSavedScene: true,
81
+ recommendedSyncTool: "keyshot_sync_saved_scene",
82
+ reason: "Persistent GUI scripts keep KeyShot Script Runner active and block normal GUI interaction; the documented scripting API does not expose a supported non-blocking bridge lifecycle.",
83
+ },
77
84
  ready,
78
85
  config: {
79
86
  keyshotHeadlessExe: config.keyshotHeadlessExe,