@feeble/blay-mcp-server 0.1.0 → 0.2.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.
Files changed (66) hide show
  1. package/dist/backend.d.ts +78 -0
  2. package/dist/backend.js +19 -0
  3. package/dist/backend.js.map +1 -0
  4. package/dist/http-backend.d.ts +11 -0
  5. package/dist/http-backend.js +235 -0
  6. package/dist/http-backend.js.map +1 -0
  7. package/dist/index.d.ts +3 -1
  8. package/dist/index.js +22 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/register-tools.d.ts +7 -0
  11. package/dist/register-tools.js +41 -0
  12. package/dist/register-tools.js.map +1 -0
  13. package/dist/tools/action-items.d.ts +3 -2
  14. package/dist/tools/action-items.js +136 -41
  15. package/dist/tools/action-items.js.map +1 -1
  16. package/dist/tools/areas.d.ts +2 -1
  17. package/dist/tools/areas.js +51 -35
  18. package/dist/tools/areas.js.map +1 -1
  19. package/dist/tools/briefing.d.ts +3 -2
  20. package/dist/tools/briefing.js +40 -60
  21. package/dist/tools/briefing.js.map +1 -1
  22. package/dist/tools/collaborators.d.ts +2 -1
  23. package/dist/tools/collaborators.js +44 -32
  24. package/dist/tools/collaborators.js.map +1 -1
  25. package/dist/tools/comments.d.ts +2 -1
  26. package/dist/tools/comments.js +63 -50
  27. package/dist/tools/comments.js.map +1 -1
  28. package/dist/tools/context.d.ts +2 -1
  29. package/dist/tools/context.js +14 -10
  30. package/dist/tools/context.js.map +1 -1
  31. package/dist/tools/notifications.d.ts +2 -1
  32. package/dist/tools/notifications.js +33 -25
  33. package/dist/tools/notifications.js.map +1 -1
  34. package/dist/tools/org.d.ts +2 -1
  35. package/dist/tools/org.js +17 -14
  36. package/dist/tools/org.js.map +1 -1
  37. package/dist/tools/portal.d.ts +2 -1
  38. package/dist/tools/portal.js +70 -49
  39. package/dist/tools/portal.js.map +1 -1
  40. package/dist/tools/projects.d.ts +2 -1
  41. package/dist/tools/projects.js +61 -48
  42. package/dist/tools/projects.js.map +1 -1
  43. package/dist/tools/recurrence.d.ts +2 -1
  44. package/dist/tools/recurrence.js +42 -28
  45. package/dist/tools/recurrence.js.map +1 -1
  46. package/dist/tools/reminders.d.ts +2 -1
  47. package/dist/tools/reminders.js +57 -43
  48. package/dist/tools/reminders.js.map +1 -1
  49. package/dist/tools/resources.d.ts +2 -1
  50. package/dist/tools/resources.js +129 -97
  51. package/dist/tools/resources.js.map +1 -1
  52. package/dist/tools/search.d.ts +2 -1
  53. package/dist/tools/search.js +33 -29
  54. package/dist/tools/search.js.map +1 -1
  55. package/dist/tools/subscriptions.d.ts +2 -1
  56. package/dist/tools/subscriptions.js +42 -39
  57. package/dist/tools/subscriptions.js.map +1 -1
  58. package/dist/tools/tasks.d.ts +2 -1
  59. package/dist/tools/tasks.js +108 -90
  60. package/dist/tools/tasks.js.map +1 -1
  61. package/dist/tools/users.d.ts +2 -1
  62. package/dist/tools/users.js +20 -16
  63. package/dist/tools/users.js.map +1 -1
  64. package/dist/utils/formatting.js +1 -11
  65. package/dist/utils/formatting.js.map +1 -1
  66. package/package.json +23 -1
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Backend Adapter Interface
3
+ *
4
+ * Abstracts the data layer so MCP tools can work with either:
5
+ * - HttpBackend: calls the Blay REST API over HTTP (stdio / local mode)
6
+ * - ConvexBackend: calls Convex directly (remote MCP server mode)
7
+ *
8
+ * Each method returns normalized shapes matching what tools expect.
9
+ * Errors are thrown as BackendError instances.
10
+ */
11
+ export declare class BackendError extends Error {
12
+ status?: number | undefined;
13
+ constructor(message: string, status?: number | undefined);
14
+ }
15
+ export interface BackendAdapter {
16
+ getMe(): Promise<any>;
17
+ getOrg(): Promise<any>;
18
+ listUsers(): Promise<any>;
19
+ listProjects(params: Record<string, any>): Promise<any>;
20
+ getProject(projectId: string): Promise<any>;
21
+ createProject(params: Record<string, any>): Promise<any>;
22
+ updateProject(projectId: string, body: Record<string, any>): Promise<any>;
23
+ listTasks(params: Record<string, any>): Promise<any>;
24
+ getTask(taskId: string, opts?: Record<string, any>): Promise<any>;
25
+ createTask(params: Record<string, any>): Promise<any>;
26
+ updateTask(taskId: string, body: Record<string, any>): Promise<any>;
27
+ linkTask(taskId: string, body: Record<string, any>): Promise<any>;
28
+ unlinkTask(taskId: string, linkId: string): Promise<any>;
29
+ listComments(params: Record<string, any>): Promise<any>;
30
+ createComment(body: Record<string, any>): Promise<any>;
31
+ editComment(commentId: string, body: Record<string, any>): Promise<any>;
32
+ toggleCommentReaction(commentId: string, body: Record<string, any>): Promise<any>;
33
+ listActionItems(params: Record<string, any>): Promise<any>;
34
+ createActionItem(body: Record<string, any>): Promise<any>;
35
+ updateActionItem(actionItemId: string, body: Record<string, any>): Promise<any>;
36
+ getActionItemLinks(actionItemId: string): Promise<any>;
37
+ deleteActionItemLink(actionItemId: string, linkId: string): Promise<any>;
38
+ linkActionItem(actionItemId: string, body: Record<string, any>): Promise<any>;
39
+ search(params: Record<string, any>): Promise<any>;
40
+ getEntityContext(entityType: string, entityId: string, opts?: Record<string, any>): Promise<any>;
41
+ listNotifications(params: Record<string, any>): Promise<any>;
42
+ markNotificationRead(notificationId: string): Promise<any>;
43
+ listResources(params: Record<string, any>): Promise<any>;
44
+ getResource(resourceId: string, opts?: Record<string, any>): Promise<any>;
45
+ createResource(body: Record<string, any>): Promise<any>;
46
+ updateResource(resourceId: string, body: Record<string, any>): Promise<any>;
47
+ deleteResource(resourceId: string): Promise<any>;
48
+ getResourceContent(resourceId: string): Promise<any>;
49
+ getUploadUrl(body: Record<string, any>): Promise<any>;
50
+ completeUpload(body: Record<string, any>): Promise<any>;
51
+ updateResourceContent(resourceId: string, body: Record<string, any>): Promise<any>;
52
+ subscribe(body: Record<string, any>): Promise<any>;
53
+ unsubscribe(body: Record<string, any>): Promise<any>;
54
+ muteEntity(body: Record<string, any>): Promise<any>;
55
+ unmuteEntity(body: Record<string, any>): Promise<any>;
56
+ listCollaborators(projectId: string): Promise<any>;
57
+ addCollaborator(projectId: string, body: Record<string, any>): Promise<any>;
58
+ updateCollaboratorRole(projectId: string, targetUserId: string, body: Record<string, any>): Promise<any>;
59
+ listAreas(params: Record<string, any>): Promise<any>;
60
+ createArea(body: Record<string, any>): Promise<any>;
61
+ updateArea(areaId: string, body: Record<string, any>): Promise<any>;
62
+ archiveArea(areaId: string): Promise<any>;
63
+ listReminders(params: Record<string, any>): Promise<any>;
64
+ createReminder(body: Record<string, any>): Promise<any>;
65
+ updateReminder(reminderId: string, body: Record<string, any>): Promise<any>;
66
+ cancelReminder(reminderId: string): Promise<any>;
67
+ completeReminder(reminderId: string): Promise<any>;
68
+ getRecurrence(params: Record<string, any>): Promise<any>;
69
+ setRecurrence(body: Record<string, any>): Promise<any>;
70
+ updateRecurrence(configId: string, body: Record<string, any>): Promise<any>;
71
+ skipRecurrence(body: Record<string, any>): Promise<any>;
72
+ listPortalContacts(params: Record<string, any>): Promise<any>;
73
+ createPortalContact(body: Record<string, any>): Promise<any>;
74
+ grantProjectAccess(body: Record<string, any>): Promise<any>;
75
+ revokeProjectAccess(grantId: string): Promise<any>;
76
+ shareResource(body: Record<string, any>): Promise<any>;
77
+ unshareResource(shareId: string): Promise<any>;
78
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Backend Adapter Interface
3
+ *
4
+ * Abstracts the data layer so MCP tools can work with either:
5
+ * - HttpBackend: calls the Blay REST API over HTTP (stdio / local mode)
6
+ * - ConvexBackend: calls Convex directly (remote MCP server mode)
7
+ *
8
+ * Each method returns normalized shapes matching what tools expect.
9
+ * Errors are thrown as BackendError instances.
10
+ */
11
+ export class BackendError extends Error {
12
+ status;
13
+ constructor(message, status) {
14
+ super(message);
15
+ this.status = status;
16
+ this.name = "BackendError";
17
+ }
18
+ }
19
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAG5B;IAFT,YACE,OAAe,EACR,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * HTTP Backend Adapter
3
+ *
4
+ * Implements BackendAdapter by calling the Blay REST API via the existing
5
+ * HTTP client (client.ts). Used by the stdio MCP server (local mode).
6
+ */
7
+ import type { BackendAdapter } from "./backend.js";
8
+ export declare function createHttpBackend(options: {
9
+ apiKey: string;
10
+ baseUrl?: string;
11
+ }): BackendAdapter;
@@ -0,0 +1,235 @@
1
+ /**
2
+ * HTTP Backend Adapter
3
+ *
4
+ * Implements BackendAdapter by calling the Blay REST API via the existing
5
+ * HTTP client (client.ts). Used by the stdio MCP server (local mode).
6
+ */
7
+ import { BackendError } from "./backend.js";
8
+ import { initClient, apiGet, apiPost, apiPatch, apiDelete, apiPut, formatError, } from "./client.js";
9
+ function stringifyParams(params) {
10
+ const out = {};
11
+ for (const [key, value] of Object.entries(params)) {
12
+ if (value === undefined)
13
+ continue;
14
+ if (typeof value === "boolean") {
15
+ out[key] = value ? "true" : undefined;
16
+ }
17
+ else {
18
+ out[key] = String(value);
19
+ }
20
+ }
21
+ return out;
22
+ }
23
+ function check(res) {
24
+ if (!res.ok)
25
+ throw new BackendError(formatError(res), res.status);
26
+ return res.data;
27
+ }
28
+ export function createHttpBackend(options) {
29
+ initClient(options);
30
+ return {
31
+ // ── Identity & Org ──────────────────────────────────────────────
32
+ async getMe() {
33
+ return check(await apiGet("/api/v1/me"));
34
+ },
35
+ async getOrg() {
36
+ return check(await apiGet("/api/v1/org"));
37
+ },
38
+ // ── Users ───────────────────────────────────────────────────────
39
+ async listUsers() {
40
+ return check(await apiGet("/api/v1/users"));
41
+ },
42
+ // ── Projects ────────────────────────────────────────────────────
43
+ async listProjects(params) {
44
+ return check(await apiGet("/api/v1/projects", stringifyParams(params)));
45
+ },
46
+ async getProject(projectId) {
47
+ return check(await apiGet(`/api/v1/projects/${projectId}`));
48
+ },
49
+ async createProject(params) {
50
+ return check(await apiPost("/api/v1/projects", params));
51
+ },
52
+ async updateProject(projectId, body) {
53
+ return check(await apiPatch(`/api/v1/projects/${projectId}`, body));
54
+ },
55
+ // ── Tasks ───────────────────────────────────────────────────────
56
+ async listTasks(params) {
57
+ return check(await apiGet("/api/v1/tasks", stringifyParams(params)));
58
+ },
59
+ async getTask(taskId, opts) {
60
+ return check(await apiGet(`/api/v1/tasks/${taskId}`, opts ? stringifyParams(opts) : undefined));
61
+ },
62
+ async createTask(params) {
63
+ return check(await apiPost("/api/v1/tasks", params));
64
+ },
65
+ async updateTask(taskId, body) {
66
+ return check(await apiPatch(`/api/v1/tasks/${taskId}`, body));
67
+ },
68
+ async linkTask(taskId, body) {
69
+ return check(await apiPost(`/api/v1/tasks/${taskId}/links`, body));
70
+ },
71
+ async unlinkTask(taskId, linkId) {
72
+ return check(await apiDelete(`/api/v1/tasks/${taskId}/links/${linkId}`));
73
+ },
74
+ // ── Comments ────────────────────────────────────────────────────
75
+ async listComments(params) {
76
+ return check(await apiGet("/api/v1/comments", stringifyParams(params)));
77
+ },
78
+ async createComment(body) {
79
+ return check(await apiPost("/api/v1/comments", body));
80
+ },
81
+ async editComment(commentId, body) {
82
+ return check(await apiPatch(`/api/v1/comments/${commentId}`, body));
83
+ },
84
+ async toggleCommentReaction(commentId, body) {
85
+ return check(await apiPost(`/api/v1/comments/${commentId}/reactions`, body));
86
+ },
87
+ // ── Action Items ────────────────────────────────────────────────
88
+ async listActionItems(params) {
89
+ return check(await apiGet("/api/v1/action-items", stringifyParams(params)));
90
+ },
91
+ async createActionItem(body) {
92
+ return check(await apiPost("/api/v1/action-items", body));
93
+ },
94
+ async updateActionItem(actionItemId, body) {
95
+ return check(await apiPatch(`/api/v1/action-items/${actionItemId}`, body));
96
+ },
97
+ async getActionItemLinks(actionItemId) {
98
+ return check(await apiGet(`/api/v1/action-items/${actionItemId}/links`));
99
+ },
100
+ async deleteActionItemLink(actionItemId, linkId) {
101
+ return check(await apiDelete(`/api/v1/action-items/${actionItemId}/links/${linkId}`));
102
+ },
103
+ async linkActionItem(actionItemId, body) {
104
+ return check(await apiPost(`/api/v1/action-items/${actionItemId}/links`, body));
105
+ },
106
+ // ── Search ──────────────────────────────────────────────────────
107
+ async search(params) {
108
+ return check(await apiGet("/api/v1/search", stringifyParams(params)));
109
+ },
110
+ // ── Context ─────────────────────────────────────────────────────
111
+ async getEntityContext(entityType, entityId, opts) {
112
+ return check(await apiGet(`/api/v1/context/${entityType}/${entityId}`, opts ? stringifyParams(opts) : undefined));
113
+ },
114
+ // ── Notifications ───────────────────────────────────────────────
115
+ async listNotifications(params) {
116
+ return check(await apiGet("/api/v1/notifications", stringifyParams(params)));
117
+ },
118
+ async markNotificationRead(notificationId) {
119
+ return check(await apiPost(`/api/v1/notifications/${notificationId}/read`));
120
+ },
121
+ // ── Resources ───────────────────────────────────────────────────
122
+ async listResources(params) {
123
+ return check(await apiGet("/api/v1/resources", stringifyParams(params)));
124
+ },
125
+ async getResource(resourceId, opts) {
126
+ return check(await apiGet(`/api/v1/resources/${resourceId}`, opts ? stringifyParams(opts) : undefined));
127
+ },
128
+ async createResource(body) {
129
+ return check(await apiPost("/api/v1/resources", body));
130
+ },
131
+ async updateResource(resourceId, body) {
132
+ return check(await apiPatch(`/api/v1/resources/${resourceId}`, body));
133
+ },
134
+ async deleteResource(resourceId) {
135
+ return check(await apiDelete(`/api/v1/resources/${resourceId}`));
136
+ },
137
+ async getResourceContent(resourceId) {
138
+ return check(await apiGet(`/api/v1/resources/${resourceId}/content`));
139
+ },
140
+ async getUploadUrl(body) {
141
+ return check(await apiPost("/api/v1/resources/upload-url", body));
142
+ },
143
+ async completeUpload(body) {
144
+ return check(await apiPost("/api/v1/resources/upload-complete", body));
145
+ },
146
+ async updateResourceContent(resourceId, body) {
147
+ return check(await apiPut(`/api/v1/resources/${resourceId}/content`, body));
148
+ },
149
+ // ── Subscriptions ───────────────────────────────────────────────
150
+ async subscribe(body) {
151
+ return check(await apiPost("/api/v1/subscriptions", body));
152
+ },
153
+ async unsubscribe(body) {
154
+ return check(await apiDelete("/api/v1/subscriptions", body));
155
+ },
156
+ async muteEntity(body) {
157
+ return check(await apiPost("/api/v1/subscriptions/mute", body));
158
+ },
159
+ async unmuteEntity(body) {
160
+ return check(await apiPost("/api/v1/subscriptions/unmute", body));
161
+ },
162
+ // ── Collaborators ───────────────────────────────────────────────
163
+ async listCollaborators(projectId) {
164
+ return check(await apiGet(`/api/v1/projects/${projectId}/collaborators`));
165
+ },
166
+ async addCollaborator(projectId, body) {
167
+ return check(await apiPost(`/api/v1/projects/${projectId}/collaborators`, body));
168
+ },
169
+ async updateCollaboratorRole(projectId, targetUserId, body) {
170
+ return check(await apiPatch(`/api/v1/projects/${projectId}/collaborators/${targetUserId}`, body));
171
+ },
172
+ // ── Areas ───────────────────────────────────────────────────────
173
+ async listAreas(params) {
174
+ return check(await apiGet("/api/v1/areas", stringifyParams(params)));
175
+ },
176
+ async createArea(body) {
177
+ return check(await apiPost("/api/v1/areas", body));
178
+ },
179
+ async updateArea(areaId, body) {
180
+ return check(await apiPatch(`/api/v1/areas/${areaId}`, body));
181
+ },
182
+ async archiveArea(areaId) {
183
+ return check(await apiPost(`/api/v1/areas/${areaId}/archive`, {}));
184
+ },
185
+ // ── Reminders ───────────────────────────────────────────────────
186
+ async listReminders(params) {
187
+ return check(await apiGet("/api/v1/reminders", stringifyParams(params)));
188
+ },
189
+ async createReminder(body) {
190
+ return check(await apiPost("/api/v1/reminders", body));
191
+ },
192
+ async updateReminder(reminderId, body) {
193
+ return check(await apiPatch(`/api/v1/reminders/${reminderId}`, body));
194
+ },
195
+ async cancelReminder(reminderId) {
196
+ return check(await apiPost(`/api/v1/reminders/${reminderId}/cancel`, {}));
197
+ },
198
+ async completeReminder(reminderId) {
199
+ return check(await apiPost(`/api/v1/reminders/${reminderId}/complete`, {}));
200
+ },
201
+ // ── Recurrence ──────────────────────────────────────────────────
202
+ async getRecurrence(params) {
203
+ return check(await apiGet("/api/v1/recurrence", stringifyParams(params)));
204
+ },
205
+ async setRecurrence(body) {
206
+ return check(await apiPost("/api/v1/recurrence", body));
207
+ },
208
+ async updateRecurrence(configId, body) {
209
+ return check(await apiPatch(`/api/v1/recurrence/${configId}`, body));
210
+ },
211
+ async skipRecurrence(body) {
212
+ return check(await apiPost("/api/v1/recurrence/skip", body));
213
+ },
214
+ // ── Portal ──────────────────────────────────────────────────────
215
+ async listPortalContacts(params) {
216
+ return check(await apiGet("/api/v1/portal/contacts", stringifyParams(params)));
217
+ },
218
+ async createPortalContact(body) {
219
+ return check(await apiPost("/api/v1/portal/contacts", body));
220
+ },
221
+ async grantProjectAccess(body) {
222
+ return check(await apiPost("/api/v1/portal/access-grants", body));
223
+ },
224
+ async revokeProjectAccess(grantId) {
225
+ return check(await apiDelete(`/api/v1/portal/access-grants/${grantId}`));
226
+ },
227
+ async shareResource(body) {
228
+ return check(await apiPost("/api/v1/portal/shared-resources", body));
229
+ },
230
+ async unshareResource(shareId) {
231
+ return check(await apiDelete(`/api/v1/portal/shared-resources/${shareId}`));
232
+ },
233
+ };
234
+ }
235
+ //# sourceMappingURL=http-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-backend.js","sourceRoot":"","sources":["../src/http-backend.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,6 @@
7
7
  *
8
8
  * Runs via stdio transport — launched as a subprocess by Claude Desktop.
9
9
  */
10
- export {};
10
+ export { registerAllTools } from "./register-tools.js";
11
+ export type { BackendAdapter } from "./backend.js";
12
+ export { BackendError } from "./backend.js";
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
11
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
- import { initClient } from "./client.js";
12
+ import { createHttpBackend } from "./http-backend.js";
13
13
  // Tool registrations
14
14
  import { registerBriefingTools } from "./tools/briefing.js";
15
15
  import { registerOrgTools } from "./tools/org.js";
@@ -28,14 +28,16 @@ import { registerAreaTools } from "./tools/areas.js";
28
28
  import { registerReminderTools } from "./tools/reminders.js";
29
29
  import { registerRecurrenceTools } from "./tools/recurrence.js";
30
30
  import { registerPortalTools } from "./tools/portal.js";
31
+ export { registerAllTools } from "./register-tools.js";
32
+ export { BackendError } from "./backend.js";
31
33
  async function main() {
32
34
  const apiKey = process.env.BLAY_API_KEY;
33
35
  if (!apiKey) {
34
36
  console.error("BLAY_API_KEY environment variable is required");
35
37
  process.exit(1);
36
38
  }
37
- // Initialize the HTTP client
38
- initClient({
39
+ // Create HTTP backend adapter
40
+ const backend = createHttpBackend({
39
41
  apiKey,
40
42
  baseUrl: process.env.BLAY_API_URL,
41
43
  });
@@ -45,23 +47,23 @@ async function main() {
45
47
  version: "0.1.0",
46
48
  });
47
49
  // Register all tools
48
- registerBriefingTools(server);
49
- registerOrgTools(server);
50
- registerProjectTools(server);
51
- registerTaskTools(server);
52
- registerCommentTools(server);
53
- registerActionItemTools(server);
54
- registerSearchTools(server);
55
- registerUserTools(server);
56
- registerContextTools(server);
57
- registerNotificationTools(server);
58
- registerResourceTools(server);
59
- registerSubscriptionTools(server);
60
- registerCollaboratorTools(server);
61
- registerAreaTools(server);
62
- registerReminderTools(server);
63
- registerRecurrenceTools(server);
64
- registerPortalTools(server);
50
+ registerBriefingTools(server, backend);
51
+ registerOrgTools(server, backend);
52
+ registerProjectTools(server, backend);
53
+ registerTaskTools(server, backend);
54
+ registerCommentTools(server, backend);
55
+ registerActionItemTools(server, backend);
56
+ registerSearchTools(server, backend);
57
+ registerUserTools(server, backend);
58
+ registerContextTools(server, backend);
59
+ registerNotificationTools(server, backend);
60
+ registerResourceTools(server, backend);
61
+ registerSubscriptionTools(server, backend);
62
+ registerCollaboratorTools(server, backend);
63
+ registerAreaTools(server, backend);
64
+ registerReminderTools(server, backend);
65
+ registerRecurrenceTools(server, backend);
66
+ registerPortalTools(server, backend);
65
67
  // Connect via stdio
66
68
  const transport = new StdioServerTransport();
67
69
  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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Convenience function to register all MCP tools on a server.
3
+ * Used by both the stdio entry point and the remote MCP server.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { BackendAdapter } from "./backend.js";
7
+ export declare function registerAllTools(server: McpServer, backend: BackendAdapter): void;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Convenience function to register all MCP tools on a server.
3
+ * Used by both the stdio entry point and the remote MCP server.
4
+ */
5
+ import { registerBriefingTools } from "./tools/briefing.js";
6
+ import { registerOrgTools } from "./tools/org.js";
7
+ import { registerProjectTools } from "./tools/projects.js";
8
+ import { registerTaskTools } from "./tools/tasks.js";
9
+ import { registerCommentTools } from "./tools/comments.js";
10
+ import { registerActionItemTools } from "./tools/action-items.js";
11
+ import { registerSearchTools } from "./tools/search.js";
12
+ import { registerUserTools } from "./tools/users.js";
13
+ import { registerContextTools } from "./tools/context.js";
14
+ import { registerNotificationTools } from "./tools/notifications.js";
15
+ import { registerResourceTools } from "./tools/resources.js";
16
+ import { registerSubscriptionTools } from "./tools/subscriptions.js";
17
+ import { registerCollaboratorTools } from "./tools/collaborators.js";
18
+ import { registerAreaTools } from "./tools/areas.js";
19
+ import { registerReminderTools } from "./tools/reminders.js";
20
+ import { registerRecurrenceTools } from "./tools/recurrence.js";
21
+ import { registerPortalTools } from "./tools/portal.js";
22
+ export function registerAllTools(server, backend) {
23
+ registerBriefingTools(server, backend);
24
+ registerOrgTools(server, backend);
25
+ registerProjectTools(server, backend);
26
+ registerTaskTools(server, backend);
27
+ registerCommentTools(server, backend);
28
+ registerActionItemTools(server, backend);
29
+ registerSearchTools(server, backend);
30
+ registerUserTools(server, backend);
31
+ registerContextTools(server, backend);
32
+ registerNotificationTools(server, backend);
33
+ registerResourceTools(server, backend);
34
+ registerSubscriptionTools(server, backend);
35
+ registerCollaboratorTools(server, backend);
36
+ registerAreaTools(server, backend);
37
+ registerReminderTools(server, backend);
38
+ registerRecurrenceTools(server, backend);
39
+ registerPortalTools(server, backend);
40
+ }
41
+ //# sourceMappingURL=register-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-tools.js","sourceRoot":"","sources":["../src/register-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAuB;IACzE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Action Item Tools — list_action_items, create_action_item, update_action_item
2
+ * Action Item Tools — list_action_items, create_action_item, update_action_item, link_action_item, unlink_action_item
3
3
  */
4
4
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- export declare function registerActionItemTools(server: McpServer): void;
5
+ import type { BackendAdapter } from "../backend.js";
6
+ export declare function registerActionItemTools(server: McpServer, backend: BackendAdapter): void;