@brxce/mcp-server 1.0.2 → 1.0.4

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 (134) hide show
  1. package/dist/http-server.d.ts +5 -0
  2. package/dist/http-server.d.ts.map +1 -0
  3. package/dist/http-server.js +154 -0
  4. package/dist/http-server.js.map +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +34 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/resources/workspace-members-resource.d.ts.map +1 -1
  9. package/dist/resources/workspace-members-resource.js +4 -2
  10. package/dist/resources/workspace-members-resource.js.map +1 -1
  11. package/dist/server.d.ts +24 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +212 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/services/api-client.d.ts +32 -1
  16. package/dist/services/api-client.d.ts.map +1 -1
  17. package/dist/services/api-client.js +140 -65
  18. package/dist/services/api-client.js.map +1 -1
  19. package/dist/tools/comment-tool.d.ts +4 -0
  20. package/dist/tools/comment-tool.d.ts.map +1 -0
  21. package/dist/tools/comment-tool.js +139 -0
  22. package/dist/tools/comment-tool.js.map +1 -0
  23. package/dist/tools/criteria-tool.d.ts +4 -0
  24. package/dist/tools/criteria-tool.d.ts.map +1 -0
  25. package/dist/tools/criteria-tool.js +194 -0
  26. package/dist/tools/criteria-tool.js.map +1 -0
  27. package/dist/tools/invitation-tool.d.ts +11 -0
  28. package/dist/tools/invitation-tool.d.ts.map +1 -0
  29. package/dist/tools/invitation-tool.js +245 -0
  30. package/dist/tools/invitation-tool.js.map +1 -0
  31. package/dist/tools/meeting-agenda-tool.d.ts.map +1 -1
  32. package/dist/tools/meeting-agenda-tool.js +15 -92
  33. package/dist/tools/meeting-agenda-tool.js.map +1 -1
  34. package/dist/tools/meeting-create-tool.d.ts.map +1 -1
  35. package/dist/tools/meeting-create-tool.js +3 -91
  36. package/dist/tools/meeting-create-tool.js.map +1 -1
  37. package/dist/tools/meeting-decisions-tool.d.ts.map +1 -1
  38. package/dist/tools/meeting-decisions-tool.js +14 -89
  39. package/dist/tools/meeting-decisions-tool.js.map +1 -1
  40. package/dist/tools/meeting-delete-tool.d.ts +7 -0
  41. package/dist/tools/meeting-delete-tool.d.ts.map +1 -0
  42. package/dist/tools/meeting-delete-tool.js +57 -0
  43. package/dist/tools/meeting-delete-tool.js.map +1 -0
  44. package/dist/tools/meeting-list-tool.d.ts.map +1 -1
  45. package/dist/tools/meeting-list-tool.js +7 -94
  46. package/dist/tools/meeting-list-tool.js.map +1 -1
  47. package/dist/tools/meeting-notes-tool.d.ts.map +1 -1
  48. package/dist/tools/meeting-notes-tool.js +14 -75
  49. package/dist/tools/meeting-notes-tool.js.map +1 -1
  50. package/dist/tools/meeting-update-tool.d.ts.map +1 -1
  51. package/dist/tools/meeting-update-tool.js +6 -134
  52. package/dist/tools/meeting-update-tool.js.map +1 -1
  53. package/dist/tools/notification-tool.d.ts +11 -0
  54. package/dist/tools/notification-tool.d.ts.map +1 -0
  55. package/dist/tools/notification-tool.js +143 -0
  56. package/dist/tools/notification-tool.js.map +1 -0
  57. package/dist/tools/tag-category-tool.d.ts.map +1 -1
  58. package/dist/tools/tag-category-tool.js +9 -63
  59. package/dist/tools/tag-category-tool.js.map +1 -1
  60. package/dist/tools/tag-search-tool.d.ts.map +1 -1
  61. package/dist/tools/tag-search-tool.js +11 -87
  62. package/dist/tools/tag-search-tool.js.map +1 -1
  63. package/dist/tools/tag-tool.d.ts.map +1 -1
  64. package/dist/tools/tag-tool.js +13 -101
  65. package/dist/tools/tag-tool.js.map +1 -1
  66. package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
  67. package/dist/tools/worknode-archive-tool.js +4 -44
  68. package/dist/tools/worknode-archive-tool.js.map +1 -1
  69. package/dist/tools/worknode-batch-tool.d.ts +4 -0
  70. package/dist/tools/worknode-batch-tool.d.ts.map +1 -0
  71. package/dist/tools/worknode-batch-tool.js +109 -0
  72. package/dist/tools/worknode-batch-tool.js.map +1 -0
  73. package/dist/tools/worknode-by-member-tool.d.ts +4 -0
  74. package/dist/tools/worknode-by-member-tool.d.ts.map +1 -0
  75. package/dist/tools/worknode-by-member-tool.js +168 -0
  76. package/dist/tools/worknode-by-member-tool.js.map +1 -0
  77. package/dist/tools/worknode-complete-tool.d.ts +4 -0
  78. package/dist/tools/worknode-complete-tool.d.ts.map +1 -0
  79. package/dist/tools/worknode-complete-tool.js +83 -0
  80. package/dist/tools/worknode-complete-tool.js.map +1 -0
  81. package/dist/tools/worknode-create-tool.d.ts.map +1 -1
  82. package/dist/tools/worknode-create-tool.js +22 -113
  83. package/dist/tools/worknode-create-tool.js.map +1 -1
  84. package/dist/tools/worknode-delete-tool.d.ts +4 -0
  85. package/dist/tools/worknode-delete-tool.d.ts.map +1 -0
  86. package/dist/tools/worknode-delete-tool.js +51 -0
  87. package/dist/tools/worknode-delete-tool.js.map +1 -0
  88. package/dist/tools/worknode-history-tool.d.ts +4 -0
  89. package/dist/tools/worknode-history-tool.d.ts.map +1 -0
  90. package/dist/tools/worknode-history-tool.js +101 -0
  91. package/dist/tools/worknode-history-tool.js.map +1 -0
  92. package/dist/tools/worknode-move-tool.d.ts +4 -0
  93. package/dist/tools/worknode-move-tool.d.ts.map +1 -0
  94. package/dist/tools/worknode-move-tool.js +78 -0
  95. package/dist/tools/worknode-move-tool.js.map +1 -0
  96. package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -1
  97. package/dist/tools/worknode-plan-organize-tool.js +8 -117
  98. package/dist/tools/worknode-plan-organize-tool.js.map +1 -1
  99. package/dist/tools/worknode-read-tool.d.ts.map +1 -1
  100. package/dist/tools/worknode-read-tool.js +7 -110
  101. package/dist/tools/worknode-read-tool.js.map +1 -1
  102. package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
  103. package/dist/tools/worknode-subtree-tool.js +5 -65
  104. package/dist/tools/worknode-subtree-tool.js.map +1 -1
  105. package/dist/tools/worknode-tag-tool.d.ts.map +1 -1
  106. package/dist/tools/worknode-tag-tool.js +11 -99
  107. package/dist/tools/worknode-tag-tool.js.map +1 -1
  108. package/dist/tools/worknode-update-tool.d.ts.map +1 -1
  109. package/dist/tools/worknode-update-tool.js +22 -110
  110. package/dist/tools/worknode-update-tool.js.map +1 -1
  111. package/dist/tools/workspace-ascii-export-tool.d.ts +4 -0
  112. package/dist/tools/workspace-ascii-export-tool.d.ts.map +1 -0
  113. package/dist/tools/workspace-ascii-export-tool.js +96 -0
  114. package/dist/tools/workspace-ascii-export-tool.js.map +1 -0
  115. package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
  116. package/dist/tools/workspace-inbox-tool.js +4 -72
  117. package/dist/tools/workspace-inbox-tool.js.map +1 -1
  118. package/dist/tools/workspace-list-tool.d.ts.map +1 -1
  119. package/dist/tools/workspace-list-tool.js +3 -49
  120. package/dist/tools/workspace-list-tool.js.map +1 -1
  121. package/dist/tools/workspace-member-tool.d.ts +7 -0
  122. package/dist/tools/workspace-member-tool.d.ts.map +1 -0
  123. package/dist/tools/workspace-member-tool.js +172 -0
  124. package/dist/tools/workspace-member-tool.js.map +1 -0
  125. package/dist/tools/workspace-members-list-tool.d.ts.map +1 -1
  126. package/dist/tools/workspace-members-list-tool.js +5 -84
  127. package/dist/tools/workspace-members-list-tool.js.map +1 -1
  128. package/dist/tools/workspace-statistics-tool.d.ts.map +1 -1
  129. package/dist/tools/workspace-statistics-tool.js +3 -169
  130. package/dist/tools/workspace-statistics-tool.js.map +1 -1
  131. package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
  132. package/dist/tools/workspace-tree-tool.js +10 -178
  133. package/dist/tools/workspace-tree-tool.js.map +1 -1
  134. package/package.json +12 -11
@@ -1,114 +1,189 @@
1
1
  /**
2
- * Simple API client for BRXCE backend
2
+ * Enhanced API client for BRXCE backend with:
3
+ * - Token auto-refresh
4
+ * - Retry logic with exponential backoff
5
+ * - Request timeout
6
+ * - Error classification and handling
3
7
  */
8
+ import jwt from 'jsonwebtoken';
4
9
  export class ApiClient {
5
10
  baseUrl;
6
11
  authToken;
12
+ refreshToken;
13
+ timeout;
14
+ maxRetries;
7
15
  constructor(config) {
8
16
  this.baseUrl = config.baseUrl;
9
17
  this.authToken = config.authToken;
18
+ this.refreshToken = config.refreshToken;
19
+ this.timeout = config.timeout ?? 10000;
20
+ this.maxRetries = config.maxRetries ?? 3;
10
21
  }
11
- async get(path) {
12
- const url = `${this.baseUrl}${path}`;
13
- const headers = {};
14
- if (this.authToken) {
15
- headers['Authorization'] = `Bearer ${this.authToken}`;
22
+ /**
23
+ * A-1: Token auto-refresh
24
+ * Ensures token is valid, refreshes if expiring within 60 seconds
25
+ */
26
+ async ensureValidToken() {
27
+ if (!this.authToken || !this.refreshToken) {
28
+ return;
16
29
  }
17
30
  try {
18
- const response = await fetch(url, {
19
- method: 'GET',
20
- headers,
21
- });
22
- if (!response.ok) {
23
- const errorText = await response.text().catch(() => 'Unable to read error response');
24
- throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
31
+ const decoded = jwt.decode(this.authToken);
32
+ if (!decoded || !decoded.exp) {
33
+ return;
34
+ }
35
+ const now = Math.floor(Date.now() / 1000);
36
+ const timeUntilExpiry = decoded.exp - now;
37
+ // Refresh if expiring within 60 seconds
38
+ if (timeUntilExpiry < 60) {
39
+ const response = await fetch(`${this.baseUrl}/auth/refresh`, {
40
+ method: 'POST',
41
+ headers: { 'Content-Type': 'application/json' },
42
+ body: JSON.stringify({ refreshToken: this.refreshToken }),
43
+ });
44
+ if (response.ok) {
45
+ const data = (await response.json());
46
+ this.authToken = data.accessToken;
47
+ }
25
48
  }
26
- return response.json();
27
49
  }
28
50
  catch (error) {
29
- if (error instanceof Error && error.message.includes('API request failed')) {
30
- throw error;
31
- }
32
- throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
51
+ // Ignore token refresh errors, continue with existing token
33
52
  }
34
53
  }
35
- async post(path, data) {
36
- const url = `${this.baseUrl}${path}`;
37
- const headers = {
38
- 'Content-Type': 'application/json',
39
- };
40
- if (this.authToken) {
41
- headers['Authorization'] = `Bearer ${this.authToken}`;
54
+ /**
55
+ * A-2: Retry logic with exponential backoff
56
+ */
57
+ async withRetry(fn, retries = this.maxRetries) {
58
+ let lastError = null;
59
+ for (let attempt = 0; attempt <= retries; attempt++) {
60
+ try {
61
+ return await fn();
62
+ }
63
+ catch (error) {
64
+ lastError = error;
65
+ // Don't retry if error has skipRetry flag (4xx errors)
66
+ if (error.skipRetry) {
67
+ throw error;
68
+ }
69
+ // Don't retry on last attempt
70
+ if (attempt === retries) {
71
+ break;
72
+ }
73
+ // Exponential backoff: 100ms, 200ms, 400ms
74
+ const delay = 100 * Math.pow(2, attempt);
75
+ await new Promise((resolve) => setTimeout(resolve, delay));
76
+ }
42
77
  }
78
+ throw lastError;
79
+ }
80
+ /**
81
+ * A-3: Timeout handling using AbortController
82
+ */
83
+ async fetchWithTimeout(url, options, timeoutMs = this.timeout) {
84
+ const controller = new AbortController();
85
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
43
86
  try {
44
87
  const response = await fetch(url, {
45
- method: 'POST',
46
- headers,
47
- body: data ? JSON.stringify(data) : undefined,
88
+ ...options,
89
+ signal: controller.signal,
48
90
  });
49
- if (!response.ok) {
50
- const errorText = await response.text().catch(() => 'Unable to read error response');
51
- throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
52
- }
53
- return response.json();
91
+ clearTimeout(timeoutId);
92
+ return response;
54
93
  }
55
94
  catch (error) {
56
- if (error instanceof Error && error.message.includes('API request failed')) {
57
- throw error;
95
+ clearTimeout(timeoutId);
96
+ if (error.name === 'AbortError' ||
97
+ error.message.includes('AbortError')) {
98
+ throw new Error(`Request timeout after ${timeoutMs}ms`);
58
99
  }
59
- throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
100
+ throw error;
60
101
  }
61
102
  }
62
- async put(path, data) {
63
- const url = `${this.baseUrl}${path}`;
64
- const headers = {
65
- 'Content-Type': 'application/json',
66
- };
67
- if (this.authToken) {
68
- headers['Authorization'] = `Bearer ${this.authToken}`;
69
- }
70
- try {
71
- const response = await fetch(url, {
72
- method: 'PUT',
73
- headers,
74
- body: data ? JSON.stringify(data) : undefined,
103
+ /**
104
+ * A-4: Error classification and smart retry
105
+ */
106
+ async handleErrorResponse(response, url, retryFn) {
107
+ const status = response.status;
108
+ const errorText = await response.text().catch(() => 'Unable to read error response');
109
+ // 401: Try token refresh and retry once
110
+ if (status === 401 && this.refreshToken) {
111
+ const refreshResponse = await fetch(`${this.baseUrl}/auth/refresh`, {
112
+ method: 'POST',
113
+ headers: { 'Content-Type': 'application/json' },
114
+ body: JSON.stringify({ refreshToken: this.refreshToken }),
75
115
  });
76
- if (!response.ok) {
77
- const errorText = await response.text().catch(() => 'Unable to read error response');
78
- throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
116
+ if (refreshResponse.ok) {
117
+ const data = (await refreshResponse.json());
118
+ this.authToken = data.accessToken;
119
+ return retryFn();
79
120
  }
80
- return response.json();
81
121
  }
82
- catch (error) {
83
- if (error instanceof Error && error.message.includes('API request failed')) {
84
- throw error;
85
- }
86
- throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
122
+ // 429: Rate limit, wait and retry
123
+ if (status === 429) {
124
+ const retryAfter = response.headers.get('Retry-After');
125
+ const delay = retryAfter ? parseInt(retryAfter) * 1000 : 1000;
126
+ await new Promise((resolve) => setTimeout(resolve, delay));
127
+ return retryFn();
128
+ }
129
+ // 5xx: Server error, let retry logic handle it
130
+ if (status >= 500) {
131
+ throw new Error('Server error');
87
132
  }
133
+ // 4xx: Client error - throw immediately, don't retry
134
+ const err = new Error(`API request failed: ${status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
135
+ err.skipRetry = true;
136
+ throw err;
88
137
  }
89
- async delete(path) {
138
+ /**
139
+ * Core request method with all features
140
+ */
141
+ async request(method, path, data) {
142
+ await this.ensureValidToken();
90
143
  const url = `${this.baseUrl}${path}`;
91
144
  const headers = {};
92
145
  if (this.authToken) {
93
146
  headers['Authorization'] = `Bearer ${this.authToken}`;
94
147
  }
95
- try {
96
- const response = await fetch(url, {
97
- method: 'DELETE',
148
+ if (data !== undefined) {
149
+ headers['Content-Type'] = 'application/json';
150
+ }
151
+ const makeRequest = async () => {
152
+ const response = await this.fetchWithTimeout(url, {
153
+ method,
98
154
  headers,
155
+ body: data ? JSON.stringify(data) : undefined,
99
156
  });
100
157
  if (!response.ok) {
101
- const errorText = await response.text().catch(() => 'Unable to read error response');
102
- throw new Error(`API request failed: ${response.status} ${response.statusText}\nURL: ${url}\nResponse: ${errorText}`);
158
+ return this.handleErrorResponse(response, url, makeRequest);
103
159
  }
160
+ return response;
161
+ };
162
+ try {
163
+ const response = await this.withRetry(makeRequest, this.maxRetries);
104
164
  return response.json();
105
165
  }
106
166
  catch (error) {
107
- if (error instanceof Error && error.message.includes('API request failed')) {
167
+ // Pass through API errors, timeouts, and other structured errors
168
+ if (error instanceof Error &&
169
+ (error.message.includes('API request failed') || error.message.includes('timeout'))) {
108
170
  throw error;
109
171
  }
172
+ // Wrap only true network errors
110
173
  throw new Error(`Network error when calling ${url}: ${error instanceof Error ? error.message : String(error)}`);
111
174
  }
112
175
  }
176
+ async get(path) {
177
+ return this.request('GET', path);
178
+ }
179
+ async post(path, data) {
180
+ return this.request('POST', path, data);
181
+ }
182
+ async put(path, data) {
183
+ return this.request('PUT', path, data);
184
+ }
185
+ async delete(path) {
186
+ return this.request('DELETE', path);
187
+ }
113
188
  }
114
189
  //# sourceMappingURL=api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiClient } from '../services/api-client.js';
3
+ export declare function registerCommentTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=comment-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-tool.d.ts","sourceRoot":"","sources":["../../src/tools/comment-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAkM3E"}
@@ -0,0 +1,139 @@
1
+ import { z } from 'zod';
2
+ export function registerCommentTools(server, apiClient) {
3
+ // Create Comment
4
+ server.registerTool('brxce_create_comment', {
5
+ description: `Create comment on WorkNode.
6
+
7
+ Params: nodeId, content, parentCommentId?, mentions[]?`,
8
+ inputSchema: {
9
+ nodeId: z.string().uuid().describe('WorkNode UUID'),
10
+ content: z.string().min(1).describe('Comment content'),
11
+ parentCommentId: z.string().uuid().optional().describe('Parent comment UUID for replies'),
12
+ mentions: z.array(z.string()).optional().describe('User IDs to mention'),
13
+ },
14
+ }, async (args) => {
15
+ try {
16
+ const response = await apiClient.post('/mcp/comments/create', args);
17
+ if (!response.success) {
18
+ return {
19
+ content: [
20
+ { type: 'text', text: `Failed to create comment: ${response.message || 'Unknown error'}` },
21
+ ],
22
+ };
23
+ }
24
+ const { comment } = response.data;
25
+ let resultText = '## Comment Created\n\n';
26
+ resultText += `✅ **Comment ID**: ${comment.id}\n`;
27
+ resultText += `- **Content**: ${comment.content}\n`;
28
+ resultText += `- **Created At**: ${comment.createdAt}\n`;
29
+ return { content: [{ type: 'text', text: resultText }] };
30
+ }
31
+ catch (error) {
32
+ return {
33
+ content: [{ type: 'text', text: `Error creating comment: ${error.message || 'Unknown error'}` }],
34
+ };
35
+ }
36
+ });
37
+ // List Comments
38
+ server.registerTool('brxce_list_comments', {
39
+ description: `List WorkNode comments.
40
+
41
+ Params: nodeId`,
42
+ inputSchema: {
43
+ nodeId: z.string().uuid().describe('WorkNode UUID'),
44
+ },
45
+ }, async (args) => {
46
+ try {
47
+ const response = await apiClient.get(`/mcp/comments/list?nodeId=${args.nodeId}`);
48
+ if (!response.success) {
49
+ return {
50
+ content: [
51
+ { type: 'text', text: `Failed to list comments: ${response.message || 'Unknown error'}` },
52
+ ],
53
+ };
54
+ }
55
+ const { comments, count } = response.data;
56
+ let resultText = `## Comments (${count})\n\n`;
57
+ if (count === 0) {
58
+ resultText += 'No comments found.\n';
59
+ }
60
+ else {
61
+ comments.forEach((comment, i) => {
62
+ resultText += `${i + 1}. **${comment.authorId}** (${comment.createdAt})\n`;
63
+ resultText += ` ${comment.content}\n\n`;
64
+ });
65
+ }
66
+ return { content: [{ type: 'text', text: resultText }] };
67
+ }
68
+ catch (error) {
69
+ return {
70
+ content: [{ type: 'text', text: `Error listing comments: ${error.message || 'Unknown error'}` }],
71
+ };
72
+ }
73
+ });
74
+ // Update Comment
75
+ server.registerTool('brxce_update_comment', {
76
+ description: `Update comment (author only).
77
+
78
+ Params: commentId, content?, mentions[]?`,
79
+ inputSchema: {
80
+ commentId: z.string().uuid().describe('Comment UUID'),
81
+ content: z.string().optional().describe('Updated content'),
82
+ mentions: z.array(z.string()).optional().describe('Updated mentions'),
83
+ },
84
+ }, async (args) => {
85
+ try {
86
+ const { commentId, ...body } = args;
87
+ const response = await apiClient.put(`/mcp/comments/${commentId}`, body);
88
+ if (!response.success) {
89
+ return {
90
+ content: [
91
+ { type: 'text', text: `Failed to update comment: ${response.message || 'Unknown error'}` },
92
+ ],
93
+ };
94
+ }
95
+ const { comment } = response.data;
96
+ let resultText = '## Comment Updated\n\n';
97
+ resultText += `✅ **Comment ID**: ${comment.id}\n`;
98
+ resultText += `- **New Content**: ${comment.content}\n`;
99
+ return { content: [{ type: 'text', text: resultText }] };
100
+ }
101
+ catch (error) {
102
+ return {
103
+ content: [{ type: 'text', text: `Error updating comment: ${error.message || 'Unknown error'}` }],
104
+ };
105
+ }
106
+ });
107
+ // Delete Comment
108
+ server.registerTool('brxce_delete_comment', {
109
+ description: `Delete comment (author only, soft delete).
110
+
111
+ Params: commentId`,
112
+ inputSchema: {
113
+ commentId: z.string().uuid().describe('Comment UUID'),
114
+ },
115
+ }, async (args) => {
116
+ try {
117
+ const { commentId } = args;
118
+ const response = await apiClient.delete(`/mcp/comments/${commentId}`);
119
+ if (!response.success) {
120
+ return {
121
+ content: [
122
+ { type: 'text', text: `Failed to delete comment: ${response.message || 'Unknown error'}` },
123
+ ],
124
+ };
125
+ }
126
+ const { deletedAt } = response.data;
127
+ let resultText = '## Comment Deleted\n\n';
128
+ resultText += `✅ **Comment ID**: ${commentId}\n`;
129
+ resultText += `- **Deleted At**: ${deletedAt}\n`;
130
+ return { content: [{ type: 'text', text: resultText }] };
131
+ }
132
+ catch (error) {
133
+ return {
134
+ content: [{ type: 'text', text: `Error deleting comment: ${error.message || 'Unknown error'}` }],
135
+ };
136
+ }
137
+ });
138
+ }
139
+ //# sourceMappingURL=comment-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-tool.js","sourceRoot":"","sources":["../../src/tools/comment-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiClient } from '../services/api-client.js';
3
+ export declare function registerCriteriaTools(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=criteria-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria-tool.d.ts","sourceRoot":"","sources":["../../src/tools/criteria-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA0Q5E"}