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 +36 -1
- package/CODE_OF_CONDUCT.md +28 -0
- package/CONTRIBUTING.md +72 -23
- package/README.md +185 -31
- package/SECURITY.md +8 -3
- package/SUPPORT.md +28 -0
- package/assets/logo-lockup.png +0 -0
- package/dist/diagnostics.js +7 -0
- package/dist/save-sync.js +203 -0
- package/dist/schemas.js +39 -0
- package/dist/server.js +6 -1
- package/dist/tools/catalog.js +11 -1
- package/dist/version.js +1 -1
- package/docs/TOOLS.md +21 -1
- package/lhm.plugin.json +2390 -0
- package/package.json +10 -1
- package/server.json +2 -2
- package/skills/keyshot-mcp/SKILL.md +21 -3
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.
|
|
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
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
>
|
|
11
|
-
|
|
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.
|
|
15
|
-
|
|
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
|

|
|
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.
|
|
74
|
+
Install KeyShot MCP 0.12.0 and configure it in my MCP client.
|
|
31
75
|
|
|
32
|
-
1. Use: npx -y keyshot-mcp@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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
412
|
+
请安装 KeyShot MCP 0.12.0,并配置到我的 MCP 客户端。
|
|
302
413
|
|
|
303
|
-
1. 使用:npx -y keyshot-mcp@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.
|
|
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.
|
|
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.
|
|
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
|
-
完整的
|
|
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
|
|
34
|
-
|
|
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
|
-
|
|
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
|
package/dist/diagnostics.js
CHANGED
|
@@ -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,
|