capybara-mcp 0.1.0 → 0.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
@@ -1,29 +1,26 @@
1
1
  # capybara-mcp
2
2
 
3
- MCP server for [Capybara](https://capybara.dev) game asset generation. Works with Claude Code, Cursor, Codex, OpenCode, Pi, and any MCP-capable agent.
3
+ MCP server for [Capybara](https://www.capybara.build) game asset generation. Works with Claude Code, Cursor, Codex, OpenCode, Pi, and any MCP-capable agent.
4
4
 
5
5
  ## Tools
6
6
 
7
7
  | Tool | Description |
8
8
  |------|-------------|
9
- | `generate_asset` | Generate maps, characters, props, HUD, and audio |
10
- | `check_job_status` | Recover results if a session was interrupted |
9
+ | `generate_assets` | Generate maps, characters, props, HUD, and audio |
10
+ | `get_job_status` | Recover results if a session was interrupted |
11
11
 
12
12
  ## Quick start
13
13
 
14
14
  ### 1. Configure (one time)
15
15
 
16
16
  ```bash
17
- npx capybara-mcp-setup --api-key <your-api-key> --server-url https://api.capybara.dev/v1
17
+ npx capybara-mcp-setup --api-key <your-api-key>
18
18
  ```
19
19
 
20
- This writes MCP config for Claude Desktop. For Claude Code:
20
+ For Claude Code:
21
21
 
22
22
  ```bash
23
- claude mcp add capybara-mcp \
24
- -e CAPYBARA_API_KEY=<your-api-key> \
25
- -e CAPYBARA_API_URL=https://api.capybara.dev/v1 \
26
- -- npx -y capybara-mcp
23
+ claude mcp add capybara-mcp -e CAPYBARA_API_KEY=<your-api-key> -- npx -y capybara-mcp
27
24
  ```
28
25
 
29
26
  ### 2. Environment variables
@@ -31,22 +28,23 @@ claude mcp add capybara-mcp \
31
28
  | Variable | Required | Description |
32
29
  |----------|----------|-------------|
33
30
  | `CAPYBARA_API_KEY` | Yes | Your Capybara API key |
34
- | `CAPYBARA_API_URL` | No | MCP API base URL (default: `https://api.capybara.dev/v1`) |
31
+
32
+ The API endpoint is built in (`https://caoybaramcp-production.up.railway.app/v1`). No other env vars needed.
35
33
 
36
34
  ### 3. Run manually
37
35
 
38
36
  ```bash
39
- CAPYBARA_API_KEY=<key> CAPYBARA_API_URL=https://api.capybara.dev/v1 npx capybara-mcp
37
+ CAPYBARA_API_KEY=<key> npx capybara-mcp
40
38
  ```
41
39
 
42
40
  ## How it works
43
41
 
44
- 1. The agent calls `generate_asset` with asset specs (maps, characters, etc.).
42
+ 1. The agent calls `generate_assets` with asset specs (maps, characters, etc.).
45
43
  2. The client reads `src/data/assets.md` and existing JSON from your game repo.
46
44
  3. Assets are generated via the Capybara API and written back to disk.
47
45
  4. Live progress appears in `.capybara/status.md` during the run.
48
46
 
49
- If interrupted, use `check_job_status` with the returned `job_id`.
47
+ If interrupted, use `get_job_status` with the returned `job_id`.
50
48
 
51
49
  ## Requirements
52
50
 
@@ -14,6 +14,7 @@ export declare function generateAssets(input: McpGenerateAssetInput, ctx: Client
14
14
  export declare function formatJobStatus(status: JobStatusResponse): string;
15
15
  export declare function checkJobStatus(jobId: string, ctx: ClientContext & {
16
16
  output_dir?: string;
17
+ workspace_root?: string;
17
18
  }): Promise<{
18
19
  summary: string;
19
20
  status: JobStatusResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"capybara-api.d.ts","sourceRoot":"","sources":["../../src/api/capybara-api.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAWF,wBAAsB,cAAc,CAClC,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA+C3B;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAcjE;AAuBD,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,aAAa,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAsBzD"}
1
+ {"version":3,"file":"capybara-api.d.ts","sourceRoot":"","sources":["../../src/api/capybara-api.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAwBF,wBAAsB,cAAc,CAClC,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAmD3B;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAcjE;AA8BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,aAAa,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CA8BzD"}
@@ -1,18 +1,28 @@
1
1
  import path from "node:path";
2
- import { getJobStatus, mapAssetToolInputToLegacy, postApiRequest, } from "capybara-mcp-shared";
2
+ import { getJobStatus, flattenAssetToolInput, postApiRequest, TOOL_GET_JOB_STATUS, } from "capybara-mcp-shared";
3
3
  import { writeFiles } from "../lib/write-files.js";
4
+ import { readGameIdFromWorkspace, writeGameIdToWorkspace } from "../lib/game-id.js";
5
+ import { resolveBaseMapArtReferences } from "../lib/resolve-art-reference.js";
4
6
  import { readWorkspaceContext } from "../lib/read-workspace-context.js";
5
7
  function withJobId(summary, jobId) {
6
8
  if (!jobId) {
7
9
  return summary;
8
10
  }
9
- return [summary, "", `job_id: ${jobId}`, "If interrupted, call check_job_status with this job_id."].join("\n");
11
+ return [summary, "", `job_id: ${jobId}`, `If interrupted, call ${TOOL_GET_JOB_STATUS} with this job_id.`].join("\n");
12
+ }
13
+ async function persistNewGameId(workspaceRoot, existingGameId, result) {
14
+ if (existingGameId || !result.gameId) {
15
+ return null;
16
+ }
17
+ const indexPath = await writeGameIdToWorkspace(workspaceRoot, result.gameId);
18
+ return `Set window.gameId in ${indexPath}`;
10
19
  }
11
20
  export async function generateAssets(input, ctx) {
12
- const { output_dir, workspace_root, plan_used_to_build, art_reference_url, ...schemaInput } = input;
13
- const payload = mapAssetToolInputToLegacy(schemaInput);
21
+ const { output_dir, workspace_root, ...schemaInput } = input;
14
22
  const workspaceRoot = path.resolve(workspace_root || ".");
23
+ const payload = await resolveBaseMapArtReferences(flattenAssetToolInput(schemaInput), workspaceRoot);
15
24
  const workspace_files = await readWorkspaceContext(workspaceRoot);
25
+ const existingGameId = await readGameIdFromWorkspace(workspaceRoot);
16
26
  await ctx.report?.({
17
27
  message: `Queued ${payload.assets.length} asset(s) for generation...`,
18
28
  progress: 0,
@@ -24,8 +34,7 @@ export async function generateAssets(input, ctx) {
24
34
  ...payload,
25
35
  workspace_files,
26
36
  workspace_root: workspaceRoot,
27
- plan_used_to_build,
28
- art_reference_url,
37
+ ...(existingGameId ? { gameId: existingGameId } : {}),
29
38
  },
30
39
  apiKey: ctx.apiKey,
31
40
  apiUrl: ctx.apiUrl,
@@ -36,9 +45,11 @@ export async function generateAssets(input, ctx) {
36
45
  const result = data;
37
46
  const rootDir = path.resolve(output_dir || workspaceRoot);
38
47
  const written = await writeFiles(result.assets ?? result.files ?? [], rootDir);
48
+ const gameIdNote = await persistNewGameId(workspaceRoot, existingGameId, result);
39
49
  const summaryParts = [
40
50
  result.message || `Generated ${payload.assets.length} asset(s).`,
41
51
  result.status ? `Status: ${result.status}` : null,
52
+ gameIdNote,
42
53
  result.assets_md ? "Updated src/data/assets.md." : null,
43
54
  result.warnings?.length ? `Warnings:\n${result.warnings.map((w) => ` - ${w}`).join("\n")}` : null,
44
55
  result.failedAssets?.length
@@ -64,15 +75,19 @@ export function formatJobStatus(status) {
64
75
  ].filter(Boolean);
65
76
  return lines.join("\n");
66
77
  }
67
- async function applyCompletedJob(status, outputDir) {
78
+ async function applyCompletedJob(status, outputDir, workspaceRoot, existingGameId) {
68
79
  if (status.status !== "complete" || status.result == null) {
69
80
  return null;
70
81
  }
71
82
  const result = status.result;
72
- const rootDir = path.resolve(outputDir || ".");
83
+ const rootDir = path.resolve(outputDir || workspaceRoot || ".");
73
84
  const written = await writeFiles(result.assets ?? result.files ?? [], rootDir);
85
+ const gameIdNote = workspaceRoot != null
86
+ ? await persistNewGameId(workspaceRoot, existingGameId, result)
87
+ : null;
74
88
  return [
75
89
  result.message || "Recovered generated assets.",
90
+ gameIdNote,
76
91
  written.length > 0
77
92
  ? [`Wrote ${written.length} file(s) to ${rootDir}:`, ...written.map((p) => ` - ${p}`)].join("\n")
78
93
  : null,
@@ -81,6 +96,8 @@ async function applyCompletedJob(status, outputDir) {
81
96
  .join("\n");
82
97
  }
83
98
  export async function checkJobStatus(jobId, ctx) {
99
+ const workspaceRoot = path.resolve(ctx.workspace_root || ".");
100
+ const existingGameId = await readGameIdFromWorkspace(workspaceRoot);
84
101
  const status = await getJobStatus({
85
102
  apiUrl: ctx.apiUrl,
86
103
  apiKey: ctx.apiKey,
@@ -89,7 +106,7 @@ export async function checkJobStatus(jobId, ctx) {
89
106
  });
90
107
  let summary = formatJobStatus(status);
91
108
  if (status.status === "complete") {
92
- const recovered = await applyCompletedJob(status, ctx.output_dir);
109
+ const recovered = await applyCompletedJob(status, ctx.output_dir, workspaceRoot, existingGameId);
93
110
  if (recovered) {
94
111
  summary = [recovered, "", `job_id: ${status.job_id}`].join("\n");
95
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capybara-api.js","sourceRoot":"","sources":["../../src/api/capybara-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capybara-api.js","sourceRoot":"","sources":["../../src/api/capybara-api.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { CAPYBARA_MCP_API_URL } from "capybara-mcp-shared";
4
5
  import { registerTools } from "./tools/register-tools.js";
5
6
  const API_KEY = process.env.CAPYBARA_API_KEY;
6
- const API_URL = process.env.CAPYBARA_API_URL || "https://api.capybara.dev/v1";
7
7
  if (!API_KEY) {
8
8
  console.error("CAPYBARA_API_KEY is not set. Run the setup command first:");
9
9
  console.error(" npx -y capybara-mcp-setup --api-key <your-key>");
10
10
  process.exit(1);
11
11
  }
12
12
  const server = new McpServer({
13
- name: "capybara_tools",
13
+ name: "capybara-mcp",
14
14
  version: "0.1.0",
15
15
  }, {
16
16
  capabilities: {
@@ -19,7 +19,7 @@ const server = new McpServer({
19
19
  });
20
20
  registerTools(server, {
21
21
  apiKey: API_KEY,
22
- apiUrl: API_URL,
22
+ apiUrl: CAPYBARA_MCP_API_URL,
23
23
  });
24
24
  const transport = new StdioServerTransport();
25
25
  await server.connect(transport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,6BAA6B,CAAC;AAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,OAAO,EAAE,EAAE;KACZ;CACF,CACF,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,OAAO,EAAE,EAAE;KACZ;CACF,CACF,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,oBAAoB;CAC7B,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function readGameIdFromWorkspace(workspaceRoot: string): Promise<string | undefined>;
2
+ export declare function writeGameIdToWorkspace(workspaceRoot: string, gameId: string): Promise<string>;
3
+ //# sourceMappingURL=game-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-id.d.ts","sourceRoot":"","sources":["../../src/lib/game-id.ts"],"names":[],"mappings":"AAcA,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7B;AAED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
@@ -0,0 +1,38 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { parseGameIdFromIndexHtml, setGameIdInIndexHtml } from "capybara-mcp-shared";
4
+ const INDEX_HTML = "index.html";
5
+ async function readIndexHtml(workspaceRoot) {
6
+ try {
7
+ return await fs.readFile(path.join(workspaceRoot, INDEX_HTML), "utf8");
8
+ }
9
+ catch {
10
+ return null;
11
+ }
12
+ }
13
+ export async function readGameIdFromWorkspace(workspaceRoot) {
14
+ const html = await readIndexHtml(workspaceRoot);
15
+ if (!html) {
16
+ return undefined;
17
+ }
18
+ return parseGameIdFromIndexHtml(html);
19
+ }
20
+ export async function writeGameIdToWorkspace(workspaceRoot, gameId) {
21
+ const indexPath = path.join(workspaceRoot, INDEX_HTML);
22
+ let html = await readIndexHtml(workspaceRoot);
23
+ if (!html) {
24
+ html = `<!DOCTYPE html>
25
+ <html lang="en">
26
+ <head>
27
+ <meta charset="UTF-8" />
28
+ <title>Game</title>
29
+ </head>
30
+ <body></body>
31
+ </html>
32
+ `;
33
+ }
34
+ const updated = setGameIdInIndexHtml(html, gameId);
35
+ await fs.writeFile(indexPath, updated, "utf8");
36
+ return indexPath;
37
+ }
38
+ //# sourceMappingURL=game-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-id.js","sourceRoot":"","sources":["../../src/lib/game-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAErF,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,KAAK,UAAU,aAAa,CAAC,aAAqB;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB,EACrB,MAAc;IAEd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;IAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG;;;;;;;;CAQV,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-workspace-context.d.ts","sourceRoot":"","sources":["../../src/lib/read-workspace-context.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,aAAa,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyBzG"}
1
+ {"version":3,"file":"read-workspace-context.d.ts","sourceRoot":"","sources":["../../src/lib/read-workspace-context.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,aAAa,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+BzG"}
@@ -2,6 +2,7 @@ import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  const ASSETS_REGISTRY_PATH = "src/data/assets.md";
4
4
  const DATA_DIR = "src/data";
5
+ const INDEX_HTML_PATH = "index.html";
5
6
  const normalizeRepoPath = (rootDir, absolutePath) => path.relative(rootDir, absolutePath).split(path.sep).join("/");
6
7
  async function readFileIfExists(filePath) {
7
8
  try {
@@ -53,6 +54,11 @@ export async function readWorkspaceContext(workspaceRoot = process.cwd()) {
53
54
  if (propsTs != null) {
54
55
  files[normalizeRepoPath(rootDir, propsTsPath)] = propsTs;
55
56
  }
57
+ const indexHtmlPath = path.join(rootDir, INDEX_HTML_PATH);
58
+ const indexHtml = await readFileIfExists(indexHtmlPath);
59
+ if (indexHtml != null) {
60
+ files[INDEX_HTML_PATH] = indexHtml;
61
+ }
56
62
  return files;
57
63
  }
58
64
  //# sourceMappingURL=read-workspace-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-workspace-context.js","sourceRoot":"","sources":["../../src/lib/read-workspace-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-workspace-context.js","sourceRoot":"","sources":["../../src/lib/read-workspace-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AssetToolInput } from "capybara-mcp-shared";
2
+ /** Load an art reference (http(s) URL or local path) as a data:image base64 URI. */
3
+ export declare function resolveArtReferenceToBase64(source: string, workspaceRoot: string): Promise<string>;
4
+ /** Replace base_map art_reference_url path/URL values with base64 data URIs. */
5
+ export declare function resolveBaseMapArtReferences(payload: AssetToolInput, workspaceRoot: string): Promise<AssetToolInput>;
6
+ //# sourceMappingURL=resolve-art-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-art-reference.d.ts","sourceRoot":"","sources":["../../src/lib/resolve-art-reference.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgCvE,oFAAoF;AACpF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,gFAAgF;AAChF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
@@ -0,0 +1,73 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ const EXT_MIME = {
4
+ ".png": "image/png",
5
+ ".jpg": "image/jpeg",
6
+ ".jpeg": "image/jpeg",
7
+ ".gif": "image/gif",
8
+ ".webp": "image/webp",
9
+ ".bmp": "image/bmp",
10
+ ".svg": "image/svg+xml",
11
+ };
12
+ function isHttpUrl(value) {
13
+ return /^https?:\/\//i.test(value);
14
+ }
15
+ function isDataImageUri(value) {
16
+ return /^data:image\/[a-zA-Z0-9.+-]+;base64,/i.test(value);
17
+ }
18
+ function mimeFromPath(filePath) {
19
+ return EXT_MIME[path.extname(filePath).toLowerCase()] ?? "image/png";
20
+ }
21
+ function mimeFromContentType(contentType) {
22
+ if (!contentType) {
23
+ return "image/png";
24
+ }
25
+ const mime = contentType.split(";")[0]?.trim().toLowerCase();
26
+ return mime?.startsWith("image/") ? mime : "image/png";
27
+ }
28
+ /** Load an art reference (http(s) URL or local path) as a data:image base64 URI. */
29
+ export async function resolveArtReferenceToBase64(source, workspaceRoot) {
30
+ const trimmed = source.trim();
31
+ if (!trimmed) {
32
+ throw new Error("art_reference_url is empty");
33
+ }
34
+ if (isDataImageUri(trimmed)) {
35
+ return trimmed;
36
+ }
37
+ if (isHttpUrl(trimmed)) {
38
+ const response = await fetch(trimmed);
39
+ if (!response.ok) {
40
+ throw new Error(`Failed to fetch art_reference_url (${response.status}): ${trimmed}`);
41
+ }
42
+ const buffer = Buffer.from(await response.arrayBuffer());
43
+ const mime = mimeFromContentType(response.headers.get("content-type"));
44
+ return `data:${mime};base64,${buffer.toString("base64")}`;
45
+ }
46
+ const absolutePath = path.isAbsolute(trimmed)
47
+ ? trimmed
48
+ : path.resolve(workspaceRoot, trimmed);
49
+ try {
50
+ const buffer = await fs.readFile(absolutePath);
51
+ return `data:${mimeFromPath(absolutePath)};base64,${buffer.toString("base64")}`;
52
+ }
53
+ catch (err) {
54
+ const message = err instanceof Error ? err.message : String(err);
55
+ throw new Error(`Failed to read art_reference_url file "${trimmed}" (resolved: ${absolutePath}): ${message}`);
56
+ }
57
+ }
58
+ /** Replace base_map art_reference_url path/URL values with base64 data URIs. */
59
+ export async function resolveBaseMapArtReferences(payload, workspaceRoot) {
60
+ const assets = await Promise.all(payload.assets.map(async (asset) => {
61
+ if (asset.type !== "base_map") {
62
+ return asset;
63
+ }
64
+ const source = asset.art_reference_url;
65
+ if (typeof source !== "string" || !source.trim()) {
66
+ return asset;
67
+ }
68
+ const art_reference_url = await resolveArtReferenceToBase64(source, workspaceRoot);
69
+ return { ...asset, art_reference_url };
70
+ }));
71
+ return { ...payload, assets };
72
+ }
73
+ //# sourceMappingURL=resolve-art-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-art-reference.js","sourceRoot":"","sources":["../../src/lib/resolve-art-reference.ts"],"names":[],"mappings":"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"}
package/dist/setup.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
+ import { CAPYBARA_MCP_API_URL, TOOL_GET_JOB_STATUS } from "capybara-mcp-shared";
5
6
  function parseArgs(argv) {
6
7
  const args = {};
7
8
  for (let i = 0; i < argv.length; i++) {
@@ -16,7 +17,6 @@ function parseArgs(argv) {
16
17
  }
17
18
  const args = parseArgs(process.argv.slice(2));
18
19
  const apiKey = args["api-key"];
19
- const serverUrl = args["server-url"] || "https://api.capybara.dev/v1";
20
20
  if (!apiKey || typeof apiKey !== "string") {
21
21
  console.error("Missing required flag: --api-key <your-key>");
22
22
  console.error("\nUsage:");
@@ -58,14 +58,14 @@ parsed.mcpServers["capybara-mcp"] = {
58
58
  args: ["-y", "capybara-mcp"],
59
59
  env: {
60
60
  CAPYBARA_API_KEY: apiKey,
61
- CAPYBARA_API_URL: serverUrl,
62
61
  },
63
62
  };
64
63
  fs.mkdirSync(path.dirname(configPath), { recursive: true });
65
64
  fs.writeFileSync(configPath, JSON.stringify(parsed, null, 2), "utf-8");
66
65
  console.log(`capybara-mcp configured in:\n ${configPath}`);
66
+ console.log(`API: ${CAPYBARA_MCP_API_URL}`);
67
67
  console.log("\nRestart Claude Desktop to load the new tools.");
68
68
  console.log("\nUsing Claude Code instead? Run this:");
69
- console.log(` claude mcp add capybara-mcp -e CAPYBARA_API_KEY=${apiKey} -e CAPYBARA_API_URL=${serverUrl} -- npx -y capybara-mcp`);
70
- console.log("\nIf a generate tool is interrupted, use check_job_status with the returned job_id.");
69
+ console.log(` claude mcp add capybara-mcp -e CAPYBARA_API_KEY=${apiKey} -- npx -y capybara-mcp`);
70
+ console.log(`\nIf a generate tool is interrupted, use ${TOOL_GET_JOB_STATUS} with the returned job_id.`);
71
71
  //# sourceMappingURL=setup.js.map
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAsDhC,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,QA4DzG"}
1
+ {"version":3,"file":"register-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAsDhC,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,QA4DzG"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { ASSET_TOOL_DESCRIPTION, mcpGenerateAssetInputSchema, } from "capybara-mcp-shared";
2
+ import { ASSET_TOOL_DESCRIPTION, mcpGenerateAssetInputSchema, TOOL_GENERATE_ASSETS, TOOL_GET_JOB_STATUS, } from "capybara-mcp-shared";
3
3
  import { checkJobStatus, generateAssets, } from "../api/capybara-api.js";
4
4
  import { createProgressReporter } from "../lib/progress.js";
5
5
  import { createStatusLogger } from "../lib/status-markdown.js";
@@ -7,7 +7,7 @@ async function runLongTool({ label, extra, server, work, }) {
7
7
  const statusLog = await createStatusLogger(label);
8
8
  const { report } = createProgressReporter({ extra, server, label, statusLog });
9
9
  const onJobId = async (jobId) => {
10
- await statusLog.append(`job_id: ${jobId} (use check_job_status if interrupted)`);
10
+ await statusLog.append(`job_id: ${jobId} (use ${TOOL_GET_JOB_STATUS} if interrupted)`);
11
11
  };
12
12
  try {
13
13
  await statusLog.append("Tool call accepted");
@@ -19,12 +19,12 @@ async function runLongTool({ label, extra, server, work, }) {
19
19
  }
20
20
  catch (err) {
21
21
  if (err instanceof DOMException && err.name === "AbortError") {
22
- await statusLog.finish("cancelled", "Cancelled — use check_job_status with your job_id");
22
+ await statusLog.finish("cancelled", `Cancelled — use ${TOOL_GET_JOB_STATUS} with your job_id`);
23
23
  return {
24
24
  content: [
25
25
  {
26
26
  type: "text",
27
- text: `${label} cancelled. If a job_id was issued, call check_job_status to recover results.`,
27
+ text: `${label} cancelled. If a job_id was issued, call ${TOOL_GET_JOB_STATUS} to recover results.`,
28
28
  },
29
29
  ],
30
30
  isError: true,
@@ -39,27 +39,27 @@ async function runLongTool({ label, extra, server, work, }) {
39
39
  }
40
40
  }
41
41
  export function registerTools(server, ctx) {
42
- server.registerTool("generate_asset", {
43
- title: "Generate game assets",
42
+ server.registerTool(TOOL_GENERATE_ASSETS, {
43
+ title: "Generate assets",
44
44
  description: ASSET_TOOL_DESCRIPTION +
45
- " Returns a job_id for check_job_status if interrupted. " +
45
+ ` Returns a job_id for ${TOOL_GET_JOB_STATUS} if interrupted. ` +
46
46
  "Live progress is written to `.capybara/status.md` (removed when the tool finishes).",
47
47
  inputSchema: mcpGenerateAssetInputSchema,
48
48
  annotations: { openWorldHint: true },
49
49
  }, async (input, extra) => runLongTool({
50
- label: "generate_asset",
50
+ label: TOOL_GENERATE_ASSETS,
51
51
  extra,
52
52
  server,
53
53
  work: ({ report, signal, onJobId }) => generateAssets(input, { ...ctx, report, signal, onJobId }).then((r) => ({
54
54
  summary: r.summary,
55
55
  })),
56
56
  }));
57
- server.registerTool("check_job_status", {
58
- title: "Check job status",
59
- description: "Poll a generation job by job_id. Use when generate_asset was interrupted, or to check " +
57
+ server.registerTool(TOOL_GET_JOB_STATUS, {
58
+ title: "Get job status",
59
+ description: `Poll a generation job by job_id. Use when ${TOOL_GENERATE_ASSETS} was interrupted, or to check ` +
60
60
  "progress after closing the agent. When status is complete, writes any recovered files to disk.",
61
61
  inputSchema: {
62
- job_id: z.string().min(1).describe("The job_id from generate_asset."),
62
+ job_id: z.string().min(1).describe(`The job_id from ${TOOL_GENERATE_ASSETS}.`),
63
63
  output_dir: z
64
64
  .string()
65
65
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../../src/tools/register-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capybara-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Capybara MCP tools — generate game assets from Claude Code, Cursor, Codex, and other MCP agents",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -8,7 +8,10 @@
8
8
  "capybara-mcp": "./dist/index.js",
9
9
  "capybara-mcp-setup": "./dist/setup.js"
10
10
  },
11
- "files": ["dist", "README.md"],
11
+ "files": [
12
+ "dist",
13
+ "README.md"
14
+ ],
12
15
  "scripts": {
13
16
  "build": "tsc -p tsconfig.json",
14
17
  "dev": "tsx src/index.ts",