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 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
- Once published, nothing to clone or build — the package is one bundled file
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; `/media/<name>` serves from it, and paths
105
- that resolve outside it are a 404. Generated voiceovers are written there too.
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
- Three tools are local to this server, because they touch this machine:
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` and add it to the bin |
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 default to the most recently active
136
- project; pass `projectId` from `list_connected_projects` to target a specific one.
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