@keeeeeeeks/cryptoloom-mcp-server 0.1.1 → 0.3.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/dist/index.js CHANGED
@@ -1,85 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import { randomUUID } from "node:crypto";
3
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
4
  import { z } from "zod";
6
- const BASE_URL = process.env.CRYPTOLOOM_API_URL ?? "https://web-mu-silk.vercel.app";
7
- const workIdResolutionCache = new Map();
8
- const inkSessionStateCache = new Map();
9
- function normalizeWorkId(input) {
10
- const trimmed = input.trim();
11
- try {
12
- const parsed = JSON.parse(trimmed);
13
- if (typeof parsed === "string" && parsed.trim().length > 0) {
14
- return parsed.trim();
15
- }
16
- }
17
- catch { }
18
- if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
19
- const inner = trimmed.slice(1, -1).trim();
20
- if (inner.length > 0)
21
- return inner;
22
- }
23
- return trimmed;
24
- }
25
- async function resolvePlayableWorkId(input) {
26
- const normalized = normalizeWorkId(input);
27
- if (workIdResolutionCache.has(normalized)) {
28
- return workIdResolutionCache.get(normalized);
29
- }
30
- const res = await api("/api/works");
31
- if (!res.ok) {
32
- workIdResolutionCache.set(normalized, normalized);
33
- return normalized;
34
- }
35
- const data = (await res.json());
36
- const works = Array.isArray(data.works) ? data.works : [];
37
- const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
38
- if (byStoryId?.storyId) {
39
- workIdResolutionCache.set(normalized, byStoryId.storyId);
40
- return byStoryId.storyId;
41
- }
42
- const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
43
- if (byDbId?.storyId) {
44
- workIdResolutionCache.set(normalized, byDbId.storyId);
45
- return byDbId.storyId;
46
- }
47
- workIdResolutionCache.set(normalized, normalized);
48
- return normalized;
49
- }
50
- async function api(path, options = {}) {
51
- const url = `${BASE_URL}${path}`;
52
- return fetch(url, {
53
- ...options,
54
- headers: {
55
- "Content-Type": "application/json",
56
- ...options.headers,
57
- },
58
- });
59
- }
5
+ import { api } from "./lib/api.js";
6
+ import { createInkBranch, getInkBranch, setInkBranch } from "./lib/ink-branch-store.js";
7
+ import { addPlayableWorkHint, fetchListedWorks, normalizeWorkId, resolvePlayableWorkId, resolveWorkDbId } from "./lib/work-resolution.js";
60
8
  const server = new McpServer({
61
9
  name: "cryptoloom",
62
- version: "0.1.0",
10
+ version: "0.2.0",
63
11
  });
64
12
  server.tool("cryptoloom_list_works", "List all playable interactive fiction works on Cryptoloom with their IDs, formats, and prices", {}, async () => {
65
- const res = await api("/api/works");
66
- const data = await res.json();
67
- const works = Array.isArray(data.works)
68
- ? (data.works).map((work) => ({
69
- ...work,
70
- playableWorkId: typeof work.storyId === "string" && work.storyId.length > 0
71
- ? work.storyId
72
- : work.id,
73
- }))
74
- : [];
13
+ const data = { works: await fetchListedWorks() };
75
14
  return {
76
15
  content: [
77
16
  {
78
17
  type: "text",
79
- text: JSON.stringify({
80
- works,
81
- usageHint: "For cryptoloom_start_game and other gameplay tools, use playableWorkId (storyId), not the database id.",
82
- }, null, 2),
18
+ text: JSON.stringify(addPlayableWorkHint(data), null, 2),
83
19
  },
84
20
  ],
85
21
  };
@@ -92,7 +28,24 @@ server.tool("cryptoloom_get_work", "Get details for a specific work including de
92
28
  const data = await res.json();
93
29
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
94
30
  });
95
- server.tool("cryptoloom_start_game", "Start a new game session for a work. Returns the opening text and either choices plus an MCP session branch handle (Ink) or a sessionId (Glulx parser)", { workId: z.string().describe("Work ID to play") }, async ({ workId }) => {
31
+ server.tool("cryptoloom_start_game", "Start a new game session for a work. Returns the opening text and either choices plus an MCP session branch handle (Ink) or a sessionId (Glulx parser)", {
32
+ workId: z.string().describe("Work ID to play"),
33
+ playerId: z.string().optional().describe("Optional player ID. If provided, creates a tracked run instead of using the stateless play endpoint."),
34
+ }, async ({ workId, playerId }) => {
35
+ const trimmedPlayerId = typeof playerId === "string" ? playerId.trim() : "";
36
+ if (trimmedPlayerId.length > 0) {
37
+ const resolvedDbWorkId = await resolveWorkDbId(workId);
38
+ const runRes = await api("/api/runs", {
39
+ method: "POST",
40
+ body: JSON.stringify({ workId: resolvedDbWorkId, playerId: trimmedPlayerId, role: "agent" }),
41
+ });
42
+ if (!runRes.ok) {
43
+ const err = await runRes.json();
44
+ return { content: [{ type: "text", text: `Error: ${err.error}` }] };
45
+ }
46
+ const runData = await runRes.json();
47
+ return { content: [{ type: "text", text: JSON.stringify(runData, null, 2) }] };
48
+ }
96
49
  const resolvedWorkId = await resolvePlayableWorkId(workId);
97
50
  const res = await api(`/api/works/${encodeURIComponent(resolvedWorkId)}/play`, {
98
51
  method: "POST",
@@ -104,11 +57,7 @@ server.tool("cryptoloom_start_game", "Start a new game session for a work. Retur
104
57
  }
105
58
  const data = await res.json();
106
59
  if (data.format === "ink" && typeof data.state === "string") {
107
- const mcpSessionBranchId = randomUUID();
108
- inkSessionStateCache.set(mcpSessionBranchId, {
109
- state: data.state,
110
- workId: resolvedWorkId,
111
- });
60
+ const mcpSessionBranchId = createInkBranch(data.state, resolvedWorkId);
112
61
  return {
113
62
  content: [
114
63
  {
@@ -122,23 +71,46 @@ server.tool("cryptoloom_start_game", "Start a new game session for a work. Retur
122
71
  });
123
72
  server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) game. Prefer `mcpSessionBranchId` from cryptoloom_start_game; use raw `state` only as a stateless fallback.", {
124
73
  workId: z.string().describe("Work ID"),
74
+ runId: z.string().optional().describe("Preferred for tracked runs: run ID returned by cryptoloom_start_game when called with playerId"),
125
75
  mcpSessionBranchId: z.string().optional().describe("Preferred: MCP session branch handle returned by cryptoloom_start_game for Ink games"),
126
76
  state: z.string().optional().describe("Fallback only: serialized game state from the previous response"),
127
77
  choiceIndex: z.number().int().min(0).describe("Index of the choice to make (0-based)"),
128
- }, async ({ workId, state, mcpSessionBranchId, choiceIndex }) => {
78
+ }, async ({ workId, runId, state, mcpSessionBranchId, choiceIndex }) => {
79
+ const normalizedRunId = typeof runId === "string" ? runId.trim() : "";
80
+ if (normalizedRunId.length > 0) {
81
+ const res = await api(`/api/runs/${encodeURIComponent(normalizedRunId)}/turn`, {
82
+ method: "POST",
83
+ body: JSON.stringify({ choiceIndex }),
84
+ });
85
+ if (!res.ok) {
86
+ const err = await res.json();
87
+ return { content: [{ type: "text", text: `Error: ${err.error}` }] };
88
+ }
89
+ const data = await res.json();
90
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
91
+ }
129
92
  const normalizedWorkId = normalizeWorkId(workId);
93
+ const normalizedBranchId = typeof mcpSessionBranchId === "string" ? mcpSessionBranchId.trim() : "";
94
+ const cachedBranch = normalizedBranchId.length > 0 ? getInkBranch(normalizedBranchId) : undefined;
130
95
  let normalizedState = typeof state === "string" ? state.trim() : "";
131
96
  if (normalizedState.length === 0 ||
132
97
  normalizedState === "undefined" ||
133
98
  normalizedState === "null") {
134
- if (typeof mcpSessionBranchId === "string") {
135
- const cached = inkSessionStateCache.get(mcpSessionBranchId.trim());
136
- if (cached) {
137
- normalizedState = cached.state;
138
- }
99
+ if (cachedBranch) {
100
+ normalizedState = cachedBranch.state;
139
101
  }
140
102
  }
141
103
  if (normalizedState.length === 0 || normalizedState === "undefined" || normalizedState === "null") {
104
+ if (normalizedBranchId.length > 0 && !cachedBranch) {
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: "Error: mcpSessionBranchId was not found in this MCP server process. This usually means you started a new MCP process or the in-memory branch expired. Reuse the same persistent MCP connection, or pass raw `state` as a stateless fallback.",
110
+ },
111
+ ],
112
+ };
113
+ }
142
114
  return {
143
115
  content: [
144
116
  {
@@ -149,9 +121,8 @@ server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) ga
149
121
  };
150
122
  }
151
123
  const resolvedWorkId = await resolvePlayableWorkId(normalizedWorkId);
152
- if (typeof mcpSessionBranchId === "string") {
153
- const cached = inkSessionStateCache.get(mcpSessionBranchId.trim());
154
- if (cached && cached.workId !== resolvedWorkId) {
124
+ if (normalizedBranchId.length > 0) {
125
+ if (cachedBranch && cachedBranch.workId !== resolvedWorkId) {
155
126
  return {
156
127
  content: [
157
128
  {
@@ -171,22 +142,62 @@ server.tool("cryptoloom_make_choice", "Make a choice in an Ink (choice-based) ga
171
142
  return { content: [{ type: "text", text: `Error: ${err.error}` }] };
172
143
  }
173
144
  const data = await res.json();
174
- if (typeof mcpSessionBranchId === "string" && typeof data.state === "string") {
175
- inkSessionStateCache.set(mcpSessionBranchId.trim(), {
176
- state: data.state,
177
- workId: resolvedWorkId,
178
- });
145
+ if (normalizedBranchId.length > 0 && typeof data.state === "string") {
146
+ setInkBranch(normalizedBranchId, data.state, resolvedWorkId);
179
147
  return {
180
148
  content: [
181
149
  {
182
150
  type: "text",
183
- text: JSON.stringify({ ...data, mcpSessionBranchId: mcpSessionBranchId.trim() }, null, 2),
151
+ text: JSON.stringify({ ...data, mcpSessionBranchId: normalizedBranchId }, null, 2),
184
152
  },
185
153
  ],
186
154
  };
187
155
  }
188
156
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
189
157
  });
158
+ server.tool("cryptoloom_save_game", "Save a tracked run into a save slot. Requires a runId from the runs-backed start_game flow.", {
159
+ runId: z.string().describe("Tracked run ID"),
160
+ slotIndex: z.number().int().min(0).describe("Save slot index (0-based)"),
161
+ }, async ({ runId, slotIndex }) => {
162
+ const res = await api(`/api/runs/${encodeURIComponent(runId.trim())}/save`, {
163
+ method: "POST",
164
+ body: JSON.stringify({ slotIndex }),
165
+ });
166
+ if (!res.ok) {
167
+ const err = await res.json();
168
+ return { content: [{ type: "text", text: `Error: ${err.error}` }] };
169
+ }
170
+ const data = await res.json();
171
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
172
+ });
173
+ server.tool("cryptoloom_list_saves", "List save slots for a player and work.", {
174
+ workId: z.string().describe("Work ID"),
175
+ playerId: z.string().describe("Player ID"),
176
+ }, async ({ workId, playerId }) => {
177
+ const resolvedDbWorkId = await resolveWorkDbId(workId);
178
+ const res = await api(`/api/works/${encodeURIComponent(resolvedDbWorkId)}/saves?playerId=${encodeURIComponent(playerId.trim())}`);
179
+ if (!res.ok) {
180
+ const err = await res.json();
181
+ return { content: [{ type: "text", text: `Error: ${err.error}` }] };
182
+ }
183
+ const data = await res.json();
184
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
185
+ });
186
+ server.tool("cryptoloom_load_game", "Load a tracked run from a save slot. Returns the restored run and current turn snapshot.", {
187
+ runId: z.string().describe("Existing run ID for the same player/work context"),
188
+ saveSlotId: z.string().describe("Save slot ID to restore"),
189
+ }, async ({ runId, saveSlotId }) => {
190
+ const res = await api(`/api/runs/${encodeURIComponent(runId.trim())}/load`, {
191
+ method: "POST",
192
+ body: JSON.stringify({ saveSlotId }),
193
+ });
194
+ if (!res.ok) {
195
+ const err = await res.json();
196
+ return { content: [{ type: "text", text: `Error: ${err.error}` }] };
197
+ }
198
+ const data = await res.json();
199
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
200
+ });
190
201
  server.tool("cryptoloom_send_command", "Send a text command to a Glulx (parser-based) game. Provide the sessionId from the start response.", {
191
202
  workId: z.string().describe("Work ID"),
192
203
  sessionId: z.string().describe("Session ID from the start_game response"),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function api(path: string, options?: RequestInit): Promise<Response>;
2
+ export declare function apiJson<T>(path: string, options?: RequestInit): Promise<T>;
@@ -0,0 +1,17 @@
1
+ const BASE_URL = process.env.CRYPTOLOOM_API_URL ?? "https://web-mu-silk.vercel.app";
2
+ export async function api(path, options = {}) {
3
+ const authorization = process.env.CRYPTOLOOM_PAYMENT_AUTHORIZATION?.trim();
4
+ return fetch(`${BASE_URL}${path}`, {
5
+ ...options,
6
+ headers: {
7
+ "Content-Type": "application/json",
8
+ ...(authorization ? { Authorization: authorization } : {}),
9
+ ...options.headers,
10
+ },
11
+ });
12
+ }
13
+ export async function apiJson(path, options = {}) {
14
+ const res = await api(path, options);
15
+ return res.json();
16
+ }
17
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gCAAgC,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,UAAuB,EAAE;IAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,CAAC;IAC3E,OAAO,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;QACjC,GAAG,OAAO;QACV,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,OAAO,CAAC,OAAO;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,IAAY,EAAE,UAAuB,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC"}
@@ -0,0 +1,8 @@
1
+ type InkBranch = {
2
+ state: string;
3
+ workId: string;
4
+ };
5
+ export declare function createInkBranch(state: string, workId: string): `${string}-${string}-${string}-${string}-${string}`;
6
+ export declare function getInkBranch(branchId: string): InkBranch | undefined;
7
+ export declare function setInkBranch(branchId: string, state: string, workId: string): void;
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { randomUUID } from "node:crypto";
2
+ const branchStore = new Map();
3
+ export function createInkBranch(state, workId) {
4
+ const branchId = randomUUID();
5
+ branchStore.set(branchId, { state, workId });
6
+ return branchId;
7
+ }
8
+ export function getInkBranch(branchId) {
9
+ return branchStore.get(branchId);
10
+ }
11
+ export function setInkBranch(branchId, state, workId) {
12
+ branchStore.set(branchId, { state, workId });
13
+ }
14
+ //# sourceMappingURL=ink-branch-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ink-branch-store.js","sourceRoot":"","sources":["../../src/lib/ink-branch-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEjD,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,MAAc;IAC3D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAc;IAC1E,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,15 @@
1
+ type ListedWork = {
2
+ id?: string;
3
+ storyId?: string;
4
+ };
5
+ export declare function normalizeWorkId(input: string): string;
6
+ export declare function fetchListedWorks(): Promise<ListedWork[]>;
7
+ export declare function resolvePlayableWorkId(input: string): Promise<string>;
8
+ export declare function resolveWorkDbId(input: string): Promise<string>;
9
+ export declare function addPlayableWorkHint(data: unknown): {
10
+ works: {
11
+ playableWorkId: unknown;
12
+ }[];
13
+ usageHint: string;
14
+ };
15
+ export {};
@@ -0,0 +1,87 @@
1
+ import { api } from "./api.js";
2
+ const playableWorkIdCache = new Map();
3
+ const dbWorkIdCache = new Map();
4
+ export function normalizeWorkId(input) {
5
+ const trimmed = input.trim();
6
+ try {
7
+ const parsed = JSON.parse(trimmed);
8
+ if (typeof parsed === "string" && parsed.trim().length > 0) {
9
+ return parsed.trim();
10
+ }
11
+ }
12
+ catch { }
13
+ if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
14
+ const inner = trimmed.slice(1, -1).trim();
15
+ if (inner.length > 0)
16
+ return inner;
17
+ }
18
+ return trimmed;
19
+ }
20
+ export async function fetchListedWorks() {
21
+ const res = await api("/api/works");
22
+ if (!res.ok)
23
+ return [];
24
+ const data = (await res.json());
25
+ return Array.isArray(data.works) ? data.works : [];
26
+ }
27
+ export async function resolvePlayableWorkId(input) {
28
+ const normalized = normalizeWorkId(input);
29
+ const cached = playableWorkIdCache.get(normalized);
30
+ if (cached)
31
+ return cached;
32
+ const works = await fetchListedWorks();
33
+ if (works.length === 0) {
34
+ playableWorkIdCache.set(normalized, normalized);
35
+ return normalized;
36
+ }
37
+ const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
38
+ if (byStoryId?.storyId) {
39
+ playableWorkIdCache.set(normalized, byStoryId.storyId);
40
+ return byStoryId.storyId;
41
+ }
42
+ const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
43
+ if (byDbId?.storyId) {
44
+ playableWorkIdCache.set(normalized, byDbId.storyId);
45
+ return byDbId.storyId;
46
+ }
47
+ playableWorkIdCache.set(normalized, normalized);
48
+ return normalized;
49
+ }
50
+ export async function resolveWorkDbId(input) {
51
+ const normalized = normalizeWorkId(input);
52
+ const cached = dbWorkIdCache.get(normalized);
53
+ if (cached)
54
+ return cached;
55
+ const works = await fetchListedWorks();
56
+ if (works.length === 0) {
57
+ dbWorkIdCache.set(normalized, normalized);
58
+ return normalized;
59
+ }
60
+ const byDbId = works.find((w) => normalizeWorkId(w.id ?? "") === normalized);
61
+ if (byDbId?.id) {
62
+ dbWorkIdCache.set(normalized, byDbId.id);
63
+ return byDbId.id;
64
+ }
65
+ const byStoryId = works.find((w) => normalizeWorkId(w.storyId ?? "") === normalized);
66
+ if (byStoryId?.id) {
67
+ dbWorkIdCache.set(normalized, byStoryId.id);
68
+ return byStoryId.id;
69
+ }
70
+ dbWorkIdCache.set(normalized, normalized);
71
+ return normalized;
72
+ }
73
+ export function addPlayableWorkHint(data) {
74
+ const works = Array.isArray(data.works)
75
+ ? (data.works).map((work) => ({
76
+ ...work,
77
+ playableWorkId: typeof work.storyId === "string" && work.storyId.length > 0
78
+ ? work.storyId
79
+ : work.id,
80
+ }))
81
+ : [];
82
+ return {
83
+ works,
84
+ usageHint: "For cryptoloom_start_game and other gameplay tools, use playableWorkId (storyId), not the database id.",
85
+ };
86
+ }
87
+ //# sourceMappingURL=work-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-resolution.js","sourceRoot":"","sources":["../../src/lib/work-resolution.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@keeeeeeeks/cryptoloom-mcp-server",
3
- "version": "0.1.1",
4
- "description": "MCP server for Cryptoloom interactive fiction platform \u2014 enables AI agents to discover, play, and verify text-based games",
3
+ "version": "0.3.0",
4
+ "description": "MCP server for Cryptoloom interactive fiction platform enables AI agents to discover, play, and verify text-based games",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "https://github.com/Resoworks/cryptoloom.git",
24
+ "url": "git+https://github.com/Resoworks/cryptoloom.git",
25
25
  "directory": "mcp-server"
26
26
  },
27
27
  "license": "MIT",