@pixeldojo/mcp 0.4.0 → 0.5.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 +27 -13
- package/dist/cli.cjs +64 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +64 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +51 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +51 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
PixelDojo MCP server. One install for Claude Code, Cursor, OpenClaw, and any
|
|
4
4
|
other [Model Context Protocol](https://modelcontextprotocol.io) host.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
16 named tools, 140+ models, async by default.
|
|
7
|
+
|
|
8
|
+
**Prefer zero install?** PixelDojo also runs a hosted MCP server with OAuth
|
|
9
|
+
sign-in (no API key): point any remote-capable client at
|
|
10
|
+
`https://pixeldojo.ai/api/mcp` and approve in your browser. Setup guides for
|
|
11
|
+
every platform: [pixeldojo.ai/skills](https://pixeldojo.ai/skills). This npm
|
|
12
|
+
package is the local (stdio) twin — same skills, plus local-file uploads.
|
|
7
13
|
|
|
8
14
|
## Quick start
|
|
9
15
|
|
|
@@ -34,24 +40,32 @@ Add to your editor's MCP config (e.g. `~/.config/claude-code/mcp.json`):
|
|
|
34
40
|
}
|
|
35
41
|
```
|
|
36
42
|
|
|
37
|
-
Restart your agent. You'll see
|
|
43
|
+
Restart your agent. You'll see 16 new tools.
|
|
38
44
|
|
|
39
45
|
## Named skills
|
|
40
46
|
|
|
41
|
-
| Skill | What it does |
|
|
42
|
-
|
|
43
|
-
| `pixeldojo:generate` | Any prompt → image or video
|
|
44
|
-
| `pixeldojo:
|
|
45
|
-
| `pixeldojo:
|
|
46
|
-
| `pixeldojo:
|
|
47
|
-
| `pixeldojo:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
| Skill | What it does |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `pixeldojo:generate` | Any prompt → image or video. Picks the best model, or pass any apiId. |
|
|
50
|
+
| `pixeldojo:edit` | Change an existing image with a text instruction (multi-image capable). |
|
|
51
|
+
| `pixeldojo:character` | Consistent characters across shots. |
|
|
52
|
+
| `pixeldojo:storyboard` | Multi-shot scenes from one brief. |
|
|
53
|
+
| `pixeldojo:upscale` | Enhance any image, up to 16×. |
|
|
54
|
+
| `pixeldojo:audio` | Full audio scenes: dialogue + effects + music in one clip (Seed Audio 1.0). |
|
|
55
|
+
| `pixeldojo:library` | Search your media library: saved My Media + recent generations. |
|
|
56
|
+
| `pixeldojo:save` | Save a result to My Media permanently (outputs otherwise expire in 24h). |
|
|
57
|
+
| `pixeldojo:save_workflow` / `run_workflow` / `list_workflows` | Save a multi-step chain once, run it by name from any chat. |
|
|
58
|
+
| `pixeldojo:upload` | Local file → 24h temp URL, for reference inputs. |
|
|
59
|
+
| `pixeldojo:from_url` | Product page URL → structured product info. Free. |
|
|
60
|
+
| `pixeldojo:campaign` / `campaign_status` | One product URL → hero + lifestyle set + optional video. |
|
|
61
|
+
| `pixeldojo:status` | Poll long-running jobs after a 30s sync handoff. |
|
|
62
|
+
|
|
63
|
+
Generation skills take a `model` field for whitelist-checked overrides. Pass
|
|
64
|
+
any apiId from the [API Platform catalog](https://pixeldojo.ai/api-platform).
|
|
51
65
|
|
|
52
66
|
## How long jobs work
|
|
53
67
|
|
|
54
|
-
|
|
68
|
+
Generation skills wait synchronously for up to 30 seconds. If the
|
|
55
69
|
job is still running, they return `{ jobId, statusUrl }` and the LLM follows
|
|
56
70
|
up by calling `pixeldojo:status` with the same `jobId`. Polling uses
|
|
57
71
|
exponential backoff (1s → 2s → 4s → 8s, capped) to keep load low on long
|
package/dist/cli.cjs
CHANGED
|
@@ -1147,7 +1147,7 @@ var init_library = __esm({
|
|
|
1147
1147
|
};
|
|
1148
1148
|
librarySkill = {
|
|
1149
1149
|
name: "pixeldojo:library",
|
|
1150
|
-
description: "Search your
|
|
1150
|
+
description: "Search your media library: saved My Media items (permanent) and recent API/MCP generations (expire after 24h), newest first. Returns asset URLs to reuse as reference inputs. Keep a result forever with pixeldojo:save.",
|
|
1151
1151
|
inputZod: InputSchema12,
|
|
1152
1152
|
inputJsonSchema: InputJsonSchema12,
|
|
1153
1153
|
allowedModels: [],
|
|
@@ -1156,6 +1156,52 @@ var init_library = __esm({
|
|
|
1156
1156
|
};
|
|
1157
1157
|
}
|
|
1158
1158
|
});
|
|
1159
|
+
async function run13(input, ctx) {
|
|
1160
|
+
const res = await ctx.client.saveMedia({
|
|
1161
|
+
url: input.url,
|
|
1162
|
+
prompt: input.prompt,
|
|
1163
|
+
tool_name: input.tool_name,
|
|
1164
|
+
modality: input.modality,
|
|
1165
|
+
job_id: input.job_id
|
|
1166
|
+
});
|
|
1167
|
+
return {
|
|
1168
|
+
kind: "text",
|
|
1169
|
+
text: `Saved to My Media (permanent): ${res.url}
|
|
1170
|
+
It will appear at https://pixeldojo.ai/my-images and in pixeldojo:library searches.`
|
|
1171
|
+
};
|
|
1172
|
+
}
|
|
1173
|
+
var InputSchema13, InputJsonSchema13, saveSkill;
|
|
1174
|
+
var init_save = __esm({
|
|
1175
|
+
"src/skills/save.ts"() {
|
|
1176
|
+
InputSchema13 = zod.z.object({
|
|
1177
|
+
url: zod.z.string().url().describe("The asset URL to save (image or video)."),
|
|
1178
|
+
prompt: zod.z.string().optional().describe("The prompt that produced it \u2014 makes it findable in the library later."),
|
|
1179
|
+
tool_name: zod.z.string().optional().describe("Tool/model slug that produced it."),
|
|
1180
|
+
modality: zod.z.enum(["image", "video", "audio"]).optional(),
|
|
1181
|
+
job_id: zod.z.string().optional().describe("The jobId that produced this asset, when known.")
|
|
1182
|
+
});
|
|
1183
|
+
InputJsonSchema13 = {
|
|
1184
|
+
type: "object",
|
|
1185
|
+
properties: {
|
|
1186
|
+
url: { type: "string", format: "uri" },
|
|
1187
|
+
prompt: { type: "string" },
|
|
1188
|
+
tool_name: { type: "string" },
|
|
1189
|
+
modality: { type: "string", enum: ["image", "video", "audio"] },
|
|
1190
|
+
job_id: { type: "string" }
|
|
1191
|
+
},
|
|
1192
|
+
required: ["url"]
|
|
1193
|
+
};
|
|
1194
|
+
saveSkill = {
|
|
1195
|
+
name: "pixeldojo:save",
|
|
1196
|
+
description: "Save a generated image or video into the user's My Media library permanently. Generation outputs otherwise expire after 24 hours \u2014 call this when the user wants to keep a result.",
|
|
1197
|
+
inputZod: InputSchema13,
|
|
1198
|
+
inputJsonSchema: InputJsonSchema13,
|
|
1199
|
+
allowedModels: [],
|
|
1200
|
+
defaultModel: "",
|
|
1201
|
+
run: run13
|
|
1202
|
+
};
|
|
1203
|
+
}
|
|
1204
|
+
});
|
|
1159
1205
|
function substitutePlaceholders(args, inputs, prevUrl) {
|
|
1160
1206
|
const missing = [];
|
|
1161
1207
|
const fill = (value) => {
|
|
@@ -1350,6 +1396,7 @@ __export(skills_exports, {
|
|
|
1350
1396
|
librarySkill: () => librarySkill,
|
|
1351
1397
|
listWorkflowsSkill: () => listWorkflowsSkill,
|
|
1352
1398
|
runWorkflowSkill: () => runWorkflowSkill,
|
|
1399
|
+
saveSkill: () => saveSkill,
|
|
1353
1400
|
saveWorkflowSkill: () => saveWorkflowSkill,
|
|
1354
1401
|
statusSkill: () => statusSkill,
|
|
1355
1402
|
storyboardSkill: () => storyboardSkill,
|
|
@@ -1374,6 +1421,7 @@ var init_skills = __esm({
|
|
|
1374
1421
|
init_upload();
|
|
1375
1422
|
init_audio();
|
|
1376
1423
|
init_library();
|
|
1424
|
+
init_save();
|
|
1377
1425
|
init_workflows();
|
|
1378
1426
|
ALL_SKILLS = [
|
|
1379
1427
|
generateSkill,
|
|
@@ -1383,6 +1431,7 @@ var init_skills = __esm({
|
|
|
1383
1431
|
upscaleSkill,
|
|
1384
1432
|
audioSkill,
|
|
1385
1433
|
librarySkill,
|
|
1434
|
+
saveSkill,
|
|
1386
1435
|
saveWorkflowSkill,
|
|
1387
1436
|
runWorkflowSkill,
|
|
1388
1437
|
listWorkflowsSkill,
|
|
@@ -1445,7 +1494,7 @@ function makeRedactedLogger(target = console) {
|
|
|
1445
1494
|
}
|
|
1446
1495
|
|
|
1447
1496
|
// src/server.ts
|
|
1448
|
-
var PACKAGE_VERSION = "0.1
|
|
1497
|
+
var PACKAGE_VERSION = "0.5.1" ;
|
|
1449
1498
|
function buildServer(options) {
|
|
1450
1499
|
if (!options.apiKey) {
|
|
1451
1500
|
throw new Error(
|
|
@@ -1610,11 +1659,19 @@ function printInit() {
|
|
|
1610
1659
|
`# Same shape as above.`,
|
|
1611
1660
|
``,
|
|
1612
1661
|
`# 3. Restart your agent. You'll see these tools:`,
|
|
1613
|
-
`# pixeldojo:generate
|
|
1614
|
-
`# pixeldojo:
|
|
1615
|
-
`# pixeldojo:
|
|
1616
|
-
`# pixeldojo:
|
|
1617
|
-
`# pixeldojo:
|
|
1662
|
+
`# pixeldojo:generate Any prompt \u2192 image or video.`,
|
|
1663
|
+
`# pixeldojo:edit Change an image with a text instruction.`,
|
|
1664
|
+
`# pixeldojo:character Consistent characters across shots.`,
|
|
1665
|
+
`# pixeldojo:storyboard Multi-shot scenes from one brief.`,
|
|
1666
|
+
`# pixeldojo:upscale Enhance any image.`,
|
|
1667
|
+
`# pixeldojo:audio Voices + effects + music in one clip.`,
|
|
1668
|
+
`# pixeldojo:library Search your saved media + generations.`,
|
|
1669
|
+
`# pixeldojo:save Keep a result in My Media permanently.`,
|
|
1670
|
+
`# pixeldojo:*_workflow Save / run / list multi-step chains.`,
|
|
1671
|
+
`# pixeldojo:upload Local file \u2192 temp URL for references.`,
|
|
1672
|
+
`# pixeldojo:from_url Product URL \u2192 structured product info.`,
|
|
1673
|
+
`# pixeldojo:campaign* Product URL \u2192 full launch pack.`,
|
|
1674
|
+
`# pixeldojo:status Poll long-running jobs.`,
|
|
1618
1675
|
``
|
|
1619
1676
|
].join("\n")
|
|
1620
1677
|
);
|