goatedit-mcp 1.0.0 → 1.1.1
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/README.md +34 -13
- package/bundle/goatedit-mcp.js +795 -213
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,7 +28,12 @@ out other web pages open in the same browser, so on top of that:
|
|
|
28
28
|
localhost origins (add more with `GOATEDIT_ALLOWED_ORIGINS`);
|
|
29
29
|
- a `/controller` socket (scripts such as `mcp-test.mjs`) must send
|
|
30
30
|
`Authorization: Bearer <token>`. The token is random per run and written to
|
|
31
|
-
`~/.goatedit/mcp-controller-token` (mode 0600).
|
|
31
|
+
`~/.goatedit/mcp-controller-token` (mode 0600). A reply goes back only to
|
|
32
|
+
the controller that asked.
|
|
33
|
+
|
|
34
|
+
Only one process can hold the port. A second session (another Claude window)
|
|
35
|
+
does not fail: it connects to the one holding the port as a controller and
|
|
36
|
+
works through it, and takes the port over if that one exits.
|
|
32
37
|
|
|
33
38
|
---
|
|
34
39
|
|
|
@@ -36,7 +41,7 @@ out other web pages open in the same browser, so on top of that:
|
|
|
36
41
|
|
|
37
42
|
### From npm
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
Nothing to clone or build — the package is one bundled file
|
|
40
45
|
with no dependencies:
|
|
41
46
|
|
|
42
47
|
```bash
|
|
@@ -97,24 +102,41 @@ Safari do not. Either use Chrome, or run the editor over plain http on localhost
|
|
|
97
102
|
|
|
98
103
|
| Variable | Default | Meaning |
|
|
99
104
|
|---|---|---|
|
|
100
|
-
| `GOATEDIT_ASSETS_DIR` | `~/Movies` | The one folder this server may list and serve |
|
|
105
|
+
| `GOATEDIT_ASSETS_DIR` | `~/Movies` | The one folder (with its subfolders) this server may list and serve |
|
|
106
|
+
| `GOATEDIT_FRAMES_DIR` | `~/.goatedit/frames` | Where `saveToDisk` writes rendered frames |
|
|
101
107
|
| `GOATEDIT_ALLOWED_ORIGINS` | — | Extra editor origins, comma-separated (production and localhost are always allowed) |
|
|
102
108
|
| `GOATEDIT_CONTROLLER_TOKEN` | random per run | Pin the `/controller` token instead of generating one |
|
|
103
109
|
|
|
104
|
-
`list_local_assets` reads that folder
|
|
105
|
-
|
|
110
|
+
`list_local_assets` reads that folder and its subfolders (hidden ones skipped,
|
|
111
|
+
up to 500 files); `/media/<path>` serves from it with byte ranges, so video
|
|
112
|
+
seeks, and paths that resolve outside it are a 404. Generated voiceovers are
|
|
113
|
+
written there too.
|
|
114
|
+
|
|
115
|
+
`import_local_file` looks in that folder first: a file found there (by name,
|
|
116
|
+
or by the path `list_local_assets` gives) is imported from this server, with no
|
|
117
|
+
GoatEdit bridge needed. Only a miss falls through to the bridge.
|
|
106
118
|
|
|
107
119
|
---
|
|
108
120
|
|
|
109
121
|
## Tools
|
|
110
122
|
|
|
111
|
-
|
|
123
|
+
These tools are local to this server, because they touch this machine or its
|
|
124
|
+
socket table:
|
|
112
125
|
|
|
113
126
|
| Tool | Description |
|
|
114
127
|
|---|---|
|
|
115
|
-
| `list_connected_projects` | Every GoatEdit tab attached right now, and which is the default target |
|
|
128
|
+
| `list_connected_projects` | Every GoatEdit tab attached right now, by name, and which is the default target |
|
|
129
|
+
| `use_project` | Pick the project later calls act on, when several tabs are open |
|
|
116
130
|
| `list_local_assets` | Media in `GOATEDIT_ASSETS_DIR`, with URLs the browser can load |
|
|
117
|
-
| `generate_voiceover` | Synthesise narration with macOS `say
|
|
131
|
+
| `generate_voiceover` | Synthesise narration with macOS `say`, measure it, and add it to the bin |
|
|
132
|
+
| `run_tools` | Run a list of tool calls in order in one round trip |
|
|
133
|
+
|
|
134
|
+
`render_preview_frame` and `preview_media` take `saveToDisk`. Here the server
|
|
135
|
+
writes the frame to `GOATEDIT_FRAMES_DIR` itself and returns the path, so no
|
|
136
|
+
separate bridge is needed.
|
|
137
|
+
|
|
138
|
+
Results are compact JSON, and pictures come back as MCP image blocks, not as
|
|
139
|
+
base64 text.
|
|
118
140
|
|
|
119
141
|
Every other tool comes from `api/_lib/mcp-tools.ts` — the same catalogue the
|
|
120
142
|
hosted server at ai.goatedit.com/mcp serves. It is imported, not copied, so the
|
|
@@ -126,14 +148,13 @@ The one shared tool that is dropped is `get_session_status`, which asks the
|
|
|
126
148
|
hosted relay about its Realtime session. This server has no session — it has a
|
|
127
149
|
socket table, which `list_connected_projects` reports.
|
|
128
150
|
|
|
129
|
-
Every tool takes an optional `projectId`. One stdio server can hold several tabs
|
|
130
|
-
at once; without it, edits go to the most recently active one.
|
|
131
|
-
|
|
132
151
|
Clip ids change after every split, trim and delete — call `get_timeline` before
|
|
133
152
|
each edit rather than reusing ids from an earlier response.
|
|
134
153
|
|
|
135
|
-
Multiple tabs can be attached at once. Tools
|
|
136
|
-
|
|
154
|
+
Multiple tabs can be attached at once. Tools act on the project chosen with
|
|
155
|
+
`use_project`, else the most recently active one. A `projectId` argument on any
|
|
156
|
+
call is still honoured, and one that is not connected is an error rather than
|
|
157
|
+
a silent fallback to another tab.
|
|
137
158
|
|
|
138
159
|
## Platform notes
|
|
139
160
|
|