fmea-api-mcp-server 1.1.37 → 1.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ class ApiDocsServer {
28
28
  constructor() {
29
29
  this.server = new Server({
30
30
  name: "api-docs-mcp",
31
- version: "1.1.37",
31
+ version: "1.1.39",
32
32
  }, {
33
33
  capabilities: {
34
34
  resources: {},
@@ -469,6 +469,10 @@ export class OramaSearchService {
469
469
  if (resource === 'system-definition' && (action === 'export' || action === 'import' || lower.includes('excel'))) {
470
470
  resource = 'system-definition-excel';
471
471
  }
472
+ // [R34] "synonym" + export/import/excel → prefer 'synonym-excel'
473
+ if (resource === 'synonym' && (action === 'export' || action === 'import' || lower.includes('excel'))) {
474
+ resource = 'synonym-excel';
475
+ }
472
476
  // [R19] "get X by Y ID" is a specific read, not a list
473
477
  if (action === 'list' && /\bby\b.*\bid\b/i.test(lower)) {
474
478
  action = 'read';
package/dist/synonyms.js CHANGED
@@ -11,7 +11,8 @@ export const METHOD_ACTIONS = {
11
11
  export const RESOURCE_ALIASES = {
12
12
  // Core Entities
13
13
  // Core Entities
14
- 'division': ['organization', 'org', 'department', 'group', 'sector', 'unit'],
14
+ 'division': ['organization', 'org', 'department', 'group', 'sector', 'unit', 'authorized division'], // [R34] Added authorized division alias
15
+ 'authorized-division': ['authorized division', 'division permission', 'division access', 'access permission', 'authorized divisions'], // [R34] New authorized divisions resource
15
16
  'knowledge': ['knowledge', 'knowledge base'], // [R17] New Resource Support
16
17
  'document-category': ['category', 'document category', 'doc category', 'file category'], // [R22] Document category filtering
17
18
  'project': ['workspace', 'repo', 'application', 'app'], // [R13] Removed 'system' to avoid conflict
@@ -38,7 +39,9 @@ export const RESOURCE_ALIASES = {
38
39
  'excel': ['excel', 'spreadsheet', 'csv'], // [R16]
39
40
  'worksheet-excel': ['worksheet excel', 'excel worksheet', 'worksheet export', 'worksheet download'], // Worksheet Excel import/export
40
41
  'block-diagrams-excel': ['block diagram export', 'block excel', 'diagram export', 'export block', 'export diagram', 'export'], // [R22] Block Diagram Excel export
41
- 'synonym': ['synonyms', 'synonym'], // [Fix] Key must match singular resourceType for boosting
42
+ 'synonym': ['synonyms', 'synonym', 'synonym group', 'synonym dictionary', 'term group'], // [R34] Enhanced synonym aliases
43
+ 'synonym-excel': ['synonym excel', 'synonym export', 'synonym import', 'synonym spreadsheet'], // [R34] Synonym Excel import/export
44
+ 'system-settings': ['system settings', 'system config', 'system configuration', 'global settings'], // [R34] System settings resource
42
45
  'recommendation-item': ['recommendation item', 'recommended action', 'corrective action', 'action item', 'mitigation item'], // [R20] New v2 recommendation items
43
46
  'fourm': ['4m', 'four m', '4m analysis', 'man machine material environment'], // 4M Analysis
44
47
  'term': ['term', 'terms', 'taxonomy', 'terminology', 'glossary'], // Term tree management — removed 'classification' (now dedicated resource [R28])
@@ -109,6 +112,8 @@ export const SYNONYM_GROUPS = {
109
112
  // Domain Specific (New)
110
113
  "organization": ["division", "department", "group", "team", "unit"],
111
114
  "division": ["organization", "department", "group", "section", "sector"],
115
+ "permission": ["access", "authorization", "authority", "privilege", "right"], // [R34]
116
+ "authorized": ["permitted", "allowed", "approved", "access control"], // [R34]
112
117
  "overview": ["summary", "description", "details", "info", "profile", "dashboard"],
113
118
  "dashboard": ["overview", "summary", "stats", "metrics", "report", "my projects", "action items", "rpn"], // [R25]
114
119
  "globally": ["global", "cross-project", "all projects", "system-wide"], // [R25]
@@ -29,6 +29,15 @@
29
29
  "schema": {
30
30
  "type": "string"
31
31
  }
32
+ },
33
+ {
34
+ "name": "useSynonym",
35
+ "in": "query",
36
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
37
+ "schema": {
38
+ "type": "boolean",
39
+ "default": true
40
+ }
32
41
  }
33
42
  ],
34
43
  "requestBody": null,
@@ -112,6 +121,15 @@
112
121
  "schema": {
113
122
  "type": "string"
114
123
  }
124
+ },
125
+ {
126
+ "name": "useSynonym",
127
+ "in": "query",
128
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
129
+ "schema": {
130
+ "type": "boolean",
131
+ "default": true
132
+ }
115
133
  }
116
134
  ],
117
135
  "requestBody": null,
@@ -336,6 +354,15 @@
336
354
  "schema": {
337
355
  "type": "string"
338
356
  }
357
+ },
358
+ {
359
+ "name": "useSynonym",
360
+ "in": "query",
361
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
362
+ "schema": {
363
+ "type": "boolean",
364
+ "default": true
365
+ }
339
366
  }
340
367
  ],
341
368
  "requestBody": null,
@@ -598,7 +625,7 @@
598
625
  "method": "GET",
599
626
  "operationId": "get",
600
627
  "summary": "Get failure mode details",
601
- "description": "Returns a failure mode by ID. If search is provided, resolves by failure mode name within the block diagram.",
628
+ "description": "Returns a failure mode by ID.",
602
629
  "tags": [
603
630
  "Failure Mode"
604
631
  ],
@@ -629,14 +656,6 @@
629
656
  "schema": {
630
657
  "type": "string"
631
658
  }
632
- },
633
- {
634
- "name": "q",
635
- "in": "query",
636
- "description": "Failure mode name keyword",
637
- "schema": {
638
- "type": "string"
639
- }
640
659
  }
641
660
  ],
642
661
  "requestBody": null,
@@ -795,13 +814,13 @@
795
814
  }
796
815
  },
797
816
  {
798
- "path": "/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/{nodeId}/failure-modes",
817
+ "path": "/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes",
799
818
  "method": "GET",
800
- "operationId": "listNodeFailureModes",
801
- "summary": "List node failure modes",
802
- "description": "Returns failure modes mapped to the target node. Optional search applies keyword filtering.",
819
+ "operationId": "list_6",
820
+ "summary": "List block diagram failure modes",
821
+ "description": "Returns failure modes visible in the target block diagram. Optional search applies keyword filtering.",
803
822
  "tags": [
804
- "Block Diagram"
823
+ "Failure Mode"
805
824
  ],
806
825
  "parameters": [
807
826
  {
@@ -814,7 +833,7 @@
814
833
  }
815
834
  },
816
835
  {
817
- "name": "blockId",
836
+ "name": "blockDiagramId",
818
837
  "in": "path",
819
838
  "description": "Block diagram ID",
820
839
  "required": true,
@@ -823,20 +842,20 @@
823
842
  }
824
843
  },
825
844
  {
826
- "name": "nodeId",
827
- "in": "path",
828
- "description": "Block node ID",
829
- "required": true,
845
+ "name": "q",
846
+ "in": "query",
847
+ "description": "Failure mode keyword search (trimmed, max 100 characters)",
830
848
  "schema": {
831
849
  "type": "string"
832
850
  }
833
851
  },
834
852
  {
835
- "name": "q",
853
+ "name": "useSynonym",
836
854
  "in": "query",
837
- "description": "Failure mode keyword search (trimmed, max 100 characters)",
855
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
838
856
  "schema": {
839
- "type": "string"
857
+ "type": "boolean",
858
+ "default": true
840
859
  }
841
860
  }
842
861
  ],
@@ -845,46 +864,7 @@
845
864
  "default": {
846
865
  "description": "default response",
847
866
  "content": {
848
- "application/json": {
849
- "schema": {
850
- "type": "array",
851
- "items": {
852
- "type": "object",
853
- "properties": {
854
- "blockNodeId": {
855
- "type": "string"
856
- },
857
- "referencedBlockNodeId": {
858
- "type": "string"
859
- },
860
- "id": {
861
- "type": "string"
862
- },
863
- "name": {
864
- "type": "string"
865
- },
866
- "fmmDiagramType": {
867
- "type": "string",
868
- "enum": [
869
- "UNUSED",
870
- "NOT_SELECTED",
871
- "TYPE_A",
872
- "TYPE_C"
873
- ]
874
- },
875
- "rank": {
876
- "type": "string"
877
- },
878
- "complete": {
879
- "type": "string"
880
- },
881
- "transferFmmObject": {
882
- "type": "integer"
883
- }
884
- }
885
- }
886
- }
887
- }
867
+ "application/json": {}
888
868
  }
889
869
  }
890
870
  }
@@ -333,6 +333,15 @@
333
333
  "type": "string"
334
334
  }
335
335
  },
336
+ {
337
+ "name": "useSynonym",
338
+ "in": "query",
339
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
340
+ "schema": {
341
+ "type": "boolean",
342
+ "default": true
343
+ }
344
+ },
336
345
  {
337
346
  "name": "page",
338
347
  "in": "query",
@@ -448,6 +457,15 @@
448
457
  "type": "string"
449
458
  }
450
459
  },
460
+ {
461
+ "name": "useSynonym",
462
+ "in": "query",
463
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
464
+ "schema": {
465
+ "type": "boolean",
466
+ "default": true
467
+ }
468
+ },
451
469
  {
452
470
  "name": "page",
453
471
  "in": "query",
@@ -7,7 +7,7 @@
7
7
  "path": "/api/v2/divisions",
8
8
  "method": "GET",
9
9
  "summary": "Search divisions",
10
- "operationId": "list_6",
10
+ "operationId": "list_7",
11
11
  "description": "Returns paged divisions filtered by division name.",
12
12
  "tags": [
13
13
  "Division"
@@ -21,6 +21,15 @@
21
21
  "type": "string"
22
22
  }
23
23
  },
24
+ {
25
+ "name": "useSynonym",
26
+ "in": "query",
27
+ "description": "Whether to expand q with synonym dictionary terms (default: true)",
28
+ "schema": {
29
+ "type": "boolean",
30
+ "default": true
31
+ }
32
+ },
24
33
  {
25
34
  "name": "page",
26
35
  "in": "query",
@@ -151,6 +160,363 @@
151
160
  }
152
161
  }
153
162
  }
163
+ },
164
+ {
165
+ "path": "/api/v2/divisions/{divisionId}",
166
+ "method": "DELETE",
167
+ "operationId": "delete_2",
168
+ "summary": "Delete a division",
169
+ "description": "Deletes a division and its access list entries. Resets user mappings for divisions that referenced the deleted one. Fails if users are assigned to the division.",
170
+ "tags": [
171
+ "Division"
172
+ ],
173
+ "parameters": [
174
+ {
175
+ "name": "divisionId",
176
+ "in": "path",
177
+ "description": "Division ID to delete",
178
+ "required": true,
179
+ "schema": {
180
+ "type": "integer",
181
+ "format": "int32"
182
+ }
183
+ }
184
+ ],
185
+ "requestBody": null,
186
+ "responses": {
187
+ "default": {
188
+ "description": "default response",
189
+ "content": {
190
+ "application/json": {}
191
+ }
192
+ }
193
+ }
194
+ },
195
+ {
196
+ "path": "/api/v2/divisions/{divisionId}/authorized-divisions",
197
+ "method": "GET",
198
+ "operationId": "getAuthorizedDivisions",
199
+ "summary": "Get authorized divisions",
200
+ "description": "Returns the list of divisions that the specified division is authorized to access.",
201
+ "tags": [
202
+ "Division"
203
+ ],
204
+ "parameters": [
205
+ {
206
+ "name": "divisionId",
207
+ "in": "path",
208
+ "description": "Division ID to query authorized divisions for",
209
+ "required": true,
210
+ "schema": {
211
+ "type": "integer",
212
+ "format": "int32"
213
+ }
214
+ }
215
+ ],
216
+ "requestBody": null,
217
+ "responses": {
218
+ "default": {
219
+ "description": "default response",
220
+ "content": {
221
+ "application/json": {
222
+ "schema": {
223
+ "type": "array",
224
+ "items": {
225
+ "type": "object",
226
+ "properties": {
227
+ "id": {
228
+ "type": "integer"
229
+ },
230
+ "no": {
231
+ "type": "integer"
232
+ },
233
+ "name": {
234
+ "type": "string"
235
+ },
236
+ "code": {
237
+ "type": "string"
238
+ },
239
+ "relatedDivisions": {
240
+ "type": "array",
241
+ "items": {
242
+ "type": "object",
243
+ "description": "(circular: DivisionDTO)"
244
+ }
245
+ }
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ },
254
+ {
255
+ "path": "/api/v2/divisions",
256
+ "method": "POST",
257
+ "operationId": "create_3",
258
+ "summary": "Create a division",
259
+ "description": "Creates a new division with optional aliases and code. Automatically assigns global-access users to the new division.",
260
+ "tags": [
261
+ "Division"
262
+ ],
263
+ "parameters": [],
264
+ "requestBody": {
265
+ "content": {
266
+ "application/json": {
267
+ "schema": {
268
+ "type": "object",
269
+ "properties": {
270
+ "name": {
271
+ "type": "string"
272
+ },
273
+ "aliases": {
274
+ "type": "array",
275
+ "items": {
276
+ "type": "string"
277
+ }
278
+ },
279
+ "code": {
280
+ "type": "string"
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+ },
287
+ "responses": {
288
+ "default": {
289
+ "description": "default response",
290
+ "content": {
291
+ "application/json": {
292
+ "schema": {
293
+ "type": "object",
294
+ "properties": {
295
+ "id": {
296
+ "type": "integer"
297
+ },
298
+ "name": {
299
+ "type": "string"
300
+ },
301
+ "aliases": {
302
+ "type": "array",
303
+ "items": {
304
+ "type": "string"
305
+ }
306
+ },
307
+ "code": {
308
+ "type": "string"
309
+ },
310
+ "relatedDivisions": {
311
+ "type": "array",
312
+ "items": {
313
+ "type": "object",
314
+ "properties": {
315
+ "id": {
316
+ "type": "integer"
317
+ },
318
+ "no": {
319
+ "type": "integer"
320
+ },
321
+ "name": {
322
+ "type": "string"
323
+ },
324
+ "code": {
325
+ "type": "string"
326
+ },
327
+ "relatedDivisions": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "object",
331
+ "description": "(circular: DivisionDTO)"
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ },
344
+ {
345
+ "path": "/api/v2/divisions/{divisionId}",
346
+ "method": "PUT",
347
+ "operationId": "update_2",
348
+ "summary": "Update a division",
349
+ "description": "Updates division name, aliases, and code. Cascades code changes to associated projects.",
350
+ "tags": [
351
+ "Division"
352
+ ],
353
+ "parameters": [
354
+ {
355
+ "name": "divisionId",
356
+ "in": "path",
357
+ "description": "Division ID to update",
358
+ "required": true,
359
+ "schema": {
360
+ "type": "integer",
361
+ "format": "int32"
362
+ }
363
+ }
364
+ ],
365
+ "requestBody": {
366
+ "content": {
367
+ "application/json": {
368
+ "schema": {
369
+ "type": "object",
370
+ "properties": {
371
+ "name": {
372
+ "type": "string"
373
+ },
374
+ "aliases": {
375
+ "type": "array",
376
+ "items": {
377
+ "type": "string"
378
+ }
379
+ },
380
+ "code": {
381
+ "type": "string"
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+ },
388
+ "responses": {
389
+ "default": {
390
+ "description": "default response",
391
+ "content": {
392
+ "application/json": {
393
+ "schema": {
394
+ "type": "object",
395
+ "properties": {
396
+ "id": {
397
+ "type": "integer"
398
+ },
399
+ "name": {
400
+ "type": "string"
401
+ },
402
+ "aliases": {
403
+ "type": "array",
404
+ "items": {
405
+ "type": "string"
406
+ }
407
+ },
408
+ "code": {
409
+ "type": "string"
410
+ },
411
+ "relatedDivisions": {
412
+ "type": "array",
413
+ "items": {
414
+ "type": "object",
415
+ "properties": {
416
+ "id": {
417
+ "type": "integer"
418
+ },
419
+ "no": {
420
+ "type": "integer"
421
+ },
422
+ "name": {
423
+ "type": "string"
424
+ },
425
+ "code": {
426
+ "type": "string"
427
+ },
428
+ "relatedDivisions": {
429
+ "type": "array",
430
+ "items": {
431
+ "type": "object",
432
+ "description": "(circular: DivisionDTO)"
433
+ }
434
+ }
435
+ }
436
+ }
437
+ }
438
+ }
439
+ }
440
+ }
441
+ }
442
+ }
443
+ }
444
+ },
445
+ {
446
+ "path": "/api/v2/divisions/{divisionId}/authorized-divisions",
447
+ "method": "PUT",
448
+ "operationId": "updateAuthorizedDivisions",
449
+ "summary": "Update authorized divisions",
450
+ "description": "Replaces the authorized division list for the specified division. Self-division ID is automatically excluded. User-division mappings are rebuilt after update.",
451
+ "tags": [
452
+ "Division"
453
+ ],
454
+ "parameters": [
455
+ {
456
+ "name": "divisionId",
457
+ "in": "path",
458
+ "description": "Division ID to update authorized divisions for",
459
+ "required": true,
460
+ "schema": {
461
+ "type": "integer",
462
+ "format": "int32"
463
+ }
464
+ }
465
+ ],
466
+ "requestBody": {
467
+ "content": {
468
+ "application/json": {
469
+ "schema": {
470
+ "type": "object",
471
+ "properties": {
472
+ "authorizedDivisionIds": {
473
+ "type": "array",
474
+ "items": {
475
+ "type": "integer",
476
+ "format": "int32"
477
+ }
478
+ }
479
+ }
480
+ }
481
+ }
482
+ }
483
+ },
484
+ "responses": {
485
+ "default": {
486
+ "description": "default response",
487
+ "content": {
488
+ "application/json": {
489
+ "schema": {
490
+ "type": "array",
491
+ "items": {
492
+ "type": "object",
493
+ "properties": {
494
+ "id": {
495
+ "type": "integer"
496
+ },
497
+ "no": {
498
+ "type": "integer"
499
+ },
500
+ "name": {
501
+ "type": "string"
502
+ },
503
+ "code": {
504
+ "type": "string"
505
+ },
506
+ "relatedDivisions": {
507
+ "type": "array",
508
+ "items": {
509
+ "type": "object",
510
+ "description": "(circular: DivisionDTO)"
511
+ }
512
+ }
513
+ }
514
+ }
515
+ }
516
+ }
517
+ }
518
+ }
519
+ }
154
520
  }
155
521
  ]
156
522
  }
@@ -191,7 +191,7 @@
191
191
  {
192
192
  "path": "/api/v2/projects/{projectId}/documents/{documentId}",
193
193
  "method": "GET",
194
- "operationId": "get_7",
194
+ "operationId": "get_8",
195
195
  "summary": "Get document by ID",
196
196
  "description": "Fetches detailed information for a specific document using its unique identifier (Retrieve / Fetch / View document details). Use this endpoint to obtain complete document metadata including name, category, path, creation timestamp, and associated file information. This is essential when you need to display document details, verify document existence, or access specific document properties before performing further operations like download or deletion.",
197
197
  "tags": [],
@@ -264,7 +264,7 @@
264
264
  {
265
265
  "path": "/api/v2/projects/{projectId}/documents/{documentId}",
266
266
  "method": "DELETE",
267
- "operationId": "delete_6",
267
+ "operationId": "delete_8",
268
268
  "summary": "Delete document",
269
269
  "description": "Permanently removes a document from the project using its unique identifier (Remove / Erase document). This operation deletes the document record and disassociates it from the project. Use with caution as this action cannot be undone. Requires project member role with NORMAL user level permissions. Ensure you have the correct document ID before initiating deletion to avoid accidental data loss.",
270
270
  "tags": [],
@@ -348,7 +348,7 @@
348
348
  {
349
349
  "path": "/api/v2/projects/{projectId}/documents",
350
350
  "method": "GET",
351
- "operationId": "list_12",
351
+ "operationId": "list_14",
352
352
  "summary": "List all Documents",
353
353
  "description": "Retrieves a comprehensive list of all documents associated with a specific project (Get all files / Fetch project documents / Query document library). Use this endpoint when you need to view, browse, or display the complete collection of documents within a project, including all categories and types. The response includes document metadata such as names, categories, paths, and timestamps, enabling users to navigate and manage the project document repository effectively.",
354
354
  "tags": [],