@elnora-ai/mcp-server 0.3.0 → 0.4.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 (101) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/auth/clients-store.d.ts +1 -0
  3. package/dist/auth/clients-store.d.ts.map +1 -1
  4. package/dist/auth/clients-store.js +13 -1
  5. package/dist/auth/clients-store.js.map +1 -1
  6. package/dist/auth/provider.d.ts +2 -19
  7. package/dist/auth/provider.d.ts.map +1 -1
  8. package/dist/auth/provider.js +61 -19
  9. package/dist/auth/provider.js.map +1 -1
  10. package/dist/constants.d.ts +2 -3
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +18 -3
  13. package/dist/constants.js.map +1 -1
  14. package/dist/index.js +155 -24
  15. package/dist/index.js.map +1 -1
  16. package/dist/middleware/cors.js +1 -1
  17. package/dist/middleware/cors.js.map +1 -1
  18. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  19. package/dist/middleware/rate-limiter.js +2 -1
  20. package/dist/middleware/rate-limiter.js.map +1 -1
  21. package/dist/middleware/tool-logging.d.ts +14 -0
  22. package/dist/middleware/tool-logging.d.ts.map +1 -1
  23. package/dist/middleware/tool-logging.js +49 -4
  24. package/dist/middleware/tool-logging.js.map +1 -1
  25. package/dist/server.d.ts +2 -2
  26. package/dist/server.d.ts.map +1 -1
  27. package/dist/server.js +29 -2
  28. package/dist/server.js.map +1 -1
  29. package/dist/services/elnora-api-client.d.ts +12 -18
  30. package/dist/services/elnora-api-client.d.ts.map +1 -1
  31. package/dist/services/elnora-api-client.js +34 -42
  32. package/dist/services/elnora-api-client.js.map +1 -1
  33. package/dist/services/error-handler.d.ts.map +1 -1
  34. package/dist/services/error-handler.js +5 -6
  35. package/dist/services/error-handler.js.map +1 -1
  36. package/dist/tools/account.d.ts +5 -0
  37. package/dist/tools/account.d.ts.map +1 -0
  38. package/dist/tools/account.js +70 -0
  39. package/dist/tools/account.js.map +1 -0
  40. package/dist/tools/api-keys.d.ts +5 -0
  41. package/dist/tools/api-keys.d.ts.map +1 -0
  42. package/dist/tools/api-keys.js +53 -0
  43. package/dist/tools/api-keys.js.map +1 -0
  44. package/dist/tools/audit.d.ts +5 -0
  45. package/dist/tools/audit.d.ts.map +1 -0
  46. package/dist/tools/audit.js +28 -0
  47. package/dist/tools/audit.js.map +1 -0
  48. package/dist/tools/feedback.d.ts +5 -0
  49. package/dist/tools/feedback.d.ts.map +1 -0
  50. package/dist/tools/feedback.js +23 -0
  51. package/dist/tools/feedback.js.map +1 -0
  52. package/dist/tools/files.d.ts.map +1 -1
  53. package/dist/tools/files.js +275 -17
  54. package/dist/tools/files.js.map +1 -1
  55. package/dist/tools/flags.d.ts +5 -0
  56. package/dist/tools/flags.d.ts.map +1 -0
  57. package/dist/tools/flags.js +36 -0
  58. package/dist/tools/flags.js.map +1 -0
  59. package/dist/tools/folders.d.ts +5 -0
  60. package/dist/tools/folders.d.ts.map +1 -0
  61. package/dist/tools/folders.js +90 -0
  62. package/dist/tools/folders.js.map +1 -0
  63. package/dist/tools/health.d.ts +5 -0
  64. package/dist/tools/health.d.ts.map +1 -0
  65. package/dist/tools/health.js +19 -0
  66. package/dist/tools/health.js.map +1 -0
  67. package/dist/tools/library.d.ts +5 -0
  68. package/dist/tools/library.d.ts.map +1 -0
  69. package/dist/tools/library.js +93 -0
  70. package/dist/tools/library.js.map +1 -0
  71. package/dist/tools/messages.d.ts.map +1 -1
  72. package/dist/tools/messages.js +3 -10
  73. package/dist/tools/messages.js.map +1 -1
  74. package/dist/tools/orgs.d.ts +5 -0
  75. package/dist/tools/orgs.d.ts.map +1 -0
  76. package/dist/tools/orgs.js +221 -0
  77. package/dist/tools/orgs.js.map +1 -0
  78. package/dist/tools/projects.d.ts +5 -0
  79. package/dist/tools/projects.d.ts.map +1 -0
  80. package/dist/tools/projects.js +177 -0
  81. package/dist/tools/projects.js.map +1 -0
  82. package/dist/tools/protocols.d.ts.map +1 -1
  83. package/dist/tools/protocols.js +9 -24
  84. package/dist/tools/protocols.js.map +1 -1
  85. package/dist/tools/scope-guard.d.ts +0 -8
  86. package/dist/tools/scope-guard.d.ts.map +1 -1
  87. package/dist/tools/scope-guard.js +85 -10
  88. package/dist/tools/scope-guard.js.map +1 -1
  89. package/dist/tools/search.d.ts +5 -0
  90. package/dist/tools/search.d.ts.map +1 -0
  91. package/dist/tools/search.js +60 -0
  92. package/dist/tools/search.js.map +1 -0
  93. package/dist/tools/tasks.d.ts.map +1 -1
  94. package/dist/tools/tasks.js +83 -29
  95. package/dist/tools/tasks.js.map +1 -1
  96. package/dist/tools/with-guard.d.ts.map +1 -1
  97. package/dist/tools/with-guard.js +21 -6
  98. package/dist/tools/with-guard.js.map +1 -1
  99. package/dist/types.d.ts +0 -43
  100. package/dist/types.d.ts.map +1 -1
  101. package/package.json +2 -1
@@ -5,19 +5,34 @@ import { CHARACTER_LIMIT } from "../constants.js";
5
5
  export function registerFileTools(server, getClient, getContext) {
6
6
  server.registerTool("elnora_list_files", {
7
7
  title: "List Files",
8
- description: "List files in your Elnora workspace. Returns file metadata including name, type, and visibility.",
8
+ description: "List files in a project or workspace.",
9
9
  inputSchema: {
10
10
  project_id: z.string().uuid().optional().describe("Filter by project UUID"),
11
- limit: z.number().int().min(1).max(100).default(20).describe("Max results"),
12
- offset: z.number().int().min(0).default(0).describe("Pagination offset"),
11
+ page: z.number().int().min(1).default(1).describe("Page number"),
12
+ page_size: z.number().int().min(1).max(100).default(25).describe("Results per page"),
13
13
  },
14
14
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
15
- }, withGuard("elnora_list_files", getContext, async ({ project_id, limit, offset }) => {
15
+ }, withGuard("elnora_list_files", getContext, async ({ project_id, page, page_size }) => {
16
16
  try {
17
- const result = await getClient().listFiles(project_id, limit, offset);
18
- return {
19
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
20
- };
17
+ const path = project_id ? `/projects/${project_id}/files` : "/files";
18
+ const result = await getClient().get(path, { page, pageSize: page_size });
19
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
20
+ }
21
+ catch (error) {
22
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
23
+ }
24
+ }));
25
+ server.registerTool("elnora_get_file", {
26
+ title: "Get File",
27
+ description: "Get file metadata by UUID.",
28
+ inputSchema: {
29
+ file_id: z.string().uuid().describe("File UUID"),
30
+ },
31
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
32
+ }, withGuard("elnora_get_file", getContext, async ({ file_id }) => {
33
+ try {
34
+ const result = await getClient().get(`/files/${file_id}`);
35
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
21
36
  }
22
37
  catch (error) {
23
38
  return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
@@ -25,7 +40,7 @@ export function registerFileTools(server, getClient, getContext) {
25
40
  }));
26
41
  server.registerTool("elnora_get_file_content", {
27
42
  title: "Get File Content",
28
- description: "Retrieve the content of a specific file by its ID. Returns the file content as text along with metadata.",
43
+ description: "Retrieve the content of a file by ID.",
29
44
  inputSchema: {
30
45
  file_id: z.string().uuid().describe("File UUID"),
31
46
  },
@@ -33,9 +48,42 @@ export function registerFileTools(server, getClient, getContext) {
33
48
  }, withGuard("elnora_get_file_content", getContext, async ({ file_id }) => {
34
49
  try {
35
50
  const result = await getClient().getFileContent(file_id);
36
- return {
37
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
38
- };
51
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
52
+ }
53
+ catch (error) {
54
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
55
+ }
56
+ }));
57
+ server.registerTool("elnora_get_file_versions", {
58
+ title: "Get File Versions",
59
+ description: "Get version history for a file.",
60
+ inputSchema: {
61
+ file_id: z.string().uuid().describe("File UUID"),
62
+ page: z.number().int().min(1).default(1).describe("Page number"),
63
+ page_size: z.number().int().min(1).max(100).default(25).describe("Results per page"),
64
+ },
65
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
66
+ }, withGuard("elnora_get_file_versions", getContext, async ({ file_id, page, page_size }) => {
67
+ try {
68
+ const result = await getClient().get(`/files/${file_id}/versions`, { page, pageSize: page_size });
69
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
70
+ }
71
+ catch (error) {
72
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
73
+ }
74
+ }));
75
+ server.registerTool("elnora_get_version_content", {
76
+ title: "Get Version Content",
77
+ description: "Get content of a specific file version.",
78
+ inputSchema: {
79
+ file_id: z.string().uuid().describe("File UUID"),
80
+ version_id: z.string().uuid().describe("Version UUID"),
81
+ },
82
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
83
+ }, withGuard("elnora_get_version_content", getContext, async ({ file_id, version_id }) => {
84
+ try {
85
+ const result = await getClient().get(`/files/${file_id}/versions/${version_id}/content`);
86
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
39
87
  }
40
88
  catch (error) {
41
89
  return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
@@ -43,19 +91,229 @@ export function registerFileTools(server, getClient, getContext) {
43
91
  }));
44
92
  server.registerTool("elnora_upload_file", {
45
93
  title: "Upload File",
46
- description: "Upload a text file to Elnora. Files are stored in the user's workspace and can be attached to task messages.",
94
+ description: "Upload a text file to Elnora.",
47
95
  inputSchema: {
48
96
  name: z.string().min(1).max(255).describe("Filename"),
49
- content: z.string().min(1).max(CHARACTER_LIMIT).describe("File content (max 25,000 chars)"),
97
+ content: z.string().min(1).max(CHARACTER_LIMIT).describe("File content"),
50
98
  file_type: z.string().optional().describe("MIME type (default: text/markdown)"),
51
99
  },
52
100
  annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
53
101
  }, withGuard("elnora_upload_file", getContext, async ({ name, content, file_type }) => {
54
102
  try {
55
103
  const result = await getClient().uploadFile(name, content, file_type);
56
- return {
57
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
58
- };
104
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
105
+ }
106
+ catch (error) {
107
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
108
+ }
109
+ }));
110
+ server.registerTool("elnora_create_file", {
111
+ title: "Create File",
112
+ description: "Create a new empty file in a project.",
113
+ inputSchema: {
114
+ project_id: z.string().uuid().describe("Project UUID"),
115
+ name: z.string().min(1).max(255).describe("Filename"),
116
+ folder_id: z.string().uuid().optional().describe("Folder UUID"),
117
+ file_type: z.string().optional().describe("File type"),
118
+ },
119
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
120
+ }, withGuard("elnora_create_file", getContext, async ({ project_id, name, folder_id, file_type }) => {
121
+ try {
122
+ const result = await getClient().post("/files", {
123
+ projectId: project_id, name, folderId: folder_id, fileType: file_type,
124
+ });
125
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
126
+ }
127
+ catch (error) {
128
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
129
+ }
130
+ }));
131
+ server.registerTool("elnora_update_file", {
132
+ title: "Update File",
133
+ description: "Update file metadata (rename or move).",
134
+ inputSchema: {
135
+ file_id: z.string().uuid().describe("File UUID"),
136
+ name: z.string().min(1).max(255).optional().describe("New name"),
137
+ folder_id: z.string().uuid().optional().describe("New folder UUID"),
138
+ },
139
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
140
+ }, withGuard("elnora_update_file", getContext, async ({ file_id, name, folder_id }) => {
141
+ try {
142
+ const result = await getClient().put(`/files/${file_id}`, { name, folderId: folder_id });
143
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
144
+ }
145
+ catch (error) {
146
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
147
+ }
148
+ }));
149
+ server.registerTool("elnora_archive_file", {
150
+ title: "Archive File",
151
+ description: "Archive (delete) a file.",
152
+ inputSchema: {
153
+ file_id: z.string().uuid().describe("File UUID"),
154
+ },
155
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
156
+ }, withGuard("elnora_archive_file", getContext, async ({ file_id }) => {
157
+ try {
158
+ await getClient().del(`/files/${file_id}`);
159
+ return { content: [{ type: "text", text: JSON.stringify({ archived: true, fileId: file_id }) }] };
160
+ }
161
+ catch (error) {
162
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
163
+ }
164
+ }));
165
+ server.registerTool("elnora_download_file", {
166
+ title: "Download File",
167
+ description: "Download a file (returns download URL or content).",
168
+ inputSchema: {
169
+ file_id: z.string().uuid().describe("File UUID"),
170
+ },
171
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
172
+ }, withGuard("elnora_download_file", getContext, async ({ file_id }) => {
173
+ try {
174
+ const result = await getClient().get(`/files/${file_id}/download`);
175
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
176
+ }
177
+ catch (error) {
178
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
179
+ }
180
+ }));
181
+ server.registerTool("elnora_create_version", {
182
+ title: "Create File Version",
183
+ description: "Create a new version of a file.",
184
+ inputSchema: {
185
+ file_id: z.string().uuid().describe("File UUID"),
186
+ content: z.string().max(CHARACTER_LIMIT).optional().describe("Version content"),
187
+ },
188
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
189
+ }, withGuard("elnora_create_version", getContext, async ({ file_id, content }) => {
190
+ try {
191
+ const result = await getClient().post(`/files/${file_id}/versions`, { content });
192
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
193
+ }
194
+ catch (error) {
195
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
196
+ }
197
+ }));
198
+ server.registerTool("elnora_restore_version", {
199
+ title: "Restore File Version",
200
+ description: "Restore a file to a specific version.",
201
+ inputSchema: {
202
+ file_id: z.string().uuid().describe("File UUID"),
203
+ version_id: z.string().uuid().describe("Version UUID to restore"),
204
+ },
205
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
206
+ }, withGuard("elnora_restore_version", getContext, async ({ file_id, version_id }) => {
207
+ try {
208
+ const result = await getClient().post(`/files/${file_id}/versions/${version_id}/restore`);
209
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
210
+ }
211
+ catch (error) {
212
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
213
+ }
214
+ }));
215
+ server.registerTool("elnora_promote_file", {
216
+ title: "Promote File",
217
+ description: "Promote file visibility (e.g., to organization library).",
218
+ inputSchema: {
219
+ file_id: z.string().uuid().describe("File UUID"),
220
+ visibility: z.string().describe("Target visibility level"),
221
+ },
222
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
223
+ }, withGuard("elnora_promote_file", getContext, async ({ file_id, visibility }) => {
224
+ try {
225
+ const result = await getClient().post(`/files/${file_id}/promote`, { visibility });
226
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
227
+ }
228
+ catch (error) {
229
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
230
+ }
231
+ }));
232
+ server.registerTool("elnora_fork_file", {
233
+ title: "Fork File",
234
+ description: "Fork a file to another project.",
235
+ inputSchema: {
236
+ file_id: z.string().uuid().describe("File UUID"),
237
+ target_project_id: z.string().uuid().describe("Target project UUID"),
238
+ },
239
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
240
+ }, withGuard("elnora_fork_file", getContext, async ({ file_id, target_project_id }) => {
241
+ try {
242
+ const result = await getClient().post(`/files/${file_id}/fork`, { targetProjectId: target_project_id });
243
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
244
+ }
245
+ catch (error) {
246
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
247
+ }
248
+ }));
249
+ server.registerTool("elnora_create_working_copy", {
250
+ title: "Create Working Copy",
251
+ description: "Create a working copy of a file for editing.",
252
+ inputSchema: {
253
+ file_id: z.string().uuid().describe("File UUID"),
254
+ task_id: z.string().uuid().optional().describe("Associated task UUID"),
255
+ },
256
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
257
+ }, withGuard("elnora_create_working_copy", getContext, async ({ file_id, task_id }) => {
258
+ try {
259
+ const params = {};
260
+ if (task_id)
261
+ params.taskId = task_id;
262
+ const result = await getClient().post(`/files/${file_id}/working-copy`, params);
263
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
264
+ }
265
+ catch (error) {
266
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
267
+ }
268
+ }));
269
+ server.registerTool("elnora_commit_working_copy", {
270
+ title: "Commit Working Copy",
271
+ description: "Commit a working copy back to the file.",
272
+ inputSchema: {
273
+ file_id: z.string().uuid().describe("File UUID"),
274
+ },
275
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
276
+ }, withGuard("elnora_commit_working_copy", getContext, async ({ file_id }) => {
277
+ try {
278
+ const result = await getClient().post(`/files/${file_id}/commit`);
279
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
280
+ }
281
+ catch (error) {
282
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
283
+ }
284
+ }));
285
+ server.registerTool("elnora_initiate_upload", {
286
+ title: "Initiate File Upload",
287
+ description: "Initiate a multi-step file upload. Returns a presigned URL for uploading the file content.",
288
+ inputSchema: {
289
+ project_id: z.string().uuid().describe("Project UUID"),
290
+ file_name: z.string().min(1).max(255).describe("Filename"),
291
+ content_type: z.string().default("application/octet-stream").describe("MIME content type"),
292
+ file_size_bytes: z.number().int().min(1).describe("File size in bytes"),
293
+ },
294
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
295
+ }, withGuard("elnora_initiate_upload", getContext, async ({ project_id, file_name, content_type, file_size_bytes }) => {
296
+ try {
297
+ const result = await getClient().post("/files/upload", {
298
+ projectId: project_id, fileName: file_name, contentType: content_type, fileSizeBytes: file_size_bytes,
299
+ });
300
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
301
+ }
302
+ catch (error) {
303
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
304
+ }
305
+ }));
306
+ server.registerTool("elnora_confirm_upload", {
307
+ title: "Confirm File Upload",
308
+ description: "Confirm that a file upload to the presigned URL has completed.",
309
+ inputSchema: {
310
+ file_id: z.string().uuid().describe("File UUID from initiate_upload"),
311
+ },
312
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
313
+ }, withGuard("elnora_confirm_upload", getContext, async ({ file_id }) => {
314
+ try {
315
+ const result = await getClient().post(`/files/${file_id}/upload/confirm`);
316
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
59
317
  }
60
318
  catch (error) {
61
319
  return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ElnoraApiClient } from "../services/elnora-api-client.js";
3
+ import { RequestContext } from "../server.js";
4
+ export declare function registerFlagTools(server: McpServer, getClient: () => ElnoraApiClient, getContext: () => RequestContext): void;
5
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/tools/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,eAAe,EAChC,UAAU,EAAE,MAAM,cAAc,GAC/B,IAAI,CAsCN"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import { handleApiError } from "../services/error-handler.js";
3
+ import { withGuard } from "./with-guard.js";
4
+ export function registerFlagTools(server, getClient, getContext) {
5
+ server.registerTool("elnora_list_flags", {
6
+ title: "List Feature Flags",
7
+ description: "List all global feature flags (public, no auth required).",
8
+ inputSchema: {},
9
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
10
+ }, withGuard("elnora_list_flags", getContext, async () => {
11
+ try {
12
+ const result = await getClient().get("/globalFeatureFlags");
13
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
14
+ }
15
+ catch (error) {
16
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
17
+ }
18
+ }));
19
+ server.registerTool("elnora_get_flag", {
20
+ title: "Get Feature Flag",
21
+ description: "Get a single feature flag by key (public, no auth required).",
22
+ inputSchema: {
23
+ key: z.string().min(1).max(200).regex(/^[\w.-]+$/).describe("Feature flag key"),
24
+ },
25
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
26
+ }, withGuard("elnora_get_flag", getContext, async ({ key }) => {
27
+ try {
28
+ const result = await getClient().get(`/globalFeatureFlags/${key}`);
29
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
30
+ }
31
+ catch (error) {
32
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
33
+ }
34
+ }));
35
+ }
36
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/tools/flags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,SAAgC,EAChC,UAAgC;IAEhC,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,SAAS,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAChF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ElnoraApiClient } from "../services/elnora-api-client.js";
3
+ import { RequestContext } from "../server.js";
4
+ export declare function registerFolderTools(server: McpServer, getClient: () => ElnoraApiClient, getContext: () => RequestContext): void;
5
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../src/tools/folders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,eAAe,EAChC,UAAU,EAAE,MAAM,cAAc,GAC/B,IAAI,CAwGN"}
@@ -0,0 +1,90 @@
1
+ import { z } from "zod";
2
+ import { handleApiError } from "../services/error-handler.js";
3
+ import { withGuard } from "./with-guard.js";
4
+ export function registerFolderTools(server, getClient, getContext) {
5
+ server.registerTool("elnora_list_folders", {
6
+ title: "List Folders",
7
+ description: "List folders in a project.",
8
+ inputSchema: {
9
+ project_id: z.string().uuid().describe("Project UUID"),
10
+ },
11
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
12
+ }, withGuard("elnora_list_folders", getContext, async ({ project_id }) => {
13
+ try {
14
+ const result = await getClient().get(`/projects/${project_id}/folders`);
15
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
16
+ }
17
+ catch (error) {
18
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
19
+ }
20
+ }));
21
+ server.registerTool("elnora_create_folder", {
22
+ title: "Create Folder",
23
+ description: "Create a folder in a project.",
24
+ inputSchema: {
25
+ project_id: z.string().uuid().describe("Project UUID"),
26
+ name: z.string().min(1).max(255).describe("Folder name"),
27
+ parent_id: z.string().uuid().optional().describe("Parent folder UUID for nesting"),
28
+ },
29
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
30
+ }, withGuard("elnora_create_folder", getContext, async ({ project_id, name, parent_id }) => {
31
+ try {
32
+ const result = await getClient().post(`/projects/${project_id}/folders`, { name, parentId: parent_id });
33
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
34
+ }
35
+ catch (error) {
36
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
37
+ }
38
+ }));
39
+ server.registerTool("elnora_rename_folder", {
40
+ title: "Rename Folder",
41
+ description: "Rename a folder.",
42
+ inputSchema: {
43
+ folder_id: z.string().uuid().describe("Folder UUID"),
44
+ name: z.string().min(1).max(255).describe("New name"),
45
+ },
46
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
47
+ }, withGuard("elnora_rename_folder", getContext, async ({ folder_id, name }) => {
48
+ try {
49
+ const result = await getClient().put(`/folders/${folder_id}`, { name });
50
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
51
+ }
52
+ catch (error) {
53
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
54
+ }
55
+ }));
56
+ server.registerTool("elnora_move_folder", {
57
+ title: "Move Folder",
58
+ description: "Move a folder to a new parent (null for root).",
59
+ inputSchema: {
60
+ folder_id: z.string().uuid().describe("Folder UUID"),
61
+ parent_id: z.string().uuid().nullable().describe("New parent folder UUID (null for root)"),
62
+ },
63
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
64
+ }, withGuard("elnora_move_folder", getContext, async ({ folder_id, parent_id }) => {
65
+ try {
66
+ const result = await getClient().put(`/folders/${folder_id}/move`, { parentId: parent_id });
67
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
68
+ }
69
+ catch (error) {
70
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
71
+ }
72
+ }));
73
+ server.registerTool("elnora_delete_folder", {
74
+ title: "Delete Folder",
75
+ description: "Delete a folder.",
76
+ inputSchema: {
77
+ folder_id: z.string().uuid().describe("Folder UUID"),
78
+ },
79
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
80
+ }, withGuard("elnora_delete_folder", getContext, async ({ folder_id }) => {
81
+ try {
82
+ await getClient().del(`/folders/${folder_id}`);
83
+ return { content: [{ type: "text", text: JSON.stringify({ deleted: true, folderId: folder_id }) }] };
84
+ }
85
+ catch (error) {
86
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
87
+ }
88
+ }));
89
+ }
90
+ //# sourceMappingURL=folders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.js","sourceRoot":"","sources":["../../src/tools/folders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ElnoraApiClient } from "../services/elnora-api-client.js";
3
+ import { RequestContext } from "../server.js";
4
+ export declare function registerHealthTools(server: McpServer, getClient: () => ElnoraApiClient, getContext: () => RequestContext): void;
5
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,eAAe,EAChC,UAAU,EAAE,MAAM,cAAc,GAC/B,IAAI,CAkBN"}
@@ -0,0 +1,19 @@
1
+ import { handleApiError } from "../services/error-handler.js";
2
+ import { withGuard } from "./with-guard.js";
3
+ export function registerHealthTools(server, getClient, getContext) {
4
+ server.registerTool("elnora_health_check", {
5
+ title: "Health Check",
6
+ description: "Check if the Elnora platform API is reachable.",
7
+ inputSchema: {},
8
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
9
+ }, withGuard("elnora_health_check", getContext, async () => {
10
+ try {
11
+ const result = await getClient().get("/health");
12
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
13
+ }
14
+ catch (error) {
15
+ return { content: [{ type: "text", text: handleApiError(error) }], isError: true };
16
+ }
17
+ }));
18
+ }
19
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,SAAgC,EAChC,UAAgC;IAEhC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,SAAS,CAAC,qBAAqB,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ElnoraApiClient } from "../services/elnora-api-client.js";
3
+ import { RequestContext } from "../server.js";
4
+ export declare function registerLibraryTools(server: McpServer, getClient: () => ElnoraApiClient, getContext: () => RequestContext): void;
5
+ //# sourceMappingURL=library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/tools/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,eAAe,EAChC,UAAU,EAAE,MAAM,cAAc,GAC/B,IAAI,CA2GN"}