@map-audio/pam-mcp-server 1.1.0 → 1.12.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/README.md +2 -0
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.js +110 -7
- package/dist/bridge.js.map +1 -1
- package/dist/manifest.json +74682 -6688
- package/dist/server.js +1698 -64
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -79,6 +79,8 @@ Use the same `mcpServers` block in the client's MCP config. Any stdio-compatible
|
|
|
79
79
|
|
|
80
80
|
Live tools (require a running PAM): `set_parameters`, `trigger_midi`, `update_pattern`, `load_sample`, `load_preset`, `save_preset`, `add_modulation`, `start_transport`, `stop_transport`, `full_stop_transport`, `set_bpm`, `randomize_samples`, `randomize_patterns`, `load_variation`, and more.
|
|
81
81
|
|
|
82
|
+
Plugin host tools (when PAM is built with the plugin host enabled): `list_plugins`, `scan_plugins`, `cancel_plugin_scan`, `get_plugin_scan_status`, `list_loaded_plugins`, `load_plugin`, `unload_plugin`, `set_plugin_param`, `set_plugin_bypass`. Typical flow: `scan_plugins` → poll `get_plugin_scan_status` → `list_plugins` → `load_plugin` into a cell → `list_loaded_plugins` for param indices → `set_plugin_param` / `set_plugin_bypass`.
|
|
83
|
+
|
|
82
84
|
Offline tools (manifest-only): `get_parameter_info`, `list_presets`, `list_samples`, `get_manifest_summary`.
|
|
83
85
|
|
|
84
86
|
## License
|
package/dist/bridge.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class PluginBridge {
|
|
|
15
15
|
disconnect(): void;
|
|
16
16
|
isConnected(): boolean;
|
|
17
17
|
private static readonly SLOW_ACTIONS;
|
|
18
|
+
private static readonly VERY_SLOW_ACTIONS;
|
|
18
19
|
send(action: string, ...args: unknown[]): Promise<unknown>;
|
|
19
20
|
private translateBridgeError;
|
|
20
21
|
private processBuffer;
|
package/dist/bridge.js
CHANGED
|
@@ -7,7 +7,11 @@ const DISCOVERY_FILE = resolve(homedir(), ".pam-mcp-bridge.json");
|
|
|
7
7
|
// Tools registered against actions introduced after this version will return
|
|
8
8
|
// "unknown action 'X'" from older PAM builds — the wrapper below translates
|
|
9
9
|
// that into an actionable error for the agent.
|
|
10
|
-
const MIN_PAM_VERSION_FOR_NEW_ACTIONS = "1.
|
|
10
|
+
const MIN_PAM_VERSION_FOR_NEW_ACTIONS = "1.5.0";
|
|
11
|
+
const NEW_ACTIONS_ADDED_IN_1_5_0 = new Set([
|
|
12
|
+
"aiGenerate",
|
|
13
|
+
"aiGenerateKit",
|
|
14
|
+
]);
|
|
11
15
|
const NEW_ACTIONS_ADDED_IN_1_1_0 = new Set([
|
|
12
16
|
"startLooperRecord",
|
|
13
17
|
"stopLooperRecord",
|
|
@@ -62,6 +66,69 @@ const NEW_ACTIONS_ADDED_IN_1_1_0 = new Set([
|
|
|
62
66
|
"resampleGraphToCell",
|
|
63
67
|
"stopLiveResample",
|
|
64
68
|
]);
|
|
69
|
+
// Actions added in MCP server 1.7.0 — settings, transport config, MIDI device +
|
|
70
|
+
// action-mapping config, preset management (delete / factory-status / sample-usage /
|
|
71
|
+
// sample-path repair), and native sample preview. Require a PAM build of the same
|
|
72
|
+
// vintage; older builds return "unknown action 'X'".
|
|
73
|
+
const NEW_ACTIONS_ADDED_IN_1_7_0 = new Set([
|
|
74
|
+
"applySettingsUpdate",
|
|
75
|
+
"updateTransportTimeSig",
|
|
76
|
+
"setHostSyncEnabled",
|
|
77
|
+
"releaseHostSyncForManualTransport",
|
|
78
|
+
"setExternalClockSync",
|
|
79
|
+
"setMuteAudioOutput",
|
|
80
|
+
"getAudioDeviceSetup",
|
|
81
|
+
"setMidiInputDevices",
|
|
82
|
+
"setMidiOutputDevice",
|
|
83
|
+
"setMidiOutputEnabled",
|
|
84
|
+
"setMidiMapping",
|
|
85
|
+
"removePreset",
|
|
86
|
+
"togglePresetFactoryStatus",
|
|
87
|
+
"getPresetSampleUsage",
|
|
88
|
+
"getPresetsUsingSample",
|
|
89
|
+
"fixPresetSamplePaths",
|
|
90
|
+
"rescanMissingSamples",
|
|
91
|
+
"previewSampleNative",
|
|
92
|
+
"stopPreviewNative",
|
|
93
|
+
]);
|
|
94
|
+
// Actions added in MCP server 1.8.0 — VX video subsystem control (layers, FX chains,
|
|
95
|
+
// audio-reactive bindings, output FX, mod routes, model overlay, render/sync settings)
|
|
96
|
+
// plus the full-scene read channel. Require a PAM build with the mcpVideoBridge wiring.
|
|
97
|
+
const NEW_ACTIONS_ADDED_IN_1_8_0 = new Set([
|
|
98
|
+
"videoCommand",
|
|
99
|
+
"getVideoState",
|
|
100
|
+
]);
|
|
101
|
+
// Plugin-host actions ship on PAM builds with PAM_PLUGIN_HOST=1.
|
|
102
|
+
// Older builds (or non-host SKUs like Cell1 / MFX) won't
|
|
103
|
+
// recognize them and will return "unknown action 'X'". The bridge handler
|
|
104
|
+
// translates that into a tool-level error so the agent gets an actionable
|
|
105
|
+
// hint instead of a raw "unknown action".
|
|
106
|
+
const PLUGIN_HOST_ACTIONS = new Set([
|
|
107
|
+
"listPlugins",
|
|
108
|
+
"scanPlugins",
|
|
109
|
+
"cancelPluginScan",
|
|
110
|
+
"getPluginScanStatus",
|
|
111
|
+
"listLoadedPlugins",
|
|
112
|
+
"loadPlugin",
|
|
113
|
+
"unloadPlugin",
|
|
114
|
+
"setPluginParam",
|
|
115
|
+
"setPluginParams",
|
|
116
|
+
"setPluginBypass",
|
|
117
|
+
"skipCurrentPluginScan",
|
|
118
|
+
"removeFromBlocklist",
|
|
119
|
+
]);
|
|
120
|
+
// The unified AI model-management actions (download/status/load/unload/delete/list
|
|
121
|
+
// for aigen/magenta/notochord) are compiled out on standalone MFX builds
|
|
122
|
+
// (#if !PAM_IS_MFX in MCPBridge.cpp) and absent on PAM builds older than 1.9.0 —
|
|
123
|
+
// both return "unknown action 'X'". Translate that into an actionable hint.
|
|
124
|
+
const MODEL_ACTIONS = new Set([
|
|
125
|
+
"modelDownload",
|
|
126
|
+
"modelStatus",
|
|
127
|
+
"modelLoad",
|
|
128
|
+
"modelUnload",
|
|
129
|
+
"modelDelete",
|
|
130
|
+
"modelList",
|
|
131
|
+
]);
|
|
65
132
|
export class PluginBridge {
|
|
66
133
|
socket = null;
|
|
67
134
|
buffer = "";
|
|
@@ -155,14 +222,31 @@ export class PluginBridge {
|
|
|
155
222
|
"loadVariation",
|
|
156
223
|
"listDirectory",
|
|
157
224
|
"importVisualFolder",
|
|
225
|
+
"loadPlugin",
|
|
226
|
+
// Model lifecycle: trigger is fast, but load/unload/delete can join a
|
|
227
|
+
// manager bootstrap thread for seconds (non-interruptible ORT/MLX loads).
|
|
228
|
+
"modelDownload",
|
|
229
|
+
"modelLoad",
|
|
230
|
+
"modelUnload",
|
|
231
|
+
"modelDelete",
|
|
232
|
+
// Workbench: loadTake is a loadSampleToCell (disk + graph rebuild).
|
|
233
|
+
"workbenchLoadTake",
|
|
158
234
|
]);
|
|
235
|
+
// Actions that block on an external render process — the C++ handler itself
|
|
236
|
+
// waits up to 180 s on the sidecar (pipeline rebuild + sequential inpaints),
|
|
237
|
+
// so the TCP timeout must outlast it.
|
|
238
|
+
static VERY_SLOW_ACTIONS = new Set(["workbenchRender"]);
|
|
159
239
|
async send(action, ...args) {
|
|
160
240
|
if (!this.connected || !this.socket) {
|
|
161
241
|
throw new Error("Not connected to PAM plugin. Start PAM and ensure the MCP bridge is enabled.");
|
|
162
242
|
}
|
|
163
243
|
const id = this.nextId++;
|
|
164
244
|
const msg = { id, action, args };
|
|
165
|
-
const timeoutMs = PluginBridge.
|
|
245
|
+
const timeoutMs = PluginBridge.VERY_SLOW_ACTIONS.has(action)
|
|
246
|
+
? 190000
|
|
247
|
+
: PluginBridge.SLOW_ACTIONS.has(action)
|
|
248
|
+
? 30000
|
|
249
|
+
: 10000;
|
|
166
250
|
return new Promise((resolve, reject) => {
|
|
167
251
|
const timer = setTimeout(() => {
|
|
168
252
|
if (this.pending.has(id)) {
|
|
@@ -180,11 +264,30 @@ export class PluginBridge {
|
|
|
180
264
|
}
|
|
181
265
|
translateBridgeError(message, action) {
|
|
182
266
|
// C++ MCPBridge::handleCommand emits this exact prefix for unrecognized actions.
|
|
183
|
-
if (message.startsWith("unknown action '")
|
|
184
|
-
|
|
185
|
-
`
|
|
186
|
-
|
|
187
|
-
|
|
267
|
+
if (message.startsWith("unknown action '")) {
|
|
268
|
+
if (PLUGIN_HOST_ACTIONS.has(action)) {
|
|
269
|
+
return (`PAM build does not include the plugin host ('${action}' not recognized). ` +
|
|
270
|
+
`Plugin-host tools require a PAM build with PAM_PLUGIN_HOST=1 (the flagship PAM SKU). ` +
|
|
271
|
+
`Cell1 and standalone MFX builds do not host third-party plugins.`);
|
|
272
|
+
}
|
|
273
|
+
if (MODEL_ACTIONS.has(action)) {
|
|
274
|
+
return (`PAM build does not include the AI model managers ('${action}' not recognized). ` +
|
|
275
|
+
`Model-management tools require PAM ≥ 1.9.0 with the AIGen/Magenta/Notochord managers; ` +
|
|
276
|
+
`they are not available on standalone MFX builds.`);
|
|
277
|
+
}
|
|
278
|
+
const requiredVersion = NEW_ACTIONS_ADDED_IN_1_8_0.has(action)
|
|
279
|
+
? "1.8.0"
|
|
280
|
+
: NEW_ACTIONS_ADDED_IN_1_7_0.has(action)
|
|
281
|
+
? "1.7.0"
|
|
282
|
+
: NEW_ACTIONS_ADDED_IN_1_1_0.has(action) || NEW_ACTIONS_ADDED_IN_1_5_0.has(action)
|
|
283
|
+
? MIN_PAM_VERSION_FOR_NEW_ACTIONS
|
|
284
|
+
: null;
|
|
285
|
+
if (requiredVersion) {
|
|
286
|
+
return (`PAM build does not support '${action}'. ` +
|
|
287
|
+
`This action requires PAM ≥ ${requiredVersion} ` +
|
|
288
|
+
`(npm @map-audio/pam-mcp-server ≥ ${requiredVersion}). ` +
|
|
289
|
+
`Update PAM to the latest build, or use a tool that doesn't depend on this action.`);
|
|
290
|
+
}
|
|
188
291
|
}
|
|
189
292
|
return message;
|
|
190
293
|
}
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAe,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAqBlE,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,+CAA+C;AAC/C,MAAM,+BAA+B,GAAG,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|