@becklabs/beck-mcp-server 1.0.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.
@@ -0,0 +1,92 @@
1
+ export const SKILL_URI = "beck://skill.md";
2
+ export const LLMS_URI = "beck://llms.txt";
3
+ export const RESOURCE_TEMPLATES = [
4
+ {
5
+ uriTemplate: "beck://workspace/{workspaceId}/document/{+path}",
6
+ name: "Workspace document",
7
+ mimeType: "text/markdown",
8
+ description: "Read a planning document. Discover workspaceId via list_workspaces and path via list_documents.",
9
+ },
10
+ ];
11
+ export function staticResources(origin) {
12
+ return [
13
+ {
14
+ uri: SKILL_URI,
15
+ name: "Beck skill",
16
+ mimeType: "text/markdown",
17
+ description: `Canonical agent skill. Prefer this over a local copy. Also at ${origin}/skill.md`,
18
+ },
19
+ {
20
+ uri: LLMS_URI,
21
+ name: "Beck llms.txt",
22
+ mimeType: "text/plain",
23
+ description: `Agent discovery file. Also at ${origin}/llms.txt`,
24
+ },
25
+ ];
26
+ }
27
+ export function documentResourceUri(workspaceId, path) {
28
+ return `beck://workspace/${encodeURIComponent(workspaceId)}/document/${path}`;
29
+ }
30
+ export function parseDocumentResourceUri(uri) {
31
+ const match = uri.match(/^beck:\/\/workspace\/([^/]+)\/document\/(.+)$/);
32
+ if (!match)
33
+ return null;
34
+ return {
35
+ workspaceId: decodeURIComponent(match[1]),
36
+ path: decodeURIComponent(match[2]),
37
+ };
38
+ }
39
+ export async function listResources(client, origin) {
40
+ const resources = staticResources(origin);
41
+ try {
42
+ const workspaces = await client.listWorkspaces();
43
+ for (const workspace of workspaces) {
44
+ const documents = await client.listDocuments(workspace._id);
45
+ for (const document of documents) {
46
+ resources.push({
47
+ uri: documentResourceUri(workspace._id, document.path),
48
+ name: `${workspace.name}: ${document.path}`,
49
+ mimeType: "text/markdown",
50
+ description: `${document.title} (etag ${document.etag})`,
51
+ });
52
+ }
53
+ }
54
+ }
55
+ catch {
56
+ // Tools still work if listing documents fails.
57
+ }
58
+ return resources;
59
+ }
60
+ export async function readResource(client, origin, uri) {
61
+ if (uri === SKILL_URI || uri === LLMS_URI) {
62
+ const path = uri === SKILL_URI ? "/skill.md" : "/llms.txt";
63
+ const response = await fetch(`${origin}${path}`);
64
+ if (!response.ok) {
65
+ throw new Error(`Failed to load ${path}: ${response.status}`);
66
+ }
67
+ return {
68
+ uri,
69
+ mimeType: uri === SKILL_URI ? "text/markdown" : "text/plain",
70
+ text: await response.text(),
71
+ };
72
+ }
73
+ const parsed = parseDocumentResourceUri(uri);
74
+ if (!parsed) {
75
+ throw new Error(`Unknown resource: ${uri}`);
76
+ }
77
+ const document = await client.getDocument(parsed.workspaceId, parsed.path);
78
+ const writer = document.updatedByToken?.name || document.updatedByUser?.name || "unknown";
79
+ return {
80
+ uri,
81
+ mimeType: "text/markdown",
82
+ text: [
83
+ `# ${document.title}`,
84
+ `Path: ${document.path}`,
85
+ `ETag: ${document.etag}`,
86
+ `Updated by: ${writer}`,
87
+ "",
88
+ document.body || "(empty)",
89
+ ].join("\n"),
90
+ };
91
+ }
92
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { BeckAPIClient } from "../client.js";
2
+ export declare function listDocuments(client: BeckAPIClient, workspaceId: string): Promise<string>;
3
+ export declare function readDocument(client: BeckAPIClient, workspaceId: string, path: string): Promise<string>;
4
+ export declare function createDocument(client: BeckAPIClient, workspaceId: string, input: {
5
+ path: string;
6
+ title?: string;
7
+ body?: string;
8
+ }): Promise<string>;
9
+ export declare function writeDocument(client: BeckAPIClient, workspaceId: string, path: string, input: {
10
+ title?: string;
11
+ body?: string;
12
+ path?: string;
13
+ etag: string;
14
+ }): Promise<string>;
15
+ export declare function listEpics(client: BeckAPIClient, workspaceId: string): Promise<string>;
16
+ export declare function getEpic(client: BeckAPIClient, epicId: string): Promise<string>;
17
+ export declare function deleteDocument(client: BeckAPIClient, workspaceId: string, path: string, etag: string): Promise<string>;
18
+ export declare function listDocumentVersions(client: BeckAPIClient, workspaceId: string, path: string): Promise<string>;
19
+ export declare function restoreDocument(client: BeckAPIClient, workspaceId: string, path: string, input: {
20
+ versionId: string;
21
+ etag: string;
22
+ }): Promise<string>;
23
+ export declare function planIt(client: BeckAPIClient, workspaceId: string, input: {
24
+ documentIds?: string[];
25
+ paths?: string[];
26
+ epicIds?: string[];
27
+ title?: string;
28
+ runBreakdown?: boolean;
29
+ }): Promise<string>;
30
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgBlD,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AA0ED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAuBD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,MAAM,CAC1B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;IACL,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
@@ -0,0 +1,184 @@
1
+ function formatDocument(doc) {
2
+ const writer = doc.updatedByToken?.name || doc.updatedByUser?.name || "unknown";
3
+ const lines = [
4
+ `# ${doc.title}`,
5
+ `Path: ${doc.path}`,
6
+ `ETag: ${doc.etag}`,
7
+ `Updated by: ${writer}`,
8
+ "",
9
+ doc.body || "(empty)",
10
+ ];
11
+ return lines.join("\n");
12
+ }
13
+ export async function listDocuments(client, workspaceId) {
14
+ const documents = await client.listDocuments(workspaceId);
15
+ if (documents.length === 0) {
16
+ return "No documents in this workspace. Use create_document to start a PRD.";
17
+ }
18
+ const lines = [`Found ${documents.length} document(s):`, ""];
19
+ for (const doc of documents) {
20
+ lines.push(`- ${doc.path} — ${doc.title} (${doc.etag})`);
21
+ }
22
+ return lines.join("\n");
23
+ }
24
+ export async function readDocument(client, workspaceId, path) {
25
+ const document = await client.getDocument(workspaceId, path);
26
+ return formatDocument(document);
27
+ }
28
+ export async function createDocument(client, workspaceId, input) {
29
+ const document = await client.createDocument(workspaceId, input);
30
+ return `Created document ${document.path}\n\n${formatDocument(document)}`;
31
+ }
32
+ export async function writeDocument(client, workspaceId, path, input) {
33
+ if (!input.etag) {
34
+ throw new Error("etag is required to write a document. Read the document first and pass its etag.");
35
+ }
36
+ const document = await client.writeDocument(workspaceId, path, input);
37
+ return `Saved document ${document.path}\nETag: ${document.etag}`;
38
+ }
39
+ export async function listEpics(client, workspaceId) {
40
+ const epics = await client.listEpics(workspaceId);
41
+ if (epics.length === 0) {
42
+ return "No epics in this workspace.";
43
+ }
44
+ const lines = [`Found ${epics.length} epic(s):`, ""];
45
+ for (const epic of epics) {
46
+ const bits = [`[${epic.status}]`];
47
+ if (epic.totalTasks !== undefined) {
48
+ bits.push(`${epic.completedTasks ?? 0}/${epic.totalTasks} tasks`);
49
+ }
50
+ if (epic.lastPlan) {
51
+ bits.push(`planned ${new Date(epic.lastPlan.plannedAt).toISOString()}`);
52
+ }
53
+ if (epic.githubBranch || epic.githubPrUrl) {
54
+ bits.push(epic.githubPrUrl || epic.githubBranch || "github");
55
+ }
56
+ lines.push(`- ${epic.title} (${epic._id}) · ${bits.join(" · ")}`);
57
+ }
58
+ return lines.join("\n");
59
+ }
60
+ function formatEpic(epic) {
61
+ const lines = [
62
+ `# ${epic.title}`,
63
+ `ID: ${epic._id}`,
64
+ `Status: ${epic.status}`,
65
+ ];
66
+ if (epic.totalTasks !== undefined) {
67
+ lines.push(`Tasks: ${epic.completedTasks ?? 0}/${epic.totalTasks}` +
68
+ (epic.totalPoints !== undefined
69
+ ? ` · ${epic.completedPoints ?? 0}/${epic.totalPoints} pts`
70
+ : ""));
71
+ }
72
+ if (epic.githubBranch) {
73
+ lines.push(`Branch: ${epic.githubBranch}`);
74
+ }
75
+ if (epic.githubPrUrl) {
76
+ lines.push(`PR: ${epic.githubPrUrl}`);
77
+ }
78
+ if (epic.description) {
79
+ lines.push("", epic.description);
80
+ }
81
+ if (epic.spec) {
82
+ lines.push("", "## Specification", epic.spec);
83
+ }
84
+ if (epic.lastPlan) {
85
+ lines.push("", "## Last plan");
86
+ lines.push(`Planned: ${new Date(epic.lastPlan.plannedAt).toISOString()}`);
87
+ if (epic.lastPlan.sourceDocuments?.length) {
88
+ for (const source of epic.lastPlan.sourceDocuments) {
89
+ lines.push(`- ${source.path} (${source.title}) etag ${source.etag}`);
90
+ }
91
+ }
92
+ else if (epic.lastPlan.documentIds?.length) {
93
+ lines.push(`Source document ids: ${epic.lastPlan.documentIds.join(", ")}`);
94
+ }
95
+ lines.push("The epic spec is independently editable. Do not overwrite it with live documents.");
96
+ }
97
+ const tasks = epic.tasks ?? [];
98
+ if (tasks.length > 0) {
99
+ lines.push("", "## Tasks");
100
+ for (const task of tasks) {
101
+ const assignee = task.assignee?.name || task.assignee?.email;
102
+ const blocked = task.isBlocked ? " · BLOCKED" : "";
103
+ const points = task.points ? ` (${task.points}pt)` : "";
104
+ lines.push(`- [${task.status}] [${task.type}] ${task.title}${points}${assignee ? ` · ${assignee}` : ""}${blocked}`);
105
+ lines.push(` ID: ${task._id}`);
106
+ }
107
+ }
108
+ const latestBreakdown = epic.aiBreakdowns?.[epic.aiBreakdowns.length - 1];
109
+ if (latestBreakdown?.tasks?.length) {
110
+ const pending = latestBreakdown.tasks.filter((task) => !task.imported);
111
+ lines.push("", "## Latest suggested tasks (not imported until a human reviews them)");
112
+ for (const task of latestBreakdown.tasks) {
113
+ const imported = task.imported ? "imported" : "pending";
114
+ lines.push(`- [${imported}] [${task.type}] ${task.title}${task.points ? ` (${task.points} pts)` : ""}`);
115
+ }
116
+ if (pending.length > 0) {
117
+ lines.push(`${pending.length} still waiting for a human to import.`);
118
+ }
119
+ }
120
+ return lines.join("\n");
121
+ }
122
+ export async function getEpic(client, epicId) {
123
+ const epic = await client.getEpic(epicId);
124
+ return formatEpic(epic);
125
+ }
126
+ export async function deleteDocument(client, workspaceId, path, etag) {
127
+ if (!etag) {
128
+ throw new Error("etag is required to delete a document. Read the document first and pass its etag.");
129
+ }
130
+ await client.deleteDocument(workspaceId, path, etag);
131
+ return `Deleted document ${path}`;
132
+ }
133
+ function formatVersions(path, versions) {
134
+ if (versions.length === 0) {
135
+ return `No versions stored for ${path}.`;
136
+ }
137
+ const lines = [`${versions.length} version(s) of ${path}:`, ""];
138
+ for (const version of versions) {
139
+ const actor = version.token?.name || version.actor?.name || version.actor?.email || "unknown";
140
+ const when = new Date(version.createdAt).toISOString();
141
+ lines.push(`- ${version._id} · ${when} · ${actor} · etag ${version.etag}`);
142
+ if (version.body) {
143
+ const preview = version.body.split("\n")[0]?.slice(0, 80);
144
+ if (preview) {
145
+ lines.push(` ${preview}${version.body.length > 80 ? "…" : ""}`);
146
+ }
147
+ }
148
+ }
149
+ lines.push("");
150
+ lines.push("Restore with restore_document (versionId + current etag).");
151
+ return lines.join("\n");
152
+ }
153
+ export async function listDocumentVersions(client, workspaceId, path) {
154
+ const result = await client.listDocumentVersions(workspaceId, path);
155
+ return formatVersions(result.path || path, result.versions);
156
+ }
157
+ export async function restoreDocument(client, workspaceId, path, input) {
158
+ if (!input.etag) {
159
+ throw new Error("etag is required to restore a document. Read the document first and pass its etag.");
160
+ }
161
+ const document = await client.restoreDocument(workspaceId, path, input);
162
+ return `Restored ${document.path} to version ${input.versionId}\nETag: ${document.etag}`;
163
+ }
164
+ export async function planIt(client, workspaceId, input) {
165
+ const result = (await client.planIt(workspaceId, input));
166
+ const lines = [result.userMessage || "Plan it completed.", ""];
167
+ for (const epic of result.epics ?? []) {
168
+ lines.push(`Epic: ${epic.title} (${epic._id})`);
169
+ }
170
+ for (const breakdown of result.breakdowns ?? []) {
171
+ if (breakdown.error) {
172
+ lines.push(`Breakdown error for ${breakdown.epicId}: ${breakdown.error}`);
173
+ continue;
174
+ }
175
+ lines.push(`Breakdown: ${breakdown.suggestions?.length ?? 0} suggested tasks`);
176
+ for (const task of breakdown.suggestions ?? []) {
177
+ lines.push(` - [${task.type}] ${task.title}${task.points ? ` (${task.points} pts)` : ""}`);
178
+ }
179
+ }
180
+ lines.push("");
181
+ lines.push("Review these tasks in Beck before they land in the backlog.");
182
+ return lines.join("\n");
183
+ }
184
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Tool, CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { BeckAPIClient } from "../client.js";
3
+ /**
4
+ * Define all MCP tools available to Claude Code
5
+ */
6
+ export declare const TOOLS: Tool[];
7
+ /**
8
+ * Handle a tool call and return the result
9
+ */
10
+ export declare function handleToolCall(client: BeckAPIClient, name: string, args: Record<string, any>): Promise<CallToolResult>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAe,MAAM,oCAAoC,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,IAAI,EAqjBvB,CAAC;AAEF;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EAEZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,cAAc,CAAC,CA8NzB"}