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.
Files changed (111) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +27 -0
  4. package/README.md +410 -0
  5. package/THIRD_PARTY_NOTICES.md +52 -0
  6. package/dist/bridge/handshake.d.ts +34 -0
  7. package/dist/bridge/handshake.js +36 -0
  8. package/dist/bridge/handshake.js.map +1 -0
  9. package/dist/bridge/script-escape.d.ts +16 -0
  10. package/dist/bridge/script-escape.js +47 -0
  11. package/dist/bridge/script-escape.js.map +1 -0
  12. package/dist/bridge/socket.d.ts +79 -0
  13. package/dist/bridge/socket.js +424 -0
  14. package/dist/bridge/socket.js.map +1 -0
  15. package/dist/bridge/types.d.ts +49 -0
  16. package/dist/bridge/types.js +38 -0
  17. package/dist/bridge/types.js.map +1 -0
  18. package/dist/config.d.ts +87 -0
  19. package/dist/config.js +172 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/drivers/ame-webservice.d.ts +118 -0
  22. package/dist/drivers/ame-webservice.js +356 -0
  23. package/dist/drivers/ame-webservice.js.map +1 -0
  24. package/dist/drivers/illustrator-delegate.d.ts +71 -0
  25. package/dist/drivers/illustrator-delegate.js +120 -0
  26. package/dist/drivers/illustrator-delegate.js.map +1 -0
  27. package/dist/drivers/osscript.d.ts +60 -0
  28. package/dist/drivers/osscript.js +230 -0
  29. package/dist/drivers/osscript.js.map +1 -0
  30. package/dist/http.d.ts +26 -0
  31. package/dist/http.js +126 -0
  32. package/dist/http.js.map +1 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.js +42 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/install/cli.d.ts +2 -0
  37. package/dist/install/cli.js +310 -0
  38. package/dist/install/cli.js.map +1 -0
  39. package/dist/install/lib.d.ts +76 -0
  40. package/dist/install/lib.js +194 -0
  41. package/dist/install/lib.js.map +1 -0
  42. package/dist/jobs.d.ts +117 -0
  43. package/dist/jobs.js +196 -0
  44. package/dist/jobs.js.map +1 -0
  45. package/dist/logging.d.ts +8 -0
  46. package/dist/logging.js +33 -0
  47. package/dist/logging.js.map +1 -0
  48. package/dist/server.d.ts +38 -0
  49. package/dist/server.js +90 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/tools/after-effects.d.ts +100 -0
  52. package/dist/tools/after-effects.js +695 -0
  53. package/dist/tools/after-effects.js.map +1 -0
  54. package/dist/tools/audio.d.ts +118 -0
  55. package/dist/tools/audio.js +356 -0
  56. package/dist/tools/audio.js.map +1 -0
  57. package/dist/tools/audition.d.ts +15 -0
  58. package/dist/tools/audition.js +329 -0
  59. package/dist/tools/audition.js.map +1 -0
  60. package/dist/tools/diagnostics.d.ts +17 -0
  61. package/dist/tools/diagnostics.js +61 -0
  62. package/dist/tools/diagnostics.js.map +1 -0
  63. package/dist/tools/illustrator-delegate.d.ts +9 -0
  64. package/dist/tools/illustrator-delegate.js +61 -0
  65. package/dist/tools/illustrator-delegate.js.map +1 -0
  66. package/dist/tools/illustrator.d.ts +36 -0
  67. package/dist/tools/illustrator.js +299 -0
  68. package/dist/tools/illustrator.js.map +1 -0
  69. package/dist/tools/jobs.d.ts +39 -0
  70. package/dist/tools/jobs.js +83 -0
  71. package/dist/tools/jobs.js.map +1 -0
  72. package/dist/tools/media-encoder.d.ts +17 -0
  73. package/dist/tools/media-encoder.js +180 -0
  74. package/dist/tools/media-encoder.js.map +1 -0
  75. package/dist/tools/photoshop.d.ts +17 -0
  76. package/dist/tools/photoshop.js +202 -0
  77. package/dist/tools/photoshop.js.map +1 -0
  78. package/dist/tools/pipelines.d.ts +23 -0
  79. package/dist/tools/pipelines.js +254 -0
  80. package/dist/tools/pipelines.js.map +1 -0
  81. package/dist/tools/premiere.d.ts +26 -0
  82. package/dist/tools/premiere.js +396 -0
  83. package/dist/tools/premiere.js.map +1 -0
  84. package/dist/tools/result.d.ts +17 -0
  85. package/dist/tools/result.js +51 -0
  86. package/dist/tools/result.js.map +1 -0
  87. package/package.json +64 -0
  88. package/panels/panel-cep/CSXS/manifest.xml +53 -0
  89. package/panels/panel-cep/bridge-client.js +204 -0
  90. package/panels/panel-cep/host.jsx +62 -0
  91. package/panels/panel-cep/icons/logo.svg +61 -0
  92. package/panels/panel-cep/index.html +48 -0
  93. package/panels/panel-cep/main.js +173 -0
  94. package/panels/panel-uxp/README.md +36 -0
  95. package/panels/panel-uxp/bridge-client.js +204 -0
  96. package/panels/panel-uxp/commands.js +375 -0
  97. package/panels/panel-uxp/icons/icon.png +0 -0
  98. package/panels/panel-uxp/icons/icon@2x.png +0 -0
  99. package/panels/panel-uxp/icons/logo.svg +61 -0
  100. package/panels/panel-uxp/index.html +47 -0
  101. package/panels/panel-uxp/main.js +109 -0
  102. package/panels/panel-uxp/manifest.json +89 -0
  103. package/panels/panel-uxp-ppro/README.md +11 -0
  104. package/panels/panel-uxp-ppro/bridge-client.js +204 -0
  105. package/panels/panel-uxp-ppro/commands.js +797 -0
  106. package/panels/panel-uxp-ppro/icons/icon.png +0 -0
  107. package/panels/panel-uxp-ppro/icons/icon@2x.png +0 -0
  108. package/panels/panel-uxp-ppro/icons/logo.svg +61 -0
  109. package/panels/panel-uxp-ppro/index.html +64 -0
  110. package/panels/panel-uxp-ppro/main.js +113 -0
  111. 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
+ [![CI](https://github.com/Brainferno/brainferno-mcp-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/Brainferno/brainferno-mcp-bridge/actions/workflows/ci.yml)
4
+ [![Release](https://img.shields.io/github/v/release/Brainferno/brainferno-mcp-bridge)](https://github.com/Brainferno/brainferno-mcp-bridge/releases)
5
+ [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](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.