brainferno-mcp-bridge 0.1.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 +19 -0
- package/LICENSE +202 -0
- package/NOTICE +27 -0
- package/README.md +410 -0
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/bridge/handshake.d.ts +34 -0
- package/dist/bridge/handshake.js +36 -0
- package/dist/bridge/handshake.js.map +1 -0
- package/dist/bridge/script-escape.d.ts +16 -0
- package/dist/bridge/script-escape.js +47 -0
- package/dist/bridge/script-escape.js.map +1 -0
- package/dist/bridge/socket.d.ts +79 -0
- package/dist/bridge/socket.js +424 -0
- package/dist/bridge/socket.js.map +1 -0
- package/dist/bridge/types.d.ts +49 -0
- package/dist/bridge/types.js +38 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/config.d.ts +87 -0
- package/dist/config.js +172 -0
- package/dist/config.js.map +1 -0
- package/dist/drivers/ame-webservice.d.ts +118 -0
- package/dist/drivers/ame-webservice.js +356 -0
- package/dist/drivers/ame-webservice.js.map +1 -0
- package/dist/drivers/illustrator-delegate.d.ts +71 -0
- package/dist/drivers/illustrator-delegate.js +120 -0
- package/dist/drivers/illustrator-delegate.js.map +1 -0
- package/dist/drivers/osscript.d.ts +60 -0
- package/dist/drivers/osscript.js +230 -0
- package/dist/drivers/osscript.js.map +1 -0
- package/dist/http.d.ts +26 -0
- package/dist/http.js +126 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/install/cli.d.ts +2 -0
- package/dist/install/cli.js +310 -0
- package/dist/install/cli.js.map +1 -0
- package/dist/install/lib.d.ts +76 -0
- package/dist/install/lib.js +194 -0
- package/dist/install/lib.js.map +1 -0
- package/dist/jobs.d.ts +117 -0
- package/dist/jobs.js +196 -0
- package/dist/jobs.js.map +1 -0
- package/dist/logging.d.ts +8 -0
- package/dist/logging.js +33 -0
- package/dist/logging.js.map +1 -0
- package/dist/server.d.ts +38 -0
- package/dist/server.js +90 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/after-effects.d.ts +100 -0
- package/dist/tools/after-effects.js +695 -0
- package/dist/tools/after-effects.js.map +1 -0
- package/dist/tools/audio.d.ts +118 -0
- package/dist/tools/audio.js +356 -0
- package/dist/tools/audio.js.map +1 -0
- package/dist/tools/audition.d.ts +15 -0
- package/dist/tools/audition.js +329 -0
- package/dist/tools/audition.js.map +1 -0
- package/dist/tools/diagnostics.d.ts +17 -0
- package/dist/tools/diagnostics.js +61 -0
- package/dist/tools/diagnostics.js.map +1 -0
- package/dist/tools/illustrator-delegate.d.ts +9 -0
- package/dist/tools/illustrator-delegate.js +61 -0
- package/dist/tools/illustrator-delegate.js.map +1 -0
- package/dist/tools/illustrator.d.ts +36 -0
- package/dist/tools/illustrator.js +299 -0
- package/dist/tools/illustrator.js.map +1 -0
- package/dist/tools/jobs.d.ts +39 -0
- package/dist/tools/jobs.js +83 -0
- package/dist/tools/jobs.js.map +1 -0
- package/dist/tools/media-encoder.d.ts +17 -0
- package/dist/tools/media-encoder.js +180 -0
- package/dist/tools/media-encoder.js.map +1 -0
- package/dist/tools/photoshop.d.ts +17 -0
- package/dist/tools/photoshop.js +202 -0
- package/dist/tools/photoshop.js.map +1 -0
- package/dist/tools/pipelines.d.ts +23 -0
- package/dist/tools/pipelines.js +254 -0
- package/dist/tools/pipelines.js.map +1 -0
- package/dist/tools/premiere.d.ts +26 -0
- package/dist/tools/premiere.js +396 -0
- package/dist/tools/premiere.js.map +1 -0
- package/dist/tools/result.d.ts +17 -0
- package/dist/tools/result.js +51 -0
- package/dist/tools/result.js.map +1 -0
- package/package.json +64 -0
- package/panels/panel-cep/CSXS/manifest.xml +53 -0
- package/panels/panel-cep/bridge-client.js +204 -0
- package/panels/panel-cep/host.jsx +62 -0
- package/panels/panel-cep/icons/logo.svg +61 -0
- package/panels/panel-cep/index.html +48 -0
- package/panels/panel-cep/main.js +173 -0
- package/panels/panel-uxp/README.md +36 -0
- package/panels/panel-uxp/bridge-client.js +204 -0
- package/panels/panel-uxp/commands.js +375 -0
- package/panels/panel-uxp/icons/icon.png +0 -0
- package/panels/panel-uxp/icons/icon@2x.png +0 -0
- package/panels/panel-uxp/icons/logo.svg +61 -0
- package/panels/panel-uxp/index.html +47 -0
- package/panels/panel-uxp/main.js +109 -0
- package/panels/panel-uxp/manifest.json +89 -0
- package/panels/panel-uxp-ppro/README.md +11 -0
- package/panels/panel-uxp-ppro/bridge-client.js +204 -0
- package/panels/panel-uxp-ppro/commands.js +797 -0
- package/panels/panel-uxp-ppro/icons/icon.png +0 -0
- package/panels/panel-uxp-ppro/icons/icon@2x.png +0 -0
- package/panels/panel-uxp-ppro/icons/logo.svg +61 -0
- package/panels/panel-uxp-ppro/index.html +64 -0
- package/panels/panel-uxp-ppro/main.js +113 -0
- package/panels/panel-uxp-ppro/manifest.json +65 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## v0.1.0 — 2026-08-28
|
|
4
|
+
|
|
5
|
+
First public release.
|
|
6
|
+
|
|
7
|
+
- MCP server (stdio; optional token-protected Streamable HTTP for other computers) with a
|
|
8
|
+
hardened loopback hub for the in-app panels.
|
|
9
|
+
- Panels: Photoshop and Premiere Pro (UXP), After Effects and Audition (CEP), each with a
|
|
10
|
+
live log and a kill switch.
|
|
11
|
+
- Tools: Photoshop 18 · After Effects 24 · Premiere Pro 28 · Illustrator 7 (+ pass-through to
|
|
12
|
+
Adobe's 46 Illustrator MCP tools) · Audition 12 · Media Encoder 6 (headless web service) ·
|
|
13
|
+
audio/ffmpeg 9 · pipelines 4 · jobs 4.
|
|
14
|
+
- Job registry with progress, cancel, per-job work folders, and failure reports naming the
|
|
15
|
+
step and its recovery tool.
|
|
16
|
+
- Installer: choose apps, local vs shared-on-network, Illustrator key, panel setup, Claude
|
|
17
|
+
Code registration.
|
|
18
|
+
- Verified live on Windows 11 with the Adobe 2026 applications; macOS paths written but not yet
|
|
19
|
+
run.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Brainferno MCP Bridge
|
|
2
|
+
Copyright 2026 Brainferno
|
|
3
|
+
|
|
4
|
+
This product includes software developed by Brainferno (https://github.com/Brainferno).
|
|
5
|
+
|
|
6
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
|
7
|
+
software except in compliance with the License. You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software distributed under the
|
|
12
|
+
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
13
|
+
either express or implied. See the License for the specific language governing permissions
|
|
14
|
+
and limitations under the License.
|
|
15
|
+
|
|
16
|
+
Trademarks
|
|
17
|
+
|
|
18
|
+
Adobe, After Effects, Audition, Creative Cloud, Illustrator, Media Encoder, Photoshop, and
|
|
19
|
+
Premiere Pro are either registered trademarks or trademarks of Adobe in the United States
|
|
20
|
+
and/or other countries. This project is not authorized, endorsed, or sponsored by Adobe.
|
|
21
|
+
It is independent software that works with those Adobe products through their published
|
|
22
|
+
extensibility interfaces (UXP, CEP, ExtendScript, the Illustrator MCP server, and the
|
|
23
|
+
Media Encoder web service). Section 6 of the Apache License grants no trademark rights:
|
|
24
|
+
neither the Adobe marks nor the Brainferno name and logo may be used to name or promote
|
|
25
|
+
derived products without permission.
|
|
26
|
+
|
|
27
|
+
Third-party software and materials are listed in THIRD_PARTY_NOTICES.md.
|
package/README.md
ADDED
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
# Brainferno MCP Bridge (`brainferno-mcp-bridge`)
|
|
2
|
+
|
|
3
|
+
[](https://github.com/Brainferno/brainferno-mcp-bridge/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/Brainferno/brainferno-mcp-bridge/releases)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
**Let an AI assistant run your Adobe video and graphics pipeline.**
|
|
8
|
+
|
|
9
|
+
Brainferno MCP Bridge is an [MCP](https://modelcontextprotocol.io) server that gives Claude
|
|
10
|
+
(Claude Code today; any MCP client) hands inside **Adobe Photoshop, Adobe After Effects,
|
|
11
|
+
Adobe Premiere Pro, Adobe Illustrator, Adobe Audition, and Adobe Media Encoder software** —
|
|
12
|
+
the apps you already have open, on the projects you already have loaded. It is independent
|
|
13
|
+
software for use with those Adobe products; it is not made or endorsed by Adobe (see
|
|
14
|
+
[Trademarks](#trademarks)). You describe the work in plain language; the assistant builds the
|
|
15
|
+
comp, cuts the sequence, normalizes the audio, renders the file, and shows you previews along
|
|
16
|
+
the way. Every action is one undo step in the app, so you can always step back.
|
|
17
|
+
|
|
18
|
+
- **124 tools** across six applications, plus an ffmpeg audio lane that works with every
|
|
19
|
+
Adobe app closed.
|
|
20
|
+
- **Cross-app pipelines**: one request runs Photoshop → After Effects → aerender → Premiere
|
|
21
|
+
→ ffmpeg → back onto the timeline, with progress and a clear report if a step fails.
|
|
22
|
+
- **You can see what it did**: frame previews from After Effects and Premiere, document
|
|
23
|
+
previews from Photoshop and Illustrator, waveforms from audio files.
|
|
24
|
+
- **Runs on your machine.** Nothing leaves your computer unless you turn on *shared* mode
|
|
25
|
+
for other computers on your network (token-protected).
|
|
26
|
+
|
|
27
|
+
> Status: v0.1 — every tool verified live on Windows (Adobe 2026 apps). macOS paths are
|
|
28
|
+
> written but not yet run. See [Status](#status).
|
|
29
|
+
|
|
30
|
+
The companion panel inside each app — here in Adobe After Effects and Adobe Photoshop —
|
|
31
|
+
shows the connection, a live log, and a kill switch:
|
|
32
|
+
|
|
33
|
+
| After Effects (CEP panel) | Photoshop (UXP panel) |
|
|
34
|
+
| :---: | :---: |
|
|
35
|
+
| <img src="https://raw.githubusercontent.com/Brainferno/brainferno-mcp-bridge/main/docs/images/panel-after-effects.png" alt="Brainferno MCP Bridge panel in After Effects" width="380"> | <img src="https://raw.githubusercontent.com/Brainferno/brainferno-mcp-bridge/main/docs/images/panel-photoshop.png" alt="Brainferno MCP Bridge panel in Photoshop" width="380"> |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## What you can ask for
|
|
40
|
+
|
|
41
|
+
Examples that work today, in one conversation:
|
|
42
|
+
|
|
43
|
+
- *"Take my open Photoshop document, export it, and drop it into the 'Title' comp in
|
|
44
|
+
After Effects as a new layer."*
|
|
45
|
+
- *"Make a 1920×1080 comp, add a dark background and the text 'Brainferno' in orange,
|
|
46
|
+
animate it sliding in from the left with easy ease, add a glow, and show me frame 2."*
|
|
47
|
+
- *"Render the comp with aerender and put it on the Premiere timeline at 10 seconds."*
|
|
48
|
+
- *"Import these three clips, build a sequence from the first one, put the others after it,
|
|
49
|
+
add a one-second cross dissolve between each, and add a marker where the music should hit."*
|
|
50
|
+
- *"Scale the still to 60 % and animate it up to 100 % over its length."*
|
|
51
|
+
- *"Export the sequence audio, denoise it, normalize it to −16 LUFS, and lay it on A2."*
|
|
52
|
+
- *"Open this WAV in Audition, apply my 'Podcast Voice' favorite, export it as MP3."*
|
|
53
|
+
- *"Measure the loudness of every file in this folder and tell me which ones are too hot."*
|
|
54
|
+
- *"Export the Premiere project to H.264 through Media Encoder, in the background, and tell
|
|
55
|
+
me when it is done."*
|
|
56
|
+
- *"In Illustrator, draw a six-point star and a headline, export the artboard as PNG at 2×,
|
|
57
|
+
and place it in Photoshop as a smart object."*
|
|
58
|
+
- *"Which Illustrator objects overlap artboard 2? Align them to its left edge."*
|
|
59
|
+
- *"What is open right now in each app?"*
|
|
60
|
+
|
|
61
|
+
Ideas people build with it:
|
|
62
|
+
|
|
63
|
+
- **Template factories** — a PSD or AI design becomes an animated title, then a rendered
|
|
64
|
+
file, then a timeline element, by prompt.
|
|
65
|
+
- **Batch conforming** — normalize, denoise and convert a folder of interview audio while
|
|
66
|
+
Audition stays closed.
|
|
67
|
+
- **Review loops** — "show me the frame at 3 s", change one thing, "show me again".
|
|
68
|
+
- **Hand-offs between people** — a producer on a laptop drives the studio PC that has the
|
|
69
|
+
apps and the media (shared mode).
|
|
70
|
+
- **A render box** — Media Encoder jobs submitted headlessly, with status and history.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## What it controls
|
|
75
|
+
|
|
76
|
+
Counts are the tools registered per app. Each family has a live-run write-up in
|
|
77
|
+
`docs/spikes/` with the quirks found on real installs.
|
|
78
|
+
|
|
79
|
+
### Photoshop — 18 tools
|
|
80
|
+
Documents (list, create, open, save, export PNG/JPEG, preview image), layers (create,
|
|
81
|
+
text layers with font/size/color, properties, move, duplicate, delete), place an image as a
|
|
82
|
+
smart object, fill, filters (Gaussian/motion/unsharp…), resize, crop.
|
|
83
|
+
|
|
84
|
+
### After Effects — 24 tools
|
|
85
|
+
Project info and file, compositions and footage (list, create, import), layers of every
|
|
86
|
+
kind (footage, solid, text, null, adjustment), keyframes with easing, expressions, effects
|
|
87
|
+
and their parameters, text content/font/color/justification, markers, single-frame preview,
|
|
88
|
+
render queue, and headless rendering through `aerender` (the UI stays free).
|
|
89
|
+
|
|
90
|
+
### Premiere Pro — 28 tools
|
|
91
|
+
Project, sequences and items, a full sequence read (every track and clip with times),
|
|
92
|
+
import, create a sequence from media, insert/overwrite, ripple remove, move, trim, rename,
|
|
93
|
+
transitions, effects and keyframes (Motion, Opacity, any applied effect), markers, frame
|
|
94
|
+
preview, export preset search, and export (in Premiere or handed to Media Encoder).
|
|
95
|
+
|
|
96
|
+
### Illustrator — 7 tools + Adobe's own 46
|
|
97
|
+
Create documents, draw shapes (rect, ellipse, line, polygon, star) and text, save `.ai`,
|
|
98
|
+
export artboards (PNG/JPG/SVG), preview. Plus a pass-through to Adobe's built-in
|
|
99
|
+
Illustrator MCP server (artboards, alignment, appearance, structure, export, preflight… —
|
|
100
|
+
all 46 verified) when you give it your Illustrator key.
|
|
101
|
+
|
|
102
|
+
### Audition — 12 tools
|
|
103
|
+
App and document state, 600+ menu commands (list and run), Favorites (apply a saved
|
|
104
|
+
effect chain hands-off), markers, transport (play/stop/record), playhead, open, save,
|
|
105
|
+
export, close, and a dump of the scripting API for this build.
|
|
106
|
+
|
|
107
|
+
### Media Encoder — 6 tools
|
|
108
|
+
Headless encoding of any media file, a Premiere project (by sequence), or FCP XML with any
|
|
109
|
+
`.epr` preset through Media Encoder's built-in service — started on demand, stopped when
|
|
110
|
+
idle; status, history, cancel.
|
|
111
|
+
|
|
112
|
+
### Audio (ffmpeg) — 9 tools, no Adobe app needed
|
|
113
|
+
Probe, loudness measurement (EBU R128), two-pass loudness normalization, convert/extract,
|
|
114
|
+
trim, trim silence, denoise, mix, waveform image.
|
|
115
|
+
|
|
116
|
+
### Pipelines and jobs — 8 tools
|
|
117
|
+
`pipeline_ps_to_ae`, `pipeline_render_and_import` (After Effects → aerender → Premiere Pro),
|
|
118
|
+
`pipeline_audio_roundtrip` (Premiere → ffmpeg → Premiere), `pipeline_ai_to_ps`. Long
|
|
119
|
+
renders and exports run as **jobs**: `cc_job_status`, `cc_list_jobs`, `cc_job_wait`,
|
|
120
|
+
`cc_job_cancel`, and every pipeline reports which step failed and which single-app tool
|
|
121
|
+
fixes it.
|
|
122
|
+
|
|
123
|
+
The full tool table is in [Tool reference](#tool-reference).
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Install
|
|
128
|
+
|
|
129
|
+
### Requirements
|
|
130
|
+
|
|
131
|
+
- Windows 10/11 (macOS support is written but not yet verified).
|
|
132
|
+
- The Adobe apps you want to control (2024 or newer; Premiere Pro 25.6+ for its panel).
|
|
133
|
+
- [Node.js](https://nodejs.org) 20 or newer.
|
|
134
|
+
- [Claude Code](https://claude.com/claude-code) (or another MCP client).
|
|
135
|
+
- Optional: [ffmpeg](https://ffmpeg.org) on your PATH for the audio tools
|
|
136
|
+
(`winget install ffmpeg` / `brew install ffmpeg`).
|
|
137
|
+
|
|
138
|
+
### 1. Install the package
|
|
139
|
+
|
|
140
|
+
From npm (recommended):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npm install -g brainferno-mcp-bridge
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Or from source, if you want to change it:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
git clone https://github.com/Brainferno/brainferno-mcp-bridge.git
|
|
150
|
+
cd brainferno-mcp-bridge
|
|
151
|
+
npm install
|
|
152
|
+
npm run build
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 2. Run the installer
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
brainferno-mcp-bridge-install # npm install
|
|
159
|
+
npm run install-cc # source checkout
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
It asks two questions and does the rest:
|
|
163
|
+
|
|
164
|
+
1. **Which applications?** — a numbered list, pre-checked from what is installed
|
|
165
|
+
(Photoshop, After Effects, Premiere Pro, Illustrator, Audition, Media Encoder — any mix).
|
|
166
|
+
Only those apps' tools and setup steps are used.
|
|
167
|
+
2. **Who may use it?** — *Only this computer* (default) or *Shared on my network*
|
|
168
|
+
(other computers connect with a token).
|
|
169
|
+
|
|
170
|
+
Then it: writes `~/.brainferno-mcp-bridge/config.json`, asks for your Illustrator MCP key if you
|
|
171
|
+
chose Illustrator (paste the line Illustrator shows; it is checked on the spot), links the
|
|
172
|
+
After Effects/Audition panel, sets Media Encoder's service address, opens or closes the
|
|
173
|
+
firewall port, prints the Photoshop/Premiere panel steps, and offers to register the server
|
|
174
|
+
with Claude Code.
|
|
175
|
+
|
|
176
|
+
Non-interactive examples (from a source checkout, replace `brainferno-mcp-bridge-install`
|
|
177
|
+
with `node packages/server/dist/install/cli.js`):
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
brainferno-mcp-bridge-install --apps all --mode local --yes --register
|
|
181
|
+
brainferno-mcp-bridge-install --apps ps,ae --mode local --yes # Photoshop + After Effects only
|
|
182
|
+
brainferno-mcp-bridge-install --apps ppro,ame --mode shared --yes # Premiere + Media Encoder, shared
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
App names: `ps ae ppro ai au ame` or `all`. Re-run the installer any time to change apps
|
|
186
|
+
or mode.
|
|
187
|
+
|
|
188
|
+
### 3. Open the panels
|
|
189
|
+
|
|
190
|
+
The Adobe apps talk to the server through a small panel called **Brainferno MCP Bridge**.
|
|
191
|
+
Open it once per app; it connects on its own and shows a log and a kill switch.
|
|
192
|
+
|
|
193
|
+
- **After Effects / Audition**: Window → Extensions → Brainferno MCP Bridge.
|
|
194
|
+
- **Photoshop / Premiere Pro**: these are UXP panels; today they load through Adobe's
|
|
195
|
+
free **UXP Developer Tool**: *Add Plugin* → pick the `manifest.json` the installer
|
|
196
|
+
printed (`packages/panel-uxp` or `packages/panel-uxp-ppro`) → *Load*. Then Window →
|
|
197
|
+
Extensions (UXP) → Brainferno MCP Bridge. Premiere needs *Settings → Plugins → Enable
|
|
198
|
+
developer mode* first (restart Premiere). A double-click `.ccx` install is on the roadmap.
|
|
199
|
+
- **Illustrator** needs no panel. For Adobe's own Illustrator tools, turn on MCP in
|
|
200
|
+
Illustrator's preferences and give the installer the key it shows.
|
|
201
|
+
- **Media Encoder** needs no panel; the server starts its service when a job comes.
|
|
202
|
+
|
|
203
|
+
### 4. Talk to it
|
|
204
|
+
|
|
205
|
+
In Claude Code: `/mcp` shows **brainferno** connected. Try: *"Which Adobe apps are
|
|
206
|
+
connected?"* (`cc_connected_apps`), then anything from the examples above.
|
|
207
|
+
|
|
208
|
+
### Using it from another computer
|
|
209
|
+
|
|
210
|
+
In *shared* mode the server also speaks MCP over HTTP on port 7898 and refuses every
|
|
211
|
+
request without the bearer token (`~/.brainferno-mcp-bridge/config.json` → `httpToken`; the
|
|
212
|
+
installer prints the exact line). On the other computer:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
claude mcp add --scope user --transport http \
|
|
216
|
+
--header "Authorization: Bearer <token>" brainferno http://<studio-pc>:7898/mcp
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
The Adobe apps, panels, media and previews all stay on the studio PC; only commands and
|
|
220
|
+
results travel. The wire is plain HTTP — use a trusted LAN, a VPN, or Tailscale. The panels'
|
|
221
|
+
own hub never leaves loopback. An SSH alternative needs no server setting at all:
|
|
222
|
+
`claude mcp add brainferno -- ssh user@studio-pc node <path>/packages/server/dist/index.js`.
|
|
223
|
+
|
|
224
|
+
### Updating
|
|
225
|
+
|
|
226
|
+
npm: `npm install -g brainferno-mcp-bridge@latest`. Source: `git pull && npm install && npm run build`.
|
|
227
|
+
Then re-run the installer (your choices are
|
|
228
|
+
kept) and reconnect in Claude Code (`/mcp` → brainferno → reconnect). Panels pick up changes
|
|
229
|
+
on reload (UXP Developer Tool → Reload; CEP on reopen).
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## How it works
|
|
234
|
+
|
|
235
|
+
Creative Cloud applications do not share one automation surface, so the server reaches
|
|
236
|
+
each app down the lane it has:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
MCP client <--stdio / HTTP+token--> brainferno-mcp-bridge <--ws://127.0.0.1:7897--> UXP panel (Photoshop, Premiere Pro)
|
|
240
|
+
<-- --> CEP panel (After Effects, Audition)
|
|
241
|
+
--- osascript / COM -------> Illustrator (no panel)
|
|
242
|
+
--- HTTP :8080 -----------> Media Encoder web service (headless)
|
|
243
|
+
--- process --------------> aerender, ffmpeg
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
- **Panels dial out** to a hardened WebSocket hub on loopback (token auth, Origin/Host
|
|
247
|
+
checks, heartbeat, per-socket result matching) and run the *named commands* they are
|
|
248
|
+
sent. UXP has no script engine, so Photoshop and Premiere commands are real functions in
|
|
249
|
+
the panel; After Effects and Audition run ExtendScript templates.
|
|
250
|
+
- **Illustrator** is driven panel-less over OS scripting, and optionally through Adobe's own
|
|
251
|
+
MCP server inside Illustrator.
|
|
252
|
+
- **Long work is a job**: aerender, Media Encoder, exports and pipelines run in a registry
|
|
253
|
+
with steps, progress notifications, cancel, and a per-job work folder under
|
|
254
|
+
`~/.brainferno-mcp-bridge/work/`.
|
|
255
|
+
|
|
256
|
+
Two scripting engines, on purpose:
|
|
257
|
+
|
|
258
|
+
| Application | Engine | Language |
|
|
259
|
+
| --- | --- | --- |
|
|
260
|
+
| Photoshop | UXP | Modern JavaScript (`photoshop` module, batchPlay) |
|
|
261
|
+
| Premiere Pro (≥ 25.6) | UXP | Modern JavaScript (`require("premierepro")`, action model) |
|
|
262
|
+
| After Effects | ExtendScript | ES3 — `var` only, no arrow functions, no `JSON` |
|
|
263
|
+
| Illustrator | ExtendScript | ES3 (no public UXP exists) |
|
|
264
|
+
| Audition | ExtendScript | ES3, via a CEP-only API learned by reflection |
|
|
265
|
+
|
|
266
|
+
Scripts in `src/tools/` are written for their host's engine and are **not**
|
|
267
|
+
interchangeable. The ExtendScript ones look dated on purpose; modernizing them breaks them.
|
|
268
|
+
The wire protocol is documented in [`docs/protocol.md`](docs/protocol.md).
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Tool reference
|
|
273
|
+
|
|
274
|
+
| Tools | Application | Purpose |
|
|
275
|
+
| --- | --- | --- |
|
|
276
|
+
| `cc_connected_apps` | all | Each app's lane, panel, engine, and connection state |
|
|
277
|
+
| `cc_job_status` · `cc_list_jobs` · `cc_job_wait` · `cc_job_cancel` | jobs | Background jobs; `wait` streams progress; long renders/exports take `wait:false` and return a jobId |
|
|
278
|
+
| `ps_*` (18) | Photoshop | Documents (list/create/open/save/export/preview), layers (create/text/props/move/duplicate/delete), place image, fill, filters, resize, crop — [live run](docs/spikes/05-photoshop-tools-live.md) |
|
|
279
|
+
| `ae_*` (24) | After Effects | Project/comps/footage, layers of every kind, keyframes + easing, expressions, effects + params, text, markers, frame preview, render queue, headless aerender — [live run](docs/spikes/06-aftereffects-tools-live.md) |
|
|
280
|
+
| `pp_*` (28) | Premiere Pro | Project/sequences/items, get_sequence (tracks + clips), import, create sequence from media, insert/overwrite, ripple remove, move/trim/props, transitions, effects + keyframes, markers, frame preview, export presets, export in-app or to Media Encoder — [live run](docs/spikes/07-premiere-tools-live.md) |
|
|
281
|
+
| `ai_*` (7) | Illustrator | Documents, shapes, text, save, export artboard, preview (panel-less) |
|
|
282
|
+
| `ai_beta_status` · `ai_beta_list_tools` · `ai_beta_call` | Illustrator (Adobe's MCP) | Pass-through to Adobe's 46 Illustrator tools — needs a key ([docs](docs/illustrator-beta.md), [sweep](docs/spikes/12-illustrator-beta-sweep.md)) |
|
|
283
|
+
| `au_*` (12) | Audition | App/document state, 600+ menu commands, Favorites, markers, transport, open/save/export, API dump — [live run](docs/spikes/08-audition-tools-live.md) |
|
|
284
|
+
| `ame_*` (6) | Media Encoder (headless) | Encode media / `.prproj` sequence / FCP XML with an `.epr` preset; status, history, cancel, service start/stop — [live run](docs/spikes/10-media-encoder-live.md) |
|
|
285
|
+
| `audio_*` (9) | ffmpeg | Probe, R128 measure + two-pass normalize, convert/extract, trim, trim silence, denoise, mix, waveform image |
|
|
286
|
+
| `pipeline_*` (4) | cross-app | `ps_to_ae`, `render_and_import`, `audio_roundtrip`, `ai_to_ps` — one call, one job, failure names the step + recovery tool — [live run](docs/spikes/09-pipelines-live.md) |
|
|
287
|
+
| `cc_eval_script` | After Effects, Illustrator, Audition | Raw ExtendScript escape hatch — **opt-in** (`BRAINFERNO_MCP_ALLOW_RAW_SCRIPTS=1`) |
|
|
288
|
+
|
|
289
|
+
Tools are always advertised for the apps you chose, even when an app is closed — a closed
|
|
290
|
+
app returns an actionable "not connected" error rather than vanishing mid-session.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Configuration
|
|
295
|
+
|
|
296
|
+
The installer writes `~/.brainferno-mcp-bridge/config.json` (`enabledApps`, `illustratorKey`,
|
|
297
|
+
`illustratorUrl`, `httpPort`, `httpHost`, `httpToken`). Environment variables override it:
|
|
298
|
+
|
|
299
|
+
| Variable | Default | Purpose |
|
|
300
|
+
| --- | --- | --- |
|
|
301
|
+
| `BRAINFERNO_MCP_APPS` | *(all)* | Apps to register, e.g. `ps,ae` |
|
|
302
|
+
| `BRAINFERNO_MCP_BRIDGE_PORT` | `7897` | Port the panels dial back to (`0` = OS-assigned) |
|
|
303
|
+
| `BRAINFERNO_MCP_BRIDGE_TOKEN` | *(empty → generated)* | Panel hub secret; empty generates a random per-run token |
|
|
304
|
+
| `BRAINFERNO_MCP_BRIDGE_INSECURE` | *(off)* | `1` disables hub auth and the handshake file (debug only) |
|
|
305
|
+
| `BRAINFERNO_MCP_HANDSHAKE_FILE` | `~/.brainferno-mcp-bridge/bridge.json` | Where the `{port, token}` file panels read is written |
|
|
306
|
+
| `BRAINFERNO_MCP_EVAL_TIMEOUT_MS` | `30000` | How long to wait for a "slow" script result |
|
|
307
|
+
| `BRAINFERNO_MCP_HEARTBEAT_MS` | `15000` | Ping cadence for detecting a dead panel |
|
|
308
|
+
| `BRAINFERNO_MCP_ALLOW_RAW_SCRIPTS` | *(off)* | `1` registers the `cc_eval_script` escape hatch |
|
|
309
|
+
| `BRAINFERNO_MCP_ILLUSTRATOR_KEY` / `_URL` | *(config.json)* / `http://localhost:18412/v1/mcp` | Adobe's Illustrator MCP key and endpoint |
|
|
310
|
+
| `BRAINFERNO_MCP_FFMPEG` / `_FFPROBE` | `ffmpeg` / `ffprobe` | Executables for the `audio_*` lane |
|
|
311
|
+
| `BRAINFERNO_MCP_AME_WEBSERVICE` | *(auto-detect)* | Path to Media Encoder's `ame_webservice_console` |
|
|
312
|
+
| `BRAINFERNO_MCP_AME_PORT` / `_AME_IDLE_MS` | *(from its ini)* / `600000` | Media Encoder service port; idle time before it is stopped |
|
|
313
|
+
| `BRAINFERNO_MCP_HTTP_PORT` / `_HTTP_HOST` / `_HTTP_TOKEN` | *(off)* / `127.0.0.1` / *(none)* | Remote mode (set by the installer's *shared* choice) |
|
|
314
|
+
| `BRAINFERNO_MCP_LOG_LEVEL` | `info` | `error` \| `warn` \| `info` \| `debug` |
|
|
315
|
+
|
|
316
|
+
## Security
|
|
317
|
+
|
|
318
|
+
- The panel hub binds to `127.0.0.1` only and evaluates script inside your Adobe
|
|
319
|
+
applications. It requires a token by default (auto-generated, written mode-600 to the
|
|
320
|
+
handshake file the panels read), rejects web `Origin`s and non-loopback `Host`s, and
|
|
321
|
+
matches each result to the socket that issued the command. Never run it with
|
|
322
|
+
`BRAINFERNO_MCP_BRIDGE_INSECURE=1` on a shared machine.
|
|
323
|
+
- Remote mode (*shared*) is off by default. When on, every request needs the bearer token;
|
|
324
|
+
there is no anonymous path. The wire is plain HTTP — keep it to a trusted network, VPN or
|
|
325
|
+
tunnel.
|
|
326
|
+
- Media Encoder's built-in service has no password of its own and listens on a LAN address
|
|
327
|
+
unless pinned to loopback; the installer's *local* choice pins it (one admin prompt), and
|
|
328
|
+
the server only runs it while a job is active plus a short idle window.
|
|
329
|
+
- Keys and tokens are stored in `~/.brainferno-mcp-bridge/config.json`, never logged, never put in
|
|
330
|
+
error messages.
|
|
331
|
+
- `cc_eval_script` (raw script) is opt-in and off by default.
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Development
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
npm run dev # watch mode
|
|
339
|
+
npm run typecheck # tsc --noEmit
|
|
340
|
+
npm test # vitest (141 tests; the audio lane test runs a real ffmpeg if present)
|
|
341
|
+
npm run panels:sync # copy the shared bridge client into each panel folder
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Tests live in `packages/server/test` and use the MCP SDK's in-memory transport, a fake panel
|
|
345
|
+
over a real WebSocket, a fake Remote AME, and a real ffmpeg when available — the full path
|
|
346
|
+
from tool call to result with no Adobe application involved.
|
|
347
|
+
|
|
348
|
+
**stdout is the MCP wire.** Never `console.log` in this server; use the `log` helper in
|
|
349
|
+
`src/logging.ts`, which writes to stderr.
|
|
350
|
+
|
|
351
|
+
### Layout (npm workspaces)
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
packages/
|
|
355
|
+
protocol/ @brainferno/mcp-bridge-protocol — shared by server and panels
|
|
356
|
+
src/apps.ts the five hosts: lane, panel, and scripting engine each uses
|
|
357
|
+
src/protocol.ts wire format (v2, zod-validated) between server and panel
|
|
358
|
+
server/ brainferno-mcp-bridge — the MCP server (bin: dist/index.js) and installer (dist/install/cli.js)
|
|
359
|
+
src/index.ts entry point: stdio transport, optional HTTP listener, signal handling
|
|
360
|
+
src/server.ts runtime (hub, drivers, jobs) + per-session McpServer with every tool
|
|
361
|
+
src/http.ts remote mode: Streamable HTTP + bearer token
|
|
362
|
+
src/jobs.ts job registry (steps, progress, cancel, work folders)
|
|
363
|
+
src/config.ts environment + ~/.brainferno-mcp-bridge/config.json
|
|
364
|
+
src/bridge/ hub (socket.ts), handshake file, script escaping, errors
|
|
365
|
+
src/drivers/ os-script lane (Illustrator), Illustrator MCP delegate, Media Encoder web service
|
|
366
|
+
src/tools/ per-application tools, audio lane, pipelines, jobs
|
|
367
|
+
src/install/ the installer (lib.ts is pure and tested; cli.ts is interactive)
|
|
368
|
+
test/ vitest
|
|
369
|
+
bridge-client/ shared panel dial-out client (vendored into each panel by npm run panels:sync)
|
|
370
|
+
panel-uxp/ Photoshop UXP panel
|
|
371
|
+
panel-uxp-ppro/ Premiere Pro UXP panel
|
|
372
|
+
panel-cep/ After Effects + Audition CEP panel
|
|
373
|
+
docs/ build plan, protocol, live-run notes (spikes/), Audition API dump
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Status
|
|
379
|
+
|
|
380
|
+
- **Working, verified live on Windows (Adobe 2026 apps)**: all six application lanes and
|
|
381
|
+
their v1 tool sets, the ffmpeg lane, the job registry, the four pipelines, remote mode, and
|
|
382
|
+
the installer. Write-ups with the quirks found: `docs/spikes/05`–`12`.
|
|
383
|
+
- **Not yet**: a macOS run; double-click panel installs (`.ccx`/`.zxp`) so the UXP Developer
|
|
384
|
+
Tool is not needed; a single signed installer; TLS for shared mode; Audition multitrack
|
|
385
|
+
writes; Media Encoder queue control.
|
|
386
|
+
- Roadmap: `docs/BUILD_PLAN.md` (Phase 6).
|
|
387
|
+
|
|
388
|
+
## License
|
|
389
|
+
|
|
390
|
+
Copyright 2026 Brainferno. Licensed under the **Apache License, Version 2.0** — see
|
|
391
|
+
[`LICENSE`](LICENSE) and [`NOTICE`](NOTICE). You may use, modify, and redistribute this
|
|
392
|
+
software, including commercially, as long as you keep the license and notices; the license
|
|
393
|
+
also gives you an express patent grant from contributors. Third-party components and the
|
|
394
|
+
Adobe materials this project relies on are listed in
|
|
395
|
+
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). Contributions are accepted under the
|
|
396
|
+
same license.
|
|
397
|
+
|
|
398
|
+
## Trademarks
|
|
399
|
+
|
|
400
|
+
Adobe, After Effects, Audition, Creative Cloud, Illustrator, Media Encoder, Photoshop, and
|
|
401
|
+
Premiere Pro are either registered trademarks or trademarks of Adobe in the United States
|
|
402
|
+
and/or other countries.
|
|
403
|
+
|
|
404
|
+
Brainferno MCP Bridge is an independent project. **It is not authorized, endorsed, or
|
|
405
|
+
sponsored by Adobe.** Adobe product names are used only to say which products this software
|
|
406
|
+
works with ("for use with Adobe Photoshop software"), as Adobe's
|
|
407
|
+
[trademark guidelines for plug-in and extension developers](https://www.adobe.com/legal/permissions/trademarks.html)
|
|
408
|
+
allow. No Adobe logos or product icons are included. "Brainferno" and the Brainferno MCP
|
|
409
|
+
Bridge name and panel icon belong to Brainferno; the Apache License grants no right to use
|
|
410
|
+
them in the names of derived products.
|