@counterpoint-studio/audio-file-mcp-app 1.0.0 → 1.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/README.md +179 -5
- package/dist/mcp-app.html +10 -9
- package/dist/server/app.js +20 -2
- package/dist/server/app.js.map +1 -1
- package/dist/server/resolve-annotations.js +33 -0
- package/dist/server/resolve-annotations.js.map +1 -0
- package/dist/shared/annotation-data.js +23 -0
- package/dist/shared/annotation-data.js.map +1 -0
- package/package.json +6 -1
package/dist/server/app.js
CHANGED
|
@@ -7,9 +7,11 @@ import path from "node:path";
|
|
|
7
7
|
import * as z from "zod";
|
|
8
8
|
import { normalizeIncomingPath } from "./path-utils.js";
|
|
9
9
|
import { asScalar, parseNonNegInt } from "./range-params.js";
|
|
10
|
+
import { annotationDataSchema } from "../shared/annotation-data.js";
|
|
11
|
+
import { resolveAnnotations } from "./resolve-annotations.js";
|
|
10
12
|
const server = new McpServer({
|
|
11
13
|
name: "Audio File MCP App",
|
|
12
|
-
version: "1.
|
|
14
|
+
version: "1.1.0",
|
|
13
15
|
});
|
|
14
16
|
const resourceUri = "ui://ctpt.co/audio-file/mcp-app.html";
|
|
15
17
|
const regionSchema = z.object({
|
|
@@ -33,9 +35,21 @@ registerAppTool(server, "display_audio_file", {
|
|
|
33
35
|
region: regionSchema
|
|
34
36
|
.optional()
|
|
35
37
|
.describe("Optional initial selected/highlighted region in seconds (decimal)"),
|
|
38
|
+
annotations: annotationDataSchema
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Optional annotation lanes drawn between the waveform and spectrogram. " +
|
|
41
|
+
"Each lane has an optional label, optional CSS color, spans [{start,end}] " +
|
|
42
|
+
"in seconds, and an optional envelope ([{time,value}] with value 0..1) that " +
|
|
43
|
+
"fades span opacity. Times are in seconds on the audio's own timeline."),
|
|
44
|
+
annotationsPath: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Absolute path to a JSON file containing the same { lanes: [...] } structure " +
|
|
48
|
+
"as `annotations`. Use instead of `annotations` for large payloads. Ignored if " +
|
|
49
|
+
"`annotations` is also given."),
|
|
36
50
|
}),
|
|
37
51
|
_meta: { ui: { resourceUri } },
|
|
38
|
-
}, async ({ path, playheadSeconds, region }) => {
|
|
52
|
+
}, async ({ path, playheadSeconds, region, annotations, annotationsPath }) => {
|
|
39
53
|
const normalized = normalizeIncomingPath(path);
|
|
40
54
|
if (!normalized) {
|
|
41
55
|
throw new Error("Path parameter is required");
|
|
@@ -56,6 +70,10 @@ registerAppTool(server, "display_audio_file", {
|
|
|
56
70
|
if (region !== undefined && region.endSeconds > region.startSeconds) {
|
|
57
71
|
structuredContent.region = region;
|
|
58
72
|
}
|
|
73
|
+
const resolvedAnnotations = await resolveAnnotations({ annotations, annotationsPath }, (p) => fs.readFile(p, "utf-8"));
|
|
74
|
+
if (resolvedAnnotations) {
|
|
75
|
+
structuredContent.annotations = resolvedAnnotations;
|
|
76
|
+
}
|
|
59
77
|
return {
|
|
60
78
|
content: [{ type: "text", text: normalized }],
|
|
61
79
|
structuredContent,
|
package/dist/server/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { annotationDataSchema, } from "../shared/annotation-data.js";
|
|
2
|
+
import { normalizeIncomingPath } from "./path-utils.js";
|
|
3
|
+
// Precedence: inline `annotations` wins if present; else read+parse the file.
|
|
4
|
+
// Throws a descriptive Error on invalid JSON or schema-invalid data.
|
|
5
|
+
export async function resolveAnnotations(input, readFile) {
|
|
6
|
+
if (input.annotations !== undefined) {
|
|
7
|
+
return validate(input.annotations);
|
|
8
|
+
}
|
|
9
|
+
const rawPath = input.annotationsPath;
|
|
10
|
+
if (rawPath === undefined)
|
|
11
|
+
return null;
|
|
12
|
+
const normalized = normalizeIncomingPath(rawPath);
|
|
13
|
+
if (!normalized) {
|
|
14
|
+
throw new Error("annotationsPath is empty");
|
|
15
|
+
}
|
|
16
|
+
const text = await readFile(normalized);
|
|
17
|
+
let parsed;
|
|
18
|
+
try {
|
|
19
|
+
parsed = JSON.parse(text);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new Error("annotations file is not valid JSON");
|
|
23
|
+
}
|
|
24
|
+
return validate(parsed);
|
|
25
|
+
}
|
|
26
|
+
function validate(value) {
|
|
27
|
+
const r = annotationDataSchema.safeParse(value);
|
|
28
|
+
if (!r.success) {
|
|
29
|
+
throw new Error(`invalid annotations: ${r.error.message}`);
|
|
30
|
+
}
|
|
31
|
+
return r.data;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=resolve-annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-annotations.js","sourceRoot":"","sources":["../../src/server/resolve-annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAOxD,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,KAAsB,EACtB,QAAwC;IAExC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
export const annotationSpanSchema = z.object({
|
|
3
|
+
start: z.number().min(0).finite(),
|
|
4
|
+
end: z.number().min(0).finite(),
|
|
5
|
+
});
|
|
6
|
+
export const annotationEnvelopePointSchema = z.object({
|
|
7
|
+
time: z.number().min(0).finite(),
|
|
8
|
+
value: z.number().min(0).max(1).finite(),
|
|
9
|
+
});
|
|
10
|
+
export const annotationLaneSchema = z.object({
|
|
11
|
+
label: z.string().optional(),
|
|
12
|
+
color: z.string().optional(), // CSS color; validated leniently, sanitized at render
|
|
13
|
+
spans: z.array(annotationSpanSchema),
|
|
14
|
+
envelope: z.array(annotationEnvelopePointSchema).optional(),
|
|
15
|
+
});
|
|
16
|
+
export const annotationDataSchema = z.object({
|
|
17
|
+
lanes: z.array(annotationLaneSchema),
|
|
18
|
+
});
|
|
19
|
+
export function parseAnnotationData(value) {
|
|
20
|
+
const r = annotationDataSchema.safeParse(value);
|
|
21
|
+
return r.success ? r.data : null;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=annotation-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation-data.js","sourceRoot":"","sources":["../../src/shared/annotation-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,sDAAsD;IACpF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;CACvC,CAAC,CAAC;AASH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@counterpoint-studio/audio-file-mcp-app",
|
|
3
|
-
"
|
|
3
|
+
"mcpName": "io.github.counterpoint-studio/audio-file-mcp-app",
|
|
4
|
+
"version": "1.1.0",
|
|
4
5
|
"description": "An MCP app for inspecting audio files in audio workflows. Playback, metadata, statistics",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"audio",
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
},
|
|
24
25
|
"files": [
|
|
25
26
|
"dist/server",
|
|
27
|
+
"dist/shared",
|
|
26
28
|
"dist/mcp-app.html",
|
|
27
29
|
"README.md",
|
|
28
30
|
"LICENSE"
|
|
@@ -38,6 +40,7 @@
|
|
|
38
40
|
"zod": "^4.4.3"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
43
|
+
"@anthropic-ai/mcpb": "^2.1.2",
|
|
41
44
|
"@types/node": "^25.6.2",
|
|
42
45
|
"tsx": "^4.21.0",
|
|
43
46
|
"typescript": "^6.0.3",
|
|
@@ -52,6 +55,8 @@
|
|
|
52
55
|
"build:dsp": "scripts/build-wasm.sh && scripts/build-js-dsp.sh",
|
|
53
56
|
"build:server": "tsc -p tsconfig.server-build.json && node scripts/add-shebang.mjs",
|
|
54
57
|
"build:dist": "pnpm run build && pnpm run build:server",
|
|
58
|
+
"build:mcpb": "node scripts/build-mcpb.mjs",
|
|
59
|
+
"clean:mcpb": "rm -rf build/mcpb dist/*.mcpb",
|
|
55
60
|
"serve": "npx tsx src/server/app.ts",
|
|
56
61
|
"test": "vitest run",
|
|
57
62
|
"typecheck": "tsc -b"
|