creative-pipeline-mcp 0.2.14-alpha.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/LICENSE +18 -0
- package/NOTICE +9 -0
- package/README.md +205 -0
- package/SECURITY.md +19 -0
- package/docs/API_TOOLS.md +74 -0
- package/docs/ARCHITECTURE.md +28 -0
- package/docs/ARTIFACT_SCHEMA.md +43 -0
- package/docs/BLENDER_BRIDGE_STATUS_SCHEMA.md +42 -0
- package/docs/CEP_STATUS_SCHEMA.md +35 -0
- package/docs/COMPATIBILITY_MATRIX.md +36 -0
- package/docs/GPL_ADAPTERS.md +19 -0
- package/docs/INSTALL_BLENDER.md +39 -0
- package/docs/INSTALL_DASHBOARD.md +47 -0
- package/docs/INSTALL_PREMIERE.md +62 -0
- package/docs/LICENSING.md +19 -0
- package/docs/PREMIERE_E2E_TEST.md +55 -0
- package/docs/RELEASE_PROCESS.md +74 -0
- package/docs/ROADMAP.md +53 -0
- package/docs/SAFETY.md +21 -0
- package/docs/SECURITY.md +14 -0
- package/docs/TROUBLESHOOTING.md +46 -0
- package/docs/examples/adapter_check_report.sample.json +60 -0
- package/docs/examples/delivery_qc_report.sample.json +30 -0
- package/examples/blender-bridge-queue.mjs +42 -0
- package/examples/blender-e2e.mjs +53 -0
- package/examples/brief.txt +2 -0
- package/examples/minimal.gltf +23 -0
- package/examples/premiere-project-delivery.mjs +72 -0
- package/examples/premiere-qc-e2e.mjs +77 -0
- package/examples/sample-tool-call.json +2 -0
- package/package.json +77 -0
- package/packages/blender-gpl-adapters/LICENSE +6 -0
- package/packages/blender-gpl-adapters/dist/index.d.ts +10 -0
- package/packages/blender-gpl-adapters/dist/index.js +28 -0
- package/packages/blender-gpl-adapters/dist/index.js.map +1 -0
- package/packages/blender-gpl-adapters/package.json +15 -0
- package/packages/blender-gpl-adapters/src/index.ts +38 -0
- package/packages/blender-pro-mcp/dist/adapters/blenderBridge.d.ts +34 -0
- package/packages/blender-pro-mcp/dist/adapters/blenderBridge.js +79 -0
- package/packages/blender-pro-mcp/dist/adapters/blenderBridge.js.map +1 -0
- package/packages/blender-pro-mcp/dist/adapters/cli.d.ts +11 -0
- package/packages/blender-pro-mcp/dist/adapters/cli.js +121 -0
- package/packages/blender-pro-mcp/dist/adapters/cli.js.map +1 -0
- package/packages/blender-pro-mcp/dist/adapters/gltf.d.ts +21 -0
- package/packages/blender-pro-mcp/dist/adapters/gltf.js +99 -0
- package/packages/blender-pro-mcp/dist/adapters/gltf.js.map +1 -0
- package/packages/blender-pro-mcp/dist/adapters/preview.d.ts +1 -0
- package/packages/blender-pro-mcp/dist/adapters/preview.js +11 -0
- package/packages/blender-pro-mcp/dist/adapters/preview.js.map +1 -0
- package/packages/blender-pro-mcp/dist/index.d.ts +3 -0
- package/packages/blender-pro-mcp/dist/index.js +4 -0
- package/packages/blender-pro-mcp/dist/index.js.map +1 -0
- package/packages/blender-pro-mcp/dist/server.d.ts +1 -0
- package/packages/blender-pro-mcp/dist/server.js +4 -0
- package/packages/blender-pro-mcp/dist/server.js.map +1 -0
- package/packages/blender-pro-mcp/dist/tools/assetTools.d.ts +2 -0
- package/packages/blender-pro-mcp/dist/tools/assetTools.js +646 -0
- package/packages/blender-pro-mcp/dist/tools/assetTools.js.map +1 -0
- package/packages/blender-pro-mcp/dist/tools/shared.d.ts +3 -0
- package/packages/blender-pro-mcp/dist/tools/shared.js +94 -0
- package/packages/blender-pro-mcp/dist/tools/shared.js.map +1 -0
- package/packages/blender-pro-mcp/package.json +18 -0
- package/packages/blender-pro-mcp/src/adapters/blenderBridge.ts +106 -0
- package/packages/blender-pro-mcp/src/adapters/cli.ts +130 -0
- package/packages/blender-pro-mcp/src/adapters/gltf.ts +132 -0
- package/packages/blender-pro-mcp/src/adapters/preview.ts +11 -0
- package/packages/blender-pro-mcp/src/index.ts +3 -0
- package/packages/blender-pro-mcp/src/server.ts +4 -0
- package/packages/blender-pro-mcp/src/tools/assetTools.ts +663 -0
- package/packages/blender-pro-mcp/src/tools/shared.ts +99 -0
- package/packages/core/dist/approvalPolicy.d.ts +13 -0
- package/packages/core/dist/approvalPolicy.js +48 -0
- package/packages/core/dist/approvalPolicy.js.map +1 -0
- package/packages/core/dist/artifactStore.d.ts +14 -0
- package/packages/core/dist/artifactStore.js +77 -0
- package/packages/core/dist/artifactStore.js.map +1 -0
- package/packages/core/dist/coreTools.d.ts +2 -0
- package/packages/core/dist/coreTools.js +34 -0
- package/packages/core/dist/coreTools.js.map +1 -0
- package/packages/core/dist/index.d.ts +11 -0
- package/packages/core/dist/index.js +12 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/jobQueue.d.ts +11 -0
- package/packages/core/dist/jobQueue.js +14 -0
- package/packages/core/dist/jobQueue.js.map +1 -0
- package/packages/core/dist/licenseManifest.d.ts +7 -0
- package/packages/core/dist/licenseManifest.js +42 -0
- package/packages/core/dist/licenseManifest.js.map +1 -0
- package/packages/core/dist/mcpServer.d.ts +19 -0
- package/packages/core/dist/mcpServer.js +120 -0
- package/packages/core/dist/mcpServer.js.map +1 -0
- package/packages/core/dist/qcReport.d.ts +21 -0
- package/packages/core/dist/qcReport.js +25 -0
- package/packages/core/dist/qcReport.js.map +1 -0
- package/packages/core/dist/router.d.ts +7 -0
- package/packages/core/dist/router.js +55 -0
- package/packages/core/dist/router.js.map +1 -0
- package/packages/core/dist/schemaValidator.d.ts +8 -0
- package/packages/core/dist/schemaValidator.js +21 -0
- package/packages/core/dist/schemaValidator.js.map +1 -0
- package/packages/core/dist/server.d.ts +1 -0
- package/packages/core/dist/server.js +3 -0
- package/packages/core/dist/server.js.map +1 -0
- package/packages/core/dist/toolRegistry.d.ts +8 -0
- package/packages/core/dist/toolRegistry.js +25 -0
- package/packages/core/dist/toolRegistry.js.map +1 -0
- package/packages/core/dist/types.d.ts +58 -0
- package/packages/core/dist/types.js +2 -0
- package/packages/core/dist/types.js.map +1 -0
- package/packages/core/package.json +18 -0
- package/packages/core/src/approvalPolicy.ts +51 -0
- package/packages/core/src/artifactStore.ts +93 -0
- package/packages/core/src/coreTools.ts +36 -0
- package/packages/core/src/index.ts +11 -0
- package/packages/core/src/jobQueue.ts +22 -0
- package/packages/core/src/licenseManifest.ts +47 -0
- package/packages/core/src/mcpServer.ts +131 -0
- package/packages/core/src/qcReport.ts +53 -0
- package/packages/core/src/router.ts +61 -0
- package/packages/core/src/schemaValidator.ts +26 -0
- package/packages/core/src/server.ts +3 -0
- package/packages/core/src/toolRegistry.ts +31 -0
- package/packages/core/src/types.ts +78 -0
- package/packages/dashboard/dist/server.d.ts +1 -0
- package/packages/dashboard/dist/server.js +486 -0
- package/packages/dashboard/dist/server.js.map +1 -0
- package/packages/dashboard/package.json +18 -0
- package/packages/dashboard/src/server.ts +539 -0
- package/packages/director-agent/dist/index.d.ts +1 -0
- package/packages/director-agent/dist/index.js +2 -0
- package/packages/director-agent/dist/index.js.map +1 -0
- package/packages/director-agent/dist/server.d.ts +1 -0
- package/packages/director-agent/dist/server.js +4 -0
- package/packages/director-agent/dist/server.js.map +1 -0
- package/packages/director-agent/dist/tools.d.ts +2 -0
- package/packages/director-agent/dist/tools.js +115 -0
- package/packages/director-agent/dist/tools.js.map +1 -0
- package/packages/director-agent/package.json +18 -0
- package/packages/director-agent/src/index.ts +2 -0
- package/packages/director-agent/src/server.ts +4 -0
- package/packages/director-agent/src/tools.ts +116 -0
- package/packages/premiere-cep-panel/CSXS/manifest.xml +43 -0
- package/packages/premiere-cep-panel/README.md +21 -0
- package/packages/premiere-cep-panel/index.html +26 -0
- package/packages/premiere-cep-panel/js/main.js +107 -0
- package/packages/premiere-cep-panel/jsx/host.jsx +208 -0
- package/packages/premiere-cep-panel/package.json +8 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffmpegQc.d.ts +21 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffmpegQc.js +78 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffmpegQc.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffprobe.d.ts +25 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffprobe.js +73 -0
- package/packages/premiere-pro-mcp/dist/adapters/ffprobe.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/adapters/optionalTools.d.ts +11 -0
- package/packages/premiere-pro-mcp/dist/adapters/optionalTools.js +82 -0
- package/packages/premiere-pro-mcp/dist/adapters/optionalTools.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/adapters/premiereCep.d.ts +34 -0
- package/packages/premiere-pro-mcp/dist/adapters/premiereCep.js +79 -0
- package/packages/premiere-pro-mcp/dist/adapters/premiereCep.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/adapters/srt.d.ts +8 -0
- package/packages/premiere-pro-mcp/dist/adapters/srt.js +37 -0
- package/packages/premiere-pro-mcp/dist/adapters/srt.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/index.d.ts +2 -0
- package/packages/premiere-pro-mcp/dist/index.js +3 -0
- package/packages/premiere-pro-mcp/dist/index.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/server.d.ts +1 -0
- package/packages/premiere-pro-mcp/dist/server.js +4 -0
- package/packages/premiere-pro-mcp/dist/server.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/tools/mediaTools.d.ts +2 -0
- package/packages/premiere-pro-mcp/dist/tools/mediaTools.js +935 -0
- package/packages/premiere-pro-mcp/dist/tools/mediaTools.js.map +1 -0
- package/packages/premiere-pro-mcp/dist/tools/shared.d.ts +3 -0
- package/packages/premiere-pro-mcp/dist/tools/shared.js +136 -0
- package/packages/premiere-pro-mcp/dist/tools/shared.js.map +1 -0
- package/packages/premiere-pro-mcp/package.json +18 -0
- package/packages/premiere-pro-mcp/src/adapters/ffmpegQc.ts +106 -0
- package/packages/premiere-pro-mcp/src/adapters/ffprobe.ts +105 -0
- package/packages/premiere-pro-mcp/src/adapters/optionalTools.ts +94 -0
- package/packages/premiere-pro-mcp/src/adapters/premiereCep.ts +106 -0
- package/packages/premiere-pro-mcp/src/adapters/srt.ts +46 -0
- package/packages/premiere-pro-mcp/src/index.ts +3 -0
- package/packages/premiere-pro-mcp/src/server.ts +4 -0
- package/packages/premiere-pro-mcp/src/tools/mediaTools.ts +961 -0
- package/packages/premiere-pro-mcp/src/tools/shared.ts +147 -0
- package/packages/premiere-windows-adapter/dist/index.d.ts +12 -0
- package/packages/premiere-windows-adapter/dist/index.js +17 -0
- package/packages/premiere-windows-adapter/dist/index.js.map +1 -0
- package/packages/premiere-windows-adapter/package.json +12 -0
- package/packages/premiere-windows-adapter/src/index.ts +25 -0
- package/scripts/blender-bridge-worker.mjs +311 -0
- package/scripts/check-adapters.mjs +57 -0
- package/scripts/install-premiere-cep.mjs +43 -0
- package/scripts/package-premiere-cep.mjs +236 -0
- package/scripts/release-assets.mjs +146 -0
- package/scripts/simulate-premiere-cep.mjs +194 -0
- package/third_party_licenses/README.md +19 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
https://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 Creative Pipeline MCP contributors
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at:
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
|
package/NOTICE
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Creative Pipeline MCP
|
|
2
|
+
Copyright 2026 Creative Pipeline MCP contributors
|
|
3
|
+
|
|
4
|
+
This repository is an unofficial integration scaffold and QC pipeline.
|
|
5
|
+
It is not affiliated with Blender, Adobe, Premiere Pro, or 3D-Agent.
|
|
6
|
+
|
|
7
|
+
Optional external tools referenced by adapter manifests keep their own licenses.
|
|
8
|
+
See docs/LICENSING.md and third_party_licenses/README.md.
|
|
9
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Creative Pipeline MCP
|
|
2
|
+
|
|
3
|
+
[](https://github.com/taiyuhiga/creative-pipeline-mcp/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
QC-first MCP pipeline for Blender asset workflows and Adobe Premiere media workflows.
|
|
6
|
+
|
|
7
|
+
This repository implements a split creative pipeline architecture:
|
|
8
|
+
|
|
9
|
+
- `creative-mcp-core`: tool registry, router, approval policy, artifact store, QC reports, license manifest
|
|
10
|
+
- `blender-pro-mcp`: Blender/glTF asset inspection, preview artifacts, validation, optimization/export fallbacks
|
|
11
|
+
- `premiere-pro-mcp`: media ingest, ffprobe indexing, delivery QC, rough-cut OTIO plans, captions, audio/export plans
|
|
12
|
+
- `blender-gpl-adapters`: optional GPL adapter manifests kept separate from the core packages
|
|
13
|
+
- `premiere-windows-adapter`: Windows CEP/WebSocket reference guardrails
|
|
14
|
+
- `premiere-cep-panel`: minimal CEP panel scaffold for consuming Premiere IPC commands
|
|
15
|
+
- `director-agent`: production planning, Blender to Premiere handoff, full production reports, multi-agent review
|
|
16
|
+
- `dashboard`: local artifact/QC report viewer
|
|
17
|
+
|
|
18
|
+
## Status
|
|
19
|
+
|
|
20
|
+
Current version: `0.2.14-alpha.0`
|
|
21
|
+
|
|
22
|
+
This is an alpha. The QC-first path runs without Blender or Premiere installed:
|
|
23
|
+
|
|
24
|
+
- GLB/glTF metadata inspection and asset QC
|
|
25
|
+
- Media metadata QC through `ffprobe` when FFmpeg is installed
|
|
26
|
+
- Artifact writing, logs, license manifest, and approval policy
|
|
27
|
+
- server-side JSON Schema validation
|
|
28
|
+
- workspace input allowlists for local file reads
|
|
29
|
+
- pending approval artifacts for elevated tools
|
|
30
|
+
- real CLI adapters when optional tools are installed: headless Blender preview, bundled `gltf-transform`, optional `gltfpack`, FFmpeg black/silence/loudness checks, thumbnail extraction, FFmpeg `libvmaf` scoring
|
|
31
|
+
- Blender bridge queue/status IPC and a headless worker for trusted external scene and asset adapters
|
|
32
|
+
- Blender asset QC for triangle budget, origin, scale, normals, primary UVs, material count, and texture slots
|
|
33
|
+
- Blender optimization size comparison metrics and safe generated Blender script artifacts for game asset jobs
|
|
34
|
+
- template-based basic Blender repair for GLB/glTF assets when Blender is installed
|
|
35
|
+
- optional WhisperX, PySceneDetect, pyloudnorm, and VMAF adapter tools
|
|
36
|
+
- Dashboard approval queue UI, artifact previews, and job history
|
|
37
|
+
- Premiere CEP bridge for OTIO media import, duplicate import avoidance, sequence creation attempts, timeline-positioned clip insertion attempts, export command queueing, brand package command queueing, and standardized status JSON
|
|
38
|
+
- Premiere project-specific delivery builder for timeline, brand package, export plan, and CEP queue generation
|
|
39
|
+
- Premiere CEP host simulator for queue/status validation without a live Premiere runtime
|
|
40
|
+
- Premiere CEP unsigned package generation and optional ZXP signing hook
|
|
41
|
+
- approval-to-rerun flow in the dashboard for approved elevated tool requests
|
|
42
|
+
- Premiere CEP status reader
|
|
43
|
+
- Blender and generated-MP4 Premiere e2e examples
|
|
44
|
+
- v2.0+ manifests for USD, MaterialX, engine profiles, brand packages, social variants, subtitles, thumbnails, and Director Agent handoff
|
|
45
|
+
- MCP-style stdio JSON-RPC methods: `initialize`, `tools/list`, `tools/call`, `ping`
|
|
46
|
+
- CI runs unit tests on Node.js 20, 22, and 24, with separate package, adapter, Blender e2e, and Premiere QC e2e jobs
|
|
47
|
+
- guarded npm trusted-publishing workflow for release tags when npmjs.com trusted publisher settings are configured
|
|
48
|
+
|
|
49
|
+
Premiere timeline mutation and export/brand-package requests are queued through a trusted CEP file-based IPC adapter, with a minimal CEP panel scaffold included. WhisperX, PySceneDetect, pyloudnorm, VMAF, and GPL tools remain optional external adapters.
|
|
50
|
+
|
|
51
|
+
## Capability Status
|
|
52
|
+
|
|
53
|
+
| Feature | Status |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| GLB/glTF metadata QC | Working |
|
|
56
|
+
| Headless Blender preview | Working when Blender is installed |
|
|
57
|
+
| Blender bridge queue/status | Alpha worker process |
|
|
58
|
+
| glTF optimization | Working with `gltf-transform`; optional `gltfpack` |
|
|
59
|
+
| Basic Blender repair | Working when Blender is installed |
|
|
60
|
+
| Premiere media QC | Working when FFmpeg is installed |
|
|
61
|
+
| Premiere VMAF scoring | Working when FFmpeg includes `libvmaf` |
|
|
62
|
+
| Adapter availability report | Working with text and JSON output |
|
|
63
|
+
| Dashboard approvals/previews | Localhost-only, token-protected alpha |
|
|
64
|
+
| Premiere timeline creation | Project delivery builder + CEP scaffold |
|
|
65
|
+
| Premiere final export | Project export plan + CEP queue command |
|
|
66
|
+
| Full professional editing | Not v1 complete |
|
|
67
|
+
|
|
68
|
+
## Install
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm install
|
|
72
|
+
npm run build
|
|
73
|
+
npm test
|
|
74
|
+
npm run check:adapters
|
|
75
|
+
npm run check:adapters -- --json
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Blender e2e sample:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm run build
|
|
82
|
+
node examples/blender-e2e.mjs
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Blender bridge queue sample:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm run build
|
|
89
|
+
node examples/blender-bridge-queue.mjs
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Blender bridge worker dry-run:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm run blender:bridge-worker -- --once --dry-run
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Premiere media QC / CEP queue sample:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run build
|
|
102
|
+
node examples/premiere-qc-e2e.mjs
|
|
103
|
+
node examples/premiere-project-delivery.mjs
|
|
104
|
+
npm run simulate:premiere-cep -- --queue artifacts/examples/premiere-project-delivery/cep_queue --status artifacts/examples/premiere-project-delivery/cep_status
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Typical artifacts:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
artifacts/
|
|
111
|
+
adapter_check_report.json
|
|
112
|
+
blender/
|
|
113
|
+
cube_preview.png
|
|
114
|
+
cube_asset_qc_report.json
|
|
115
|
+
cube_optimized.glb
|
|
116
|
+
premiere/
|
|
117
|
+
source_rough_cut.otio
|
|
118
|
+
source_delivery_qc_report.json
|
|
119
|
+
source_thumbnail_1.png
|
|
120
|
+
cep_queue/
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Run MCP Servers
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npm run start:core
|
|
127
|
+
npm run start:blender
|
|
128
|
+
npm run start:premiere
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Dashboard:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
CREATIVE_MCP_DASHBOARD_TOKEN=change-me npm run start:dashboard
|
|
135
|
+
open "http://127.0.0.1:4173/?token=change-me"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Premiere CEP panel scaffold:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm run install:premiere-cep
|
|
142
|
+
npm run package:premiere-cep -- --verify
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Release assets:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npm run release:assets
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
npm publishing:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm publish --dry-run --provenance
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
For GitHub Actions publishing, configure npm trusted publishing for `.github/workflows/npm-publish.yml`, then set `NPM_TRUSTED_PUBLISHING_ENABLED=true` in repository variables.
|
|
158
|
+
|
|
159
|
+
Detailed docs:
|
|
160
|
+
|
|
161
|
+
- `docs/INSTALL_DASHBOARD.md`
|
|
162
|
+
- `docs/PREMIERE_E2E_TEST.md`
|
|
163
|
+
- `docs/API_TOOLS.md`
|
|
164
|
+
- `docs/COMPATIBILITY_MATRIX.md`
|
|
165
|
+
- `docs/CEP_STATUS_SCHEMA.md`
|
|
166
|
+
- `docs/ARTIFACT_SCHEMA.md`
|
|
167
|
+
- `docs/RELEASE_PROCESS.md`
|
|
168
|
+
- `docs/TROUBLESHOOTING.md`
|
|
169
|
+
|
|
170
|
+
Example `tools/list` request:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Example Blender QC call:
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"blender.validate_asset","arguments":{"path":"examples/minimal.glb","maxTriangles":50000}}}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Example Premiere QC call:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"premiere.run_delivery_qc","arguments":{"path":"source.mp4","targetWidth":1080,"targetHeight":1920,"maxDuration":60}}}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Artifacts are written to `artifacts/` unless `CREATIVE_MCP_ARTIFACTS` is set.
|
|
189
|
+
Input files must be under `CREATIVE_MCP_WORKSPACE_ROOTS`; by default that is the current working directory.
|
|
190
|
+
|
|
191
|
+
## Safety
|
|
192
|
+
|
|
193
|
+
Default permission is `safe_write`. Tools marked `project_write`, `destructive`, or `admin` write a pending approval artifact unless a higher permission level is configured:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
CREATIVE_MCP_PERMISSION=project_write npm run start:premiere
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Use copies for production projects. Direct destructive operations, raw `bpy`, raw ExtendScript, deletion, publishing, external upload, cloud sync, and GPL adapter activation are not enabled by default.
|
|
200
|
+
|
|
201
|
+
## Licensing And Trademarks
|
|
202
|
+
|
|
203
|
+
This is an unofficial tool. It is not affiliated with or endorsed by Blender, Adobe, Premiere Pro, or 3D-Agent. Blender, Adobe, and Premiere Pro trademarks belong to their owners.
|
|
204
|
+
|
|
205
|
+
3D-Agent is not included. GPL tools are separated into optional external adapters so the Apache-2.0 core packages do not directly import GPL code.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Branch
|
|
4
|
+
|
|
5
|
+
Security fixes target `main`.
|
|
6
|
+
|
|
7
|
+
## Model
|
|
8
|
+
|
|
9
|
+
The default runtime permission is `safe_write`. Destructive actions, raw script execution, final delivery export, publishing, external upload, cloud sync, shell operations, and GPL adapter activation require explicit elevated configuration or external approval.
|
|
10
|
+
|
|
11
|
+
Do not connect these servers to untrusted MCP clients. Premiere and Blender bridge adapters can control local creative applications once enabled.
|
|
12
|
+
|
|
13
|
+
Input paths are restricted to `CREATIVE_MCP_WORKSPACE_ROOTS`. Symlinks that resolve outside those roots are rejected by default; set `CREATIVE_MCP_ALLOW_SYMLINKS=true` only for trusted workspaces.
|
|
14
|
+
|
|
15
|
+
The dashboard binds to `127.0.0.1` and requires `CREATIVE_MCP_DASHBOARD_TOKEN`. Do not expose it through a proxy or public interface.
|
|
16
|
+
|
|
17
|
+
## Reporting
|
|
18
|
+
|
|
19
|
+
Open a private security advisory or contact the repository owner. Do not include private media, project files, credentials, or unpublished client work in public reports.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# API Tools
|
|
2
|
+
|
|
3
|
+
The public alpha tool schemas are intentionally strict. Unknown top-level input properties are rejected before execution.
|
|
4
|
+
|
|
5
|
+
## Core
|
|
6
|
+
|
|
7
|
+
- `core.list_capabilities`
|
|
8
|
+
- `core.read_license_manifest`
|
|
9
|
+
- `core.write_run_log`
|
|
10
|
+
|
|
11
|
+
## Blender
|
|
12
|
+
|
|
13
|
+
- `blender.read_bridge_status`
|
|
14
|
+
- `blender.await_bridge_status`
|
|
15
|
+
- `blender.create_scene`
|
|
16
|
+
- `blender.apply_material`
|
|
17
|
+
- `blender.modify_asset`
|
|
18
|
+
- `blender.create_asset`
|
|
19
|
+
- `blender.inspect_scene`
|
|
20
|
+
- `blender.configure_engine_profile`
|
|
21
|
+
- `blender.create_usd_pipeline`
|
|
22
|
+
- `blender.create_materialx_workflow`
|
|
23
|
+
- `blender.plan_rig_animation`
|
|
24
|
+
- `blender.validate_asset`
|
|
25
|
+
- `blender.render_preview`
|
|
26
|
+
- `blender.optimize_asset`
|
|
27
|
+
- `blender.export_game_ready`
|
|
28
|
+
- `blender.create_game_asset`
|
|
29
|
+
- `blender.create_material_pack`
|
|
30
|
+
- `blender.fix_asset_issues`
|
|
31
|
+
- `blender.repair_basic_asset`
|
|
32
|
+
|
|
33
|
+
## Premiere
|
|
34
|
+
|
|
35
|
+
- `premiere.read_cep_status`
|
|
36
|
+
- `premiere.await_cep_status`
|
|
37
|
+
- `premiere.transcribe_media`
|
|
38
|
+
- `premiere.detect_scenes`
|
|
39
|
+
- `premiere.measure_loudness`
|
|
40
|
+
- `premiere.measure_vmaf`
|
|
41
|
+
- `premiere.build_timeline_from_otio`
|
|
42
|
+
- `premiere.ingest_media`
|
|
43
|
+
- `premiere.index_media`
|
|
44
|
+
- `premiere.run_delivery_qc`
|
|
45
|
+
- `premiere.make_rough_cut`
|
|
46
|
+
- `premiere.build_project_delivery`
|
|
47
|
+
- `premiere.auto_caption`
|
|
48
|
+
- `premiere.mix_audio`
|
|
49
|
+
- `premiere.export_video`
|
|
50
|
+
- `premiere.finalize_export_qc`
|
|
51
|
+
- `premiere.export_social_variants`
|
|
52
|
+
- `premiere.apply_brand_package`
|
|
53
|
+
- `premiere.create_multilanguage_subtitles`
|
|
54
|
+
- `premiere.generate_thumbnail_plan`
|
|
55
|
+
- `premiere.repurpose_podcast`
|
|
56
|
+
- `premiere.fix_qc_issues`
|
|
57
|
+
|
|
58
|
+
## Director
|
|
59
|
+
|
|
60
|
+
- `director.plan_production`
|
|
61
|
+
- `director.handoff_blender_asset`
|
|
62
|
+
- `director.full_production_report`
|
|
63
|
+
- `director.multi_agent_review`
|
|
64
|
+
|
|
65
|
+
## Stability
|
|
66
|
+
|
|
67
|
+
Alpha schemas may still change. The intended v1 freeze covers:
|
|
68
|
+
|
|
69
|
+
- tool names
|
|
70
|
+
- required fields
|
|
71
|
+
- output `structuredContent`
|
|
72
|
+
- QC report schema
|
|
73
|
+
- CEP status schema
|
|
74
|
+
- artifact layout
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
Creative Pipeline MCP is split into small packages:
|
|
4
|
+
|
|
5
|
+
- `core`: registry, router, job queue, approval policy, artifact store, QC report schema, license manifest
|
|
6
|
+
- `blender-pro-mcp`: glTF/GLB inspection, asset QC, preview/export/optimization artifact flow
|
|
7
|
+
- `premiere-pro-mcp`: media ingest, metadata indexing, rough cut plans, captions, audio/export plans, delivery QC
|
|
8
|
+
- `premiere-cep-panel`: minimal CEP panel scaffold for file-based Premiere IPC commands
|
|
9
|
+
- `blender-gpl-adapters`: optional GPL process-boundary manifests
|
|
10
|
+
- `premiere-windows-adapter`: CEP/WebSocket reference checks for Windows
|
|
11
|
+
- `dashboard`: artifact, QC report, and approval queue viewer
|
|
12
|
+
|
|
13
|
+
The dashboard reads `artifacts/approvals/pending`, resolves approve/reject decisions into `artifacts/approvals/resolved`, and reruns approved elevated tool requests with the approved risk level.
|
|
14
|
+
|
|
15
|
+
The public tool surface stays small. Low-level OSS integrations are adapter capabilities selected behind macro tools.
|
|
16
|
+
|
|
17
|
+
## MCP Methods
|
|
18
|
+
|
|
19
|
+
The servers implement a stdio JSON-RPC subset:
|
|
20
|
+
|
|
21
|
+
- `initialize`
|
|
22
|
+
- `ping`
|
|
23
|
+
- `tools/list`
|
|
24
|
+
- `tools/call`
|
|
25
|
+
|
|
26
|
+
## Artifact Flow
|
|
27
|
+
|
|
28
|
+
All generated reports, previews, manifests, logs, captions, and OTIO plans are written under `artifacts/` by default.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Artifact Schema
|
|
2
|
+
|
|
3
|
+
Artifacts are written under `CREATIVE_MCP_ARTIFACTS`, defaulting to `artifacts/`.
|
|
4
|
+
|
|
5
|
+
## Common Layout
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
artifacts/
|
|
9
|
+
adapter_check_report.json
|
|
10
|
+
approvals/
|
|
11
|
+
pending/
|
|
12
|
+
resolved/
|
|
13
|
+
blender/
|
|
14
|
+
examples/
|
|
15
|
+
logs/
|
|
16
|
+
premiere/
|
|
17
|
+
cep_queue/
|
|
18
|
+
cep_status/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Approval Request
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"action": "blender.export_game_ready",
|
|
26
|
+
"risk": "project_write",
|
|
27
|
+
"currentPermission": "safe_write",
|
|
28
|
+
"requestedAt": "2026-01-01T00:00:00.000Z",
|
|
29
|
+
"expiresAt": "2026-01-02T00:00:00.000Z",
|
|
30
|
+
"approvalToken": "00000000-0000-4000-8000-000000000000",
|
|
31
|
+
"artifactRoot": "/workspace/artifacts",
|
|
32
|
+
"workspaceRoots": ["/workspace"],
|
|
33
|
+
"expectedOutputs": {
|
|
34
|
+
"artifacts": "tool-dependent",
|
|
35
|
+
"sideEffects": "project_write"
|
|
36
|
+
},
|
|
37
|
+
"input": {}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Adapter Check Report
|
|
42
|
+
|
|
43
|
+
See `docs/examples/adapter_check_report.sample.json`.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Blender Bridge Status Schema
|
|
2
|
+
|
|
3
|
+
Trusted Blender bridge adapters can write status files under `artifacts/blender/bridge_status` or `CREATIVE_MCP_BLENDER_STATUS_DIR`.
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"schema": "creative.pipeline.blender.status.v1",
|
|
8
|
+
"commandId": "1780000000000-abc",
|
|
9
|
+
"commandType": "create_asset",
|
|
10
|
+
"status": "success",
|
|
11
|
+
"message": "asset created",
|
|
12
|
+
"details": {
|
|
13
|
+
"outputPath": "artifacts/blender/asset.glb",
|
|
14
|
+
"previewPath": "artifacts/blender/asset_preview.png"
|
|
15
|
+
},
|
|
16
|
+
"finishedAt": "2026-01-01T00:00:00.000Z"
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Supported `commandType` values:
|
|
21
|
+
|
|
22
|
+
- `create_scene`
|
|
23
|
+
- `create_asset`
|
|
24
|
+
- `modify_asset`
|
|
25
|
+
- `apply_material`
|
|
26
|
+
- `run_safe_script`
|
|
27
|
+
|
|
28
|
+
Supported `status` values:
|
|
29
|
+
|
|
30
|
+
- `success`
|
|
31
|
+
- `accepted`
|
|
32
|
+
- `error`
|
|
33
|
+
|
|
34
|
+
`blender.read_bridge_status` reads normalized status records. `blender.await_bridge_status` polls by `commandId` and/or `commandType`.
|
|
35
|
+
|
|
36
|
+
The bundled worker can consume queued commands and write this schema:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm run blender:bridge-worker -- --once --dry-run
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
When not in dry-run mode, set `BLENDER_BIN` or make `blender` available on `PATH`. Processed command files are archived under `bridge_queue/processed` by default.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# CEP Status Schema
|
|
2
|
+
|
|
3
|
+
Premiere CEP status files use:
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"schema": "creative.pipeline.premiere.status.v1",
|
|
8
|
+
"commandId": "1780000000000-abc",
|
|
9
|
+
"commandType": "build_timeline_from_otio",
|
|
10
|
+
"status": "success",
|
|
11
|
+
"message": "timeline build completed",
|
|
12
|
+
"details": {
|
|
13
|
+
"imported": 1,
|
|
14
|
+
"media": 1,
|
|
15
|
+
"inserted": 1,
|
|
16
|
+
"sequenceName": "Creative Pipeline Rough Cut"
|
|
17
|
+
},
|
|
18
|
+
"finishedAt": "2026-01-01T00:00:00.000Z",
|
|
19
|
+
"processedAt": "2026-01-01T00:00:01.000Z"
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Supported `commandType` values:
|
|
24
|
+
|
|
25
|
+
- `build_timeline_from_otio`
|
|
26
|
+
- `export_sequence`
|
|
27
|
+
- `apply_brand_package`
|
|
28
|
+
|
|
29
|
+
Supported `status` values:
|
|
30
|
+
|
|
31
|
+
- `success`
|
|
32
|
+
- `accepted`
|
|
33
|
+
- `error`
|
|
34
|
+
|
|
35
|
+
The MCP status reader normalizes legacy status files to this schema. `premiere.await_cep_status` can poll by `commandId` and/or `commandType`, and `premiere.finalize_export_qc` uses `export_sequence` status details to locate the exported file before writing delivery QC.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Compatibility Matrix
|
|
2
|
+
|
|
3
|
+
This matrix tracks what must be verified before v1.
|
|
4
|
+
|
|
5
|
+
| Area | Status | Evidence |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Node 20 | CI covered | `unit-test (20)` |
|
|
8
|
+
| Node 22 | CI covered | `unit-test (22)` |
|
|
9
|
+
| Node 24 | CI covered | `unit-test (24)` |
|
|
10
|
+
| npm pack | CI covered | `package-test` |
|
|
11
|
+
| FFmpeg installed | CI covered | `premiere-qc-e2e` installs FFmpeg |
|
|
12
|
+
| FFmpeg missing | Partial | adapter check reports missing tools without failing |
|
|
13
|
+
| FFmpeg libvmaf installed/missing | Adapter check | `ffmpeg-libvmaf` availability report |
|
|
14
|
+
| Blender installed | Local/optional CI | `blender-e2e-optional` runs when available |
|
|
15
|
+
| Blender missing | Partial | renderer/optimizer fallbacks are tested through unit paths |
|
|
16
|
+
| macOS + Blender | Local covered | local e2e evidence |
|
|
17
|
+
| macOS + Premiere | Manual required | see `docs/PREMIERE_E2E_TEST.md` |
|
|
18
|
+
| Windows + Blender | Manual required | no current hosted verification |
|
|
19
|
+
| Windows + Premiere | Manual required | no current hosted verification |
|
|
20
|
+
| WhisperX installed/missing | Adapter check | availability report |
|
|
21
|
+
| PySceneDetect installed/missing | Adapter check | availability report |
|
|
22
|
+
| pyloudnorm installed/missing | Adapter check | availability report |
|
|
23
|
+
|
|
24
|
+
Manual results should be recorded with:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
OS:
|
|
28
|
+
Node:
|
|
29
|
+
Blender:
|
|
30
|
+
Premiere:
|
|
31
|
+
FFmpeg:
|
|
32
|
+
Command:
|
|
33
|
+
Result:
|
|
34
|
+
Artifacts:
|
|
35
|
+
Notes:
|
|
36
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# GPL Adapters
|
|
2
|
+
|
|
3
|
+
The GPL adapter package is separate by design.
|
|
4
|
+
|
|
5
|
+
Use process boundaries:
|
|
6
|
+
|
|
7
|
+
- command-line calls
|
|
8
|
+
- sockets
|
|
9
|
+
- temporary JSON files
|
|
10
|
+
- Blender addon execution outside the Apache-2.0 core
|
|
11
|
+
|
|
12
|
+
Optional adapter targets:
|
|
13
|
+
|
|
14
|
+
- BlenderProc
|
|
15
|
+
- BlenderGIS
|
|
16
|
+
- Sverchok
|
|
17
|
+
|
|
18
|
+
Do not directly import GPL implementation code into `packages/core`, `packages/blender-pro-mcp`, or `packages/premiere-pro-mcp`.
|
|
19
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Blender Install Notes
|
|
2
|
+
|
|
3
|
+
The alpha QC path does not require Blender for `.glb` and `.gltf` inspection.
|
|
4
|
+
|
|
5
|
+
For rendered previews, set `BLENDER_BIN` or make `blender` available on `PATH`. `blender.render_preview` will use headless Blender when available and falls back to a placeholder preview when it is not.
|
|
6
|
+
|
|
7
|
+
For `.blend` inspection, procedural generation, or scene mutation, install Blender separately and connect a trusted external bridge adapter. `blender.create_scene`, `blender.create_asset`, `blender.modify_asset`, `blender.apply_material`, and `blender.create_game_asset` queue bridge commands under `CREATIVE_MCP_BLENDER_IPC_DIR` for that adapter to consume. Keep raw `bpy` execution disabled unless the client and project are trusted.
|
|
8
|
+
|
|
9
|
+
Default bridge paths:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
artifacts/blender/bridge_queue
|
|
13
|
+
artifacts/blender/bridge_status
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Use `blender.read_bridge_status` or `blender.await_bridge_status` to read status JSON written by the bridge adapter. For status records, see `docs/BLENDER_BRIDGE_STATUS_SCHEMA.md`.
|
|
17
|
+
|
|
18
|
+
Generated bridge queue sample:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm run build
|
|
22
|
+
node examples/blender-bridge-queue.mjs
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Worker process:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm run blender:bridge-worker -- --once --dry-run
|
|
29
|
+
BLENDER_BIN=/Applications/Blender.app/Contents/MacOS/Blender npm run blender:bridge-worker -- --once
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The worker drains command JSON from the queue, writes normalized status JSON, archives processed commands under `bridge_queue/processed`, and runs generated safe Blender scripts through `BLENDER_BIN` when not in dry-run mode. Use `--queue`, `--status`, `--output`, `--archive`, `--poll-ms`, and `--max-commands` to point it at project-specific paths. Without `--once`, it keeps polling.
|
|
33
|
+
|
|
34
|
+
Suggested external adapter roles:
|
|
35
|
+
|
|
36
|
+
- glTF-Transform or gltfpack optimization through `GLTF_TRANSFORM_BIN`, `GLTFPACK_BIN`, or `PATH`
|
|
37
|
+
- meshoptimizer and xatlas
|
|
38
|
+
- OpenImageIO/OpenColorIO preview and color checks
|
|
39
|
+
- optional GPL adapters for BlenderProc, BlenderGIS, and Sverchok
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Dashboard
|
|
2
|
+
|
|
3
|
+
The dashboard is a local-only artifact, preview, job-history, and approval viewer. It can approve elevated tool requests and rerun the approved tool, so it must not be exposed to a network.
|
|
4
|
+
|
|
5
|
+
## Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
CREATIVE_MCP_DASHBOARD_TOKEN=change-me npm run start:dashboard
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Open:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
http://127.0.0.1:4173/?token=change-me
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The server binds to `127.0.0.1` only. `CREATIVE_MCP_DASHBOARD_TOKEN` is required. API requests must send the token as `x-creative-mcp-dashboard-token` or as the `token` query parameter.
|
|
18
|
+
|
|
19
|
+
## APIs
|
|
20
|
+
|
|
21
|
+
- `GET /api/reports`
|
|
22
|
+
- `GET /api/artifacts`
|
|
23
|
+
- `GET /api/artifacts/file?path=<artifact-relative-path>`
|
|
24
|
+
- `GET /api/jobs`
|
|
25
|
+
- `GET /api/approvals`
|
|
26
|
+
- `POST /api/approvals/resolve`
|
|
27
|
+
|
|
28
|
+
## Approval Risk
|
|
29
|
+
|
|
30
|
+
Approving a pending request can rerun a `project_write`, `destructive`, or `admin` tool with the stored input. Review the request JSON before approving.
|
|
31
|
+
|
|
32
|
+
Reject requests that:
|
|
33
|
+
|
|
34
|
+
- reference unexpected source paths
|
|
35
|
+
- request broad workspace access
|
|
36
|
+
- target production project files directly
|
|
37
|
+
- request raw script, shell, publishing, upload, or sync behavior
|
|
38
|
+
|
|
39
|
+
## Environment
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
PORT=4173
|
|
43
|
+
CREATIVE_MCP_ARTIFACTS=artifacts
|
|
44
|
+
CREATIVE_MCP_DASHBOARD_TOKEN=change-me
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Do not proxy this dashboard or bind it to public interfaces.
|