dcc-mcp-shogun 0.2.0__tar.gz
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.
- dcc_mcp_shogun-0.2.0/.gitignore +10 -0
- dcc_mcp_shogun-0.2.0/.release-please-manifest.json +3 -0
- dcc_mcp_shogun-0.2.0/LICENSE +21 -0
- dcc_mcp_shogun-0.2.0/PKG-INFO +143 -0
- dcc_mcp_shogun-0.2.0/README.md +117 -0
- dcc_mcp_shogun-0.2.0/docs/showcase.md +59 -0
- dcc_mcp_shogun-0.2.0/examples/showcase/assets/dcc-mcp-shogun-showcase.bvh +370 -0
- dcc_mcp_shogun-0.2.0/examples/showcase/generate_showcase_bvh.py +213 -0
- dcc_mcp_shogun-0.2.0/pyproject.toml +66 -0
- dcc_mcp_shogun-0.2.0/release-please-config.json +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/__init__.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/__version__.py +1 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/dispatcher.py +22 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/runtime.py +494 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/sdk.py +262 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/server.py +157 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skill_result.py +24 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/SKILL.md +38 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/export_motion.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/import_motion.py +27 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/save_scene.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/tools.yaml +88 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/SKILL.md +37 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/_result.py +3 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/_run.py +5 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/auto_label.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/fix_occlusion.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/inspect_processing_settings.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/reconstruct.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/retarget.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/solve.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/tools.yaml +143 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/SKILL.md +35 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/_result.py +3 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_bone_details.py +22 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_constraint_details.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_subject_parameter.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_trajectory_at_frame.py +17 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_trajectory_window.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/inspect_scene.py +21 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_bones.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_constraints.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_markers.py +15 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_subject_parameters.py +16 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/tools.yaml +252 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/SKILL.md +33 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/_result.py +3 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/clear_time_selection.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/inspect_timeline.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/select_time_range.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/set_current_frame.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/set_play_range.py +18 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/tools.yaml +111 -0
- dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/state.py +28 -0
- dcc_mcp_shogun-0.2.0/tests/test_package.py +138 -0
- dcc_mcp_shogun-0.2.0/tests/test_runtime.py +427 -0
- dcc_mcp_shogun-0.2.0/tests/test_sdk.py +77 -0
- dcc_mcp_shogun-0.2.0/tests/test_skill_results.py +33 -0
- dcc_mcp_shogun-0.2.0/tests/test_state.py +27 -0
- dcc_mcp_shogun-0.2.0/tools/lint_skills.py +19 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 loonghao
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: dcc-mcp-shogun
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Typed DCC-MCP adapter for Vicon Shogun Post motion-capture workflows
|
|
5
|
+
Author-email: loonghao <hal.long@outlook.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Keywords: animation,dcc,mcp,motion-capture,shogun,vicon
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Requires-Dist: dcc-mcp-core<1.0.0,>=0.19.86
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: build>=1.2; extra == 'dev'
|
|
22
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
23
|
+
Requires-Dist: ruff>=0.8; extra == 'dev'
|
|
24
|
+
Requires-Dist: twine>=6; extra == 'dev'
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
|
|
27
|
+
# dcc-mcp-shogun
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
[](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml)
|
|
32
|
+
[](https://pypi.org/project/dcc-mcp-shogun/)
|
|
33
|
+
[](https://pypi.org/project/dcc-mcp-shogun/)
|
|
34
|
+
|
|
35
|
+
A typed, local-first DCC-MCP adapter for Vicon Shogun Post motion-capture
|
|
36
|
+
inspection, timeline control, bounded processing, and file workflows.
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
The adapter uses Vicon's official local `ViconShogunPost` control-stream SDK and
|
|
41
|
+
its `Timeline` and `Offline` interfaces. It does not expose arbitrary Python or
|
|
42
|
+
HSL execution. Application controls not exposed by the SDK remain an explicit,
|
|
43
|
+
exact-window DCC UI Control fallback.
|
|
44
|
+
|
|
45
|
+
Shogun Post ships an external Python SDK. The adapter runs in its own Python
|
|
46
|
+
process and connects to the application's local control stream; it does not rely
|
|
47
|
+
on a general-purpose Python interpreter embedded in the Shogun Post UI.
|
|
48
|
+
|
|
49
|
+
## Capabilities
|
|
50
|
+
|
|
51
|
+
- inspect path-redacted scene metadata and bounded subject lists;
|
|
52
|
+
- inspect subject markers, skeleton hierarchy, constraints, and static subject
|
|
53
|
+
parameters;
|
|
54
|
+
- query one marker trajectory value or an inclusive window of at most 2,000
|
|
55
|
+
frames;
|
|
56
|
+
- inspect and explicitly change current frame, selected time ranges, and play
|
|
57
|
+
range through the capability-gated `Timeline` interface;
|
|
58
|
+
- inspect a stable allowlist of processing settings and invoke reconstruct,
|
|
59
|
+
auto-label, occlusion fixing, solve, or retarget through the official
|
|
60
|
+
`Offline` interface;
|
|
61
|
+
- expose capability-gated import, save, and export calls that map directly to
|
|
62
|
+
the official SDK;
|
|
63
|
+
- register one Shogun Post GUI instance with the DCC-MCP local gateway.
|
|
64
|
+
|
|
65
|
+
The mutating surface is deliberately narrow. Processing requires an explicit
|
|
66
|
+
`current_frame` or `selected_ranges` scope; the complete play range is not an
|
|
67
|
+
available implicit default. The adapter does not expose scene replacement,
|
|
68
|
+
arbitrary HSL/Python execution, or raw trajectory writes. Existing outputs fail
|
|
69
|
+
closed unless `overwrite=true`, and public results omit full paths.
|
|
70
|
+
|
|
71
|
+
The read-only `shogun-scene` Skill is live-validated against Shogun Post 1.19.
|
|
72
|
+
That host build rejected the SDK's `ImportFile` call with `ControlError`, without
|
|
73
|
+
partially changing the scene. The separate `shogun-files` Skill therefore
|
|
74
|
+
remains explicitly host-build and license-capability gated: its tools are typed
|
|
75
|
+
and fail closed, but import/save/export are not claimed as live-supported on
|
|
76
|
+
1.19.
|
|
77
|
+
|
|
78
|
+
The same 1.19 host exposes the official `Timeline` and `Offline` Python classes
|
|
79
|
+
but rejects their commands as invalid for that host application. The
|
|
80
|
+
`shogun-timeline` and `shogun-processing` Skills therefore remain explicitly
|
|
81
|
+
capability-gated: their schemas and SDK mappings are tested, while 1.19 support
|
|
82
|
+
is not claimed. A rejection is returned as a bounded typed error and never
|
|
83
|
+
triggers UI automation.
|
|
84
|
+
|
|
85
|
+
The implemented contracts follow Vicon's official
|
|
86
|
+
[Python SDK interface guide](https://vicon-help.atlassian.net/wiki/spaces/Shogun111/pages/13208701/Use%2BVicon%2BShogunPost%2BSDK%2Binterfaces)
|
|
87
|
+
and [HSL command reference](https://help.vicon.com/download/attachments/196380086/HSL%20scripting%20with%20Vicon%20Shogun.pdf).
|
|
88
|
+
|
|
89
|
+
## Showcase
|
|
90
|
+
|
|
91
|
+
The repository includes an original, deterministic 240-frame BVH motion source
|
|
92
|
+
and generator under [`examples/showcase`](examples/showcase). It is intended for
|
|
93
|
+
reproducible import experiments without redistributing production capture data.
|
|
94
|
+
|
|
95
|
+
See [`docs/showcase.md`](docs/showcase.md) for the full launch, discovery,
|
|
96
|
+
inspection, and evidence workflow.
|
|
97
|
+
|
|
98
|
+
## Local development
|
|
99
|
+
|
|
100
|
+
Start Vicon Shogun Post with your normal application launcher. Then install
|
|
101
|
+
this adapter in a Python environment that can import `dcc-mcp-core`:
|
|
102
|
+
|
|
103
|
+
```powershell
|
|
104
|
+
python -m pip install -e ".[dev]"
|
|
105
|
+
dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The adapter discovers the official SDK beside the selected host process. An
|
|
109
|
+
operator can instead set `DCC_MCP_SHOGUN_SDK_PATH` to the SDK's `Win64`
|
|
110
|
+
directory. The adapter resolves the selected host process's control-stream
|
|
111
|
+
listener; `DCC_MCP_SHOGUN_CONTROL_PORT` may override it only when that port is
|
|
112
|
+
owned by the same host process.
|
|
113
|
+
|
|
114
|
+
The DCC-MCP listener uses an OS-assigned loopback port unless `--mcp-port` or
|
|
115
|
+
`DCC_MCP_SHOGUN_PORT` is explicitly set. Use `dcc-mcp-cli list`, `search`,
|
|
116
|
+
`describe`, and `call` rather than storing the resolved endpoint.
|
|
117
|
+
|
|
118
|
+
## Validation
|
|
119
|
+
|
|
120
|
+
```powershell
|
|
121
|
+
python -m ruff check src tests tools
|
|
122
|
+
python -m ruff format --check src tests tools
|
|
123
|
+
python -m pytest
|
|
124
|
+
python tools/lint_skills.py
|
|
125
|
+
python -m build
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Privacy and safety
|
|
129
|
+
|
|
130
|
+
- Connections are limited to the local Shogun control stream.
|
|
131
|
+
- Tool results reduce file paths to base names.
|
|
132
|
+
- Errors report exception classes, not SDK install paths or machine details.
|
|
133
|
+
- The scene Skill is read-only; the file Skill exposes only bounded
|
|
134
|
+
import/save/export operations; processing never defaults to the full play
|
|
135
|
+
range.
|
|
136
|
+
- Authentication, licensing, UAC, and security dialogs are never automated.
|
|
137
|
+
|
|
138
|
+
Vicon and Shogun are trademarks of Vicon Motion Systems Ltd. This independent
|
|
139
|
+
adapter is not affiliated with or endorsed by Vicon.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# dcc-mcp-shogun
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml)
|
|
6
|
+
[](https://pypi.org/project/dcc-mcp-shogun/)
|
|
7
|
+
[](https://pypi.org/project/dcc-mcp-shogun/)
|
|
8
|
+
|
|
9
|
+
A typed, local-first DCC-MCP adapter for Vicon Shogun Post motion-capture
|
|
10
|
+
inspection, timeline control, bounded processing, and file workflows.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
The adapter uses Vicon's official local `ViconShogunPost` control-stream SDK and
|
|
15
|
+
its `Timeline` and `Offline` interfaces. It does not expose arbitrary Python or
|
|
16
|
+
HSL execution. Application controls not exposed by the SDK remain an explicit,
|
|
17
|
+
exact-window DCC UI Control fallback.
|
|
18
|
+
|
|
19
|
+
Shogun Post ships an external Python SDK. The adapter runs in its own Python
|
|
20
|
+
process and connects to the application's local control stream; it does not rely
|
|
21
|
+
on a general-purpose Python interpreter embedded in the Shogun Post UI.
|
|
22
|
+
|
|
23
|
+
## Capabilities
|
|
24
|
+
|
|
25
|
+
- inspect path-redacted scene metadata and bounded subject lists;
|
|
26
|
+
- inspect subject markers, skeleton hierarchy, constraints, and static subject
|
|
27
|
+
parameters;
|
|
28
|
+
- query one marker trajectory value or an inclusive window of at most 2,000
|
|
29
|
+
frames;
|
|
30
|
+
- inspect and explicitly change current frame, selected time ranges, and play
|
|
31
|
+
range through the capability-gated `Timeline` interface;
|
|
32
|
+
- inspect a stable allowlist of processing settings and invoke reconstruct,
|
|
33
|
+
auto-label, occlusion fixing, solve, or retarget through the official
|
|
34
|
+
`Offline` interface;
|
|
35
|
+
- expose capability-gated import, save, and export calls that map directly to
|
|
36
|
+
the official SDK;
|
|
37
|
+
- register one Shogun Post GUI instance with the DCC-MCP local gateway.
|
|
38
|
+
|
|
39
|
+
The mutating surface is deliberately narrow. Processing requires an explicit
|
|
40
|
+
`current_frame` or `selected_ranges` scope; the complete play range is not an
|
|
41
|
+
available implicit default. The adapter does not expose scene replacement,
|
|
42
|
+
arbitrary HSL/Python execution, or raw trajectory writes. Existing outputs fail
|
|
43
|
+
closed unless `overwrite=true`, and public results omit full paths.
|
|
44
|
+
|
|
45
|
+
The read-only `shogun-scene` Skill is live-validated against Shogun Post 1.19.
|
|
46
|
+
That host build rejected the SDK's `ImportFile` call with `ControlError`, without
|
|
47
|
+
partially changing the scene. The separate `shogun-files` Skill therefore
|
|
48
|
+
remains explicitly host-build and license-capability gated: its tools are typed
|
|
49
|
+
and fail closed, but import/save/export are not claimed as live-supported on
|
|
50
|
+
1.19.
|
|
51
|
+
|
|
52
|
+
The same 1.19 host exposes the official `Timeline` and `Offline` Python classes
|
|
53
|
+
but rejects their commands as invalid for that host application. The
|
|
54
|
+
`shogun-timeline` and `shogun-processing` Skills therefore remain explicitly
|
|
55
|
+
capability-gated: their schemas and SDK mappings are tested, while 1.19 support
|
|
56
|
+
is not claimed. A rejection is returned as a bounded typed error and never
|
|
57
|
+
triggers UI automation.
|
|
58
|
+
|
|
59
|
+
The implemented contracts follow Vicon's official
|
|
60
|
+
[Python SDK interface guide](https://vicon-help.atlassian.net/wiki/spaces/Shogun111/pages/13208701/Use%2BVicon%2BShogunPost%2BSDK%2Binterfaces)
|
|
61
|
+
and [HSL command reference](https://help.vicon.com/download/attachments/196380086/HSL%20scripting%20with%20Vicon%20Shogun.pdf).
|
|
62
|
+
|
|
63
|
+
## Showcase
|
|
64
|
+
|
|
65
|
+
The repository includes an original, deterministic 240-frame BVH motion source
|
|
66
|
+
and generator under [`examples/showcase`](examples/showcase). It is intended for
|
|
67
|
+
reproducible import experiments without redistributing production capture data.
|
|
68
|
+
|
|
69
|
+
See [`docs/showcase.md`](docs/showcase.md) for the full launch, discovery,
|
|
70
|
+
inspection, and evidence workflow.
|
|
71
|
+
|
|
72
|
+
## Local development
|
|
73
|
+
|
|
74
|
+
Start Vicon Shogun Post with your normal application launcher. Then install
|
|
75
|
+
this adapter in a Python environment that can import `dcc-mcp-core`:
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
python -m pip install -e ".[dev]"
|
|
79
|
+
dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The adapter discovers the official SDK beside the selected host process. An
|
|
83
|
+
operator can instead set `DCC_MCP_SHOGUN_SDK_PATH` to the SDK's `Win64`
|
|
84
|
+
directory. The adapter resolves the selected host process's control-stream
|
|
85
|
+
listener; `DCC_MCP_SHOGUN_CONTROL_PORT` may override it only when that port is
|
|
86
|
+
owned by the same host process.
|
|
87
|
+
|
|
88
|
+
The DCC-MCP listener uses an OS-assigned loopback port unless `--mcp-port` or
|
|
89
|
+
`DCC_MCP_SHOGUN_PORT` is explicitly set. Use `dcc-mcp-cli list`, `search`,
|
|
90
|
+
`describe`, and `call` rather than storing the resolved endpoint.
|
|
91
|
+
|
|
92
|
+
## Validation
|
|
93
|
+
|
|
94
|
+
```powershell
|
|
95
|
+
python -m ruff check src tests tools
|
|
96
|
+
python -m ruff format --check src tests tools
|
|
97
|
+
python -m pytest
|
|
98
|
+
python tools/lint_skills.py
|
|
99
|
+
python -m build
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Privacy and safety
|
|
103
|
+
|
|
104
|
+
- Connections are limited to the local Shogun control stream.
|
|
105
|
+
- Tool results reduce file paths to base names.
|
|
106
|
+
- Errors report exception classes, not SDK install paths or machine details.
|
|
107
|
+
- The scene Skill is read-only; the file Skill exposes only bounded
|
|
108
|
+
import/save/export operations; processing never defaults to the full play
|
|
109
|
+
range.
|
|
110
|
+
- Authentication, licensing, UAC, and security dialogs are never automated.
|
|
111
|
+
|
|
112
|
+
Vicon and Shogun are trademarks of Vicon Motion Systems Ltd. This independent
|
|
113
|
+
adapter is not affiliated with or endorsed by Vicon.
|
|
114
|
+
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
MIT
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Shogun MCP showcase
|
|
2
|
+
|
|
3
|
+
This showcase demonstrates a bounded motion-capture workflow without publishing
|
|
4
|
+
studio capture data, installation paths, machine names, or credentials.
|
|
5
|
+
|
|
6
|
+
## What it proves
|
|
7
|
+
|
|
8
|
+
1. Generate an original 240-frame, 30 FPS BVH motion source.
|
|
9
|
+
2. Launch Shogun Post through the operator's normal package environment.
|
|
10
|
+
3. Bind the adapter to one explicit Shogun Post PID and its owned control port.
|
|
11
|
+
4. Discover the instance and its typed tools through `dcc-mcp-cli`.
|
|
12
|
+
5. Inspect the active scene through Vicon's official external Python SDK.
|
|
13
|
+
6. Probe the host's file-operation capability with the anonymous BVH through
|
|
14
|
+
the typed `shogun-files` Skill.
|
|
15
|
+
7. Probe the official `Timeline` and `Offline` interfaces through their typed
|
|
16
|
+
Skills without running UI fallback.
|
|
17
|
+
8. Continue to save/export only when the selected host build accepts the import;
|
|
18
|
+
otherwise retain the fail-closed result as compatibility evidence.
|
|
19
|
+
|
|
20
|
+
## Reproduce
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
23
|
+
python examples/showcase/generate_showcase_bvh.py
|
|
24
|
+
dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
|
|
25
|
+
dcc-mcp-cli list
|
|
26
|
+
dcc-mcp-cli search scene --dcc-type shogun
|
|
27
|
+
dcc-mcp-cli call <instance>.shogun_scene__inspect_scene --json '{}' --wait
|
|
28
|
+
dcc-mcp-cli load-skill shogun-timeline --dcc-type shogun --instance-id <instance>
|
|
29
|
+
dcc-mcp-cli call <instance>.shogun_timeline__inspect_timeline --json '{}' --wait
|
|
30
|
+
dcc-mcp-cli load-skill shogun-processing --dcc-type shogun --instance-id <instance>
|
|
31
|
+
dcc-mcp-cli call <instance>.shogun_processing__inspect_processing_settings --json '{"section":"reconstruct"}' --wait
|
|
32
|
+
dcc-mcp-cli load-skill shogun-files --dcc-type shogun --instance-id <instance>
|
|
33
|
+
dcc-mcp-cli call <instance>.shogun_files__import_motion --json-file import.json --wait
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The generated asset is deterministic and safe to commit. It contains no actor,
|
|
37
|
+
production, or filesystem metadata. A real production scene is intentionally
|
|
38
|
+
not included.
|
|
39
|
+
|
|
40
|
+
## Acceptance evidence
|
|
41
|
+
|
|
42
|
+
- the selected Shogun PID owns the resolved local control-stream listener;
|
|
43
|
+
- the adapter registers as `shogun` and reports Shogun Post 1.19;
|
|
44
|
+
- `inspect_scene` completes against the live application;
|
|
45
|
+
- Shogun Post 1.19 rejects the official SDK `ImportFile` call with
|
|
46
|
+
`ControlError`, and a follow-up typed inspection confirms no partial scene
|
|
47
|
+
mutation;
|
|
48
|
+
- import, save, and export implementations use only the official SDK and return
|
|
49
|
+
path-redacted result metadata, but are not presented as live-supported on
|
|
50
|
+
that host build;
|
|
51
|
+
- Shogun Post 1.19 rejects the official `Timeline` and `Offline` interface
|
|
52
|
+
commands as invalid for that host application; typed calls return bounded
|
|
53
|
+
errors, so support is not overclaimed and no processing mutation is attempted;
|
|
54
|
+
- returned scene paths are reduced to file names;
|
|
55
|
+
- vendor exceptions are reduced to exception class names without tracebacks;
|
|
56
|
+
- unit tests, skill validation, package build, metadata check, and CI all pass.
|
|
57
|
+
|
|
58
|
+
The illustration is an explanatory workflow graphic, not a Shogun screenshot.
|
|
59
|
+
Real-host acceptance retains separate CLI results and host-visible evidence.
|