mcp-creatio 0.3.8 → 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 (96) hide show
  1. package/Agent.md +4 -1
  2. package/README.md +131 -113
  3. package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts +13 -0
  4. package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts.map +1 -0
  5. package/dist/creatio/engines/admin-operation/admin-operation-engine.js +27 -0
  6. package/dist/creatio/engines/admin-operation/admin-operation-engine.js.map +1 -0
  7. package/dist/creatio/engines/configuration/configuration-engine.d.ts +10 -0
  8. package/dist/creatio/engines/configuration/configuration-engine.d.ts.map +1 -0
  9. package/dist/creatio/engines/configuration/configuration-engine.js +18 -0
  10. package/dist/creatio/engines/configuration/configuration-engine.js.map +1 -0
  11. package/dist/creatio/engines/engine-manager.d.ts +13 -1
  12. package/dist/creatio/engines/engine-manager.d.ts.map +1 -1
  13. package/dist/creatio/engines/engine-manager.js +17 -0
  14. package/dist/creatio/engines/engine-manager.js.map +1 -1
  15. package/dist/creatio/engines/engine-registry.d.ts +3 -0
  16. package/dist/creatio/engines/engine-registry.d.ts.map +1 -1
  17. package/dist/creatio/engines/engine-registry.js +3 -0
  18. package/dist/creatio/engines/engine-registry.js.map +1 -1
  19. package/dist/creatio/engines/feature/feature-engine.d.ts +10 -0
  20. package/dist/creatio/engines/feature/feature-engine.d.ts.map +1 -0
  21. package/dist/creatio/engines/feature/feature-engine.js +18 -0
  22. package/dist/creatio/engines/feature/feature-engine.js.map +1 -0
  23. package/dist/creatio/engines/index.d.ts +3 -0
  24. package/dist/creatio/engines/index.d.ts.map +1 -1
  25. package/dist/creatio/engines/index.js +3 -0
  26. package/dist/creatio/engines/index.js.map +1 -1
  27. package/dist/creatio/provider-context.d.ts +4 -1
  28. package/dist/creatio/provider-context.d.ts.map +1 -1
  29. package/dist/creatio/providers/admin-operation-provider.d.ts +27 -0
  30. package/dist/creatio/providers/admin-operation-provider.d.ts.map +1 -0
  31. package/dist/creatio/providers/admin-operation-provider.js +3 -0
  32. package/dist/creatio/providers/admin-operation-provider.js.map +1 -0
  33. package/dist/creatio/providers/configuration-provider.d.ts +19 -0
  34. package/dist/creatio/providers/configuration-provider.d.ts.map +1 -0
  35. package/dist/creatio/providers/configuration-provider.js +3 -0
  36. package/dist/creatio/providers/configuration-provider.js.map +1 -0
  37. package/dist/creatio/providers/feature-provider.d.ts +10 -0
  38. package/dist/creatio/providers/feature-provider.d.ts.map +1 -0
  39. package/dist/creatio/providers/feature-provider.js +3 -0
  40. package/dist/creatio/providers/feature-provider.js.map +1 -0
  41. package/dist/creatio/providers/index.d.ts +3 -0
  42. package/dist/creatio/providers/index.d.ts.map +1 -1
  43. package/dist/creatio/providers/index.js +3 -0
  44. package/dist/creatio/providers/index.js.map +1 -1
  45. package/dist/creatio/services/admin-operation-service-provider.d.ts +15 -0
  46. package/dist/creatio/services/admin-operation-service-provider.d.ts.map +1 -0
  47. package/dist/creatio/services/admin-operation-service-provider.js +69 -0
  48. package/dist/creatio/services/admin-operation-service-provider.js.map +1 -0
  49. package/dist/creatio/services/configuration-service-provider.d.ts +14 -0
  50. package/dist/creatio/services/configuration-service-provider.d.ts.map +1 -0
  51. package/dist/creatio/services/configuration-service-provider.js +90 -0
  52. package/dist/creatio/services/configuration-service-provider.js.map +1 -0
  53. package/dist/creatio/services/creatio-service-context.d.ts +4 -1
  54. package/dist/creatio/services/creatio-service-context.d.ts.map +1 -1
  55. package/dist/creatio/services/creatio-service-context.js +9 -0
  56. package/dist/creatio/services/creatio-service-context.js.map +1 -1
  57. package/dist/creatio/services/feature-service-provider.d.ts +10 -0
  58. package/dist/creatio/services/feature-service-provider.d.ts.map +1 -0
  59. package/dist/creatio/services/feature-service-provider.js +43 -0
  60. package/dist/creatio/services/feature-service-provider.js.map +1 -0
  61. package/dist/creatio/services/index.d.ts +3 -0
  62. package/dist/creatio/services/index.d.ts.map +1 -1
  63. package/dist/creatio/services/index.js +3 -0
  64. package/dist/creatio/services/index.js.map +1 -1
  65. package/dist/server/mcp/prompts-data.d.ts +58 -0
  66. package/dist/server/mcp/prompts-data.d.ts.map +1 -1
  67. package/dist/server/mcp/prompts-data.js +391 -1
  68. package/dist/server/mcp/prompts-data.js.map +1 -1
  69. package/dist/server/mcp/server.d.ts.map +1 -1
  70. package/dist/server/mcp/server.js +69 -0
  71. package/dist/server/mcp/server.js.map +1 -1
  72. package/dist/server/mcp/tools-data.d.ts +63 -0
  73. package/dist/server/mcp/tools-data.d.ts.map +1 -1
  74. package/dist/server/mcp/tools-data.js +110 -5
  75. package/dist/server/mcp/tools-data.js.map +1 -1
  76. package/package.json +23 -10
  77. package/src/creatio/engines/admin-operation/admin-operation-engine.ts +44 -0
  78. package/src/creatio/engines/configuration/configuration-engine.ts +26 -0
  79. package/src/creatio/engines/engine-manager.ts +56 -1
  80. package/src/creatio/engines/engine-registry.ts +3 -0
  81. package/src/creatio/engines/feature/feature-engine.ts +20 -0
  82. package/src/creatio/engines/index.ts +3 -0
  83. package/src/creatio/provider-context.ts +12 -1
  84. package/src/creatio/providers/admin-operation-provider.ts +34 -0
  85. package/src/creatio/providers/configuration-provider.ts +22 -0
  86. package/src/creatio/providers/feature-provider.ts +10 -0
  87. package/src/creatio/providers/index.ts +3 -0
  88. package/src/creatio/services/admin-operation-service-provider.ts +115 -0
  89. package/src/creatio/services/configuration-service-provider.ts +127 -0
  90. package/src/creatio/services/creatio-service-context.ts +18 -1
  91. package/src/creatio/services/feature-service-provider.ts +60 -0
  92. package/src/creatio/services/index.ts +3 -0
  93. package/src/server/mcp/prompts-data.ts +396 -0
  94. package/src/server/mcp/server.ts +111 -0
  95. package/src/server/mcp/tools-data.ts +160 -4
  96. package/ecosystem.config.json +0 -17
@@ -51,6 +51,10 @@ function makeToolDescriptor(opts: {
51
51
  };
52
52
  }
53
53
 
54
+ const CREATIO_GUID_REGEX = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
55
+ const creatioGuid = () =>
56
+ z.string().regex(CREATIO_GUID_REGEX, 'Must be a 36-character hex GUID');
57
+
54
58
  const getCurrentUserInfoInputShape = {};
55
59
  export const getCurrentUserInfoInput = z.object(getCurrentUserInfoInputShape);
56
60
 
@@ -517,9 +521,7 @@ const sysSettingDefinitionFieldShape = {
517
521
  const sysSettingDefinitionSchema = z.object(sysSettingDefinitionFieldShape);
518
522
 
519
523
  const createSysSettingDefinitionSchema = sysSettingDefinitionSchema.extend({
520
- id: z
521
- .string()
522
- .uuid()
524
+ id: creatioGuid()
523
525
  .optional()
524
526
  .describe('Optional GUID for the sys setting record. Auto-generated when omitted.'),
525
527
  });
@@ -576,7 +578,7 @@ export const setSysSettingsValueDescriptor = makeToolDescriptor({
576
578
  });
577
579
 
578
580
  const updateSysSettingDefinitionInputShape = {
579
- id: z.string().uuid().describe('Existing SysSetting Id (Guid) to update.'),
581
+ id: creatioGuid().describe('Existing SysSetting Id (Guid) to update.'),
580
582
  definition: updateSysSettingDefinitionSchema.describe(
581
583
  'Creatio requires Code, Name, and valueTypeName on every UpdateSysSettingRequest. Always include those fields (existing values are OK) plus any other properties that need updating.',
582
584
  ),
@@ -590,3 +592,157 @@ export const updateSysSettingDefinitionDescriptor = makeToolDescriptor({
590
592
  'Calls the UpdateSysSettingRequest endpoint to modify metadata such as name, description, valueTypeName, cache flags, personalization flags, and lookup reference schema. IMPORTANT: Creatio validates that Code, Name, and valueTypeName are present on every update, even if they are unchanged—copy the current values when needed. See the /sys-settings-guide prompt for allowed value types and lookup resolution tips.',
591
593
  inputShape: updateSysSettingDefinitionInputShape,
592
594
  });
595
+
596
+ const refreshFeatureCacheInputShape = {
597
+ featureCode: z
598
+ .string()
599
+ .min(1)
600
+ .optional()
601
+ .describe(
602
+ 'Optional feature code (e.g., "FreedomUIComposableApp"). When provided, only that feature\'s cache is invalidated for all users. Omit to clear the cache for every feature.',
603
+ ),
604
+ } as const;
605
+
606
+ export const refreshFeatureCacheInput = z.object(refreshFeatureCacheInputShape);
607
+
608
+ export const refreshFeatureCacheDescriptor = makeToolDescriptor({
609
+ title: 'Refresh Creatio feature toggle cache',
610
+ description:
611
+ 'Invalidates the in-memory feature-toggle cache for all users. Call this after changing rows in `Feature` or `AdminUnitFeatureState` via the standard create/update/delete tools so the new state becomes visible. Pass `featureCode` to scope to a single feature; omit to refresh all. See /feature-toggle-guide for the full workflow.',
612
+ inputShape: refreshFeatureCacheInputShape,
613
+ });
614
+
615
+ const upsertAdminOperationInputShape = {
616
+ id: creatioGuid()
617
+ .optional()
618
+ .describe(
619
+ 'Existing SysAdminOperation Id. Omit to create a new record (a new GUID is generated server-side and returned in the response).',
620
+ ),
621
+ name: z
622
+ .string()
623
+ .min(1)
624
+ .describe(
625
+ 'Display name of the system operation (e.g., "Can manage administration"). Required for both create and update.',
626
+ ),
627
+ code: z
628
+ .string()
629
+ .min(1)
630
+ .describe(
631
+ 'Code of the system operation (e.g., "CanManageAdministration"). Required and must be unique. Conventionally PascalCase with no spaces.',
632
+ ),
633
+ description: z
634
+ .string()
635
+ .optional()
636
+ .describe('Optional human-readable description of what the operation gates.'),
637
+ } as const;
638
+
639
+ export const upsertAdminOperationInput = z.object(upsertAdminOperationInputShape);
640
+
641
+ export const upsertAdminOperationDescriptor = makeToolDescriptor({
642
+ title: 'Create or update Creatio system operation',
643
+ description:
644
+ 'Create a new `SysAdminOperation` (omit `id`) or update an existing one (supply `id`). Use this instead of the generic create/update tools — OData modifications on `SysAdminOperation` are blocked at the platform level. Reads still go through the standard `read` tool. Response contains the operation Id. See /admin-operation-guide for the full workflow.',
645
+ inputShape: upsertAdminOperationInputShape,
646
+ });
647
+
648
+ const deleteAdminOperationInputShape = {
649
+ ids: z
650
+ .array(creatioGuid())
651
+ .min(1)
652
+ .describe(
653
+ 'List of SysAdminOperation Ids to delete (RightsService deletes them and their related grantee rows). Use the standard `read` tool on `SysAdminOperation` to look up Ids by Code first.',
654
+ ),
655
+ } as const;
656
+
657
+ export const deleteAdminOperationInput = z.object(deleteAdminOperationInputShape);
658
+
659
+ export const deleteAdminOperationDescriptor = makeToolDescriptor({
660
+ title: 'Delete Creatio system operations',
661
+ description:
662
+ 'Delete one or more `SysAdminOperation` rows by Id. Related grantee rows are cleaned up automatically. Use this instead of the generic `delete` tool — OData modifications on `SysAdminOperation` are blocked at the platform level.',
663
+ inputShape: deleteAdminOperationInputShape,
664
+ });
665
+
666
+ const setAdminOperationGranteeInputShape = {
667
+ adminOperationId: creatioGuid().describe(
668
+ 'Id of the SysAdminOperation being granted or revoked. Look up via `read` on `SysAdminOperation` filtered by Code.',
669
+ ),
670
+ adminUnitIds: z
671
+ .array(creatioGuid())
672
+ .min(1)
673
+ .describe(
674
+ 'SysAdminUnit Ids (users or roles) that should receive the same grant/revoke state. Resolve via `read` on `SysAdminUnit` filtered by Name. Use SysAdminUnit.Id (NOT ContactId).',
675
+ ),
676
+ canExecute: z
677
+ .boolean()
678
+ .describe(
679
+ '`true` grants the operation (allow) to every listed admin unit; `false` revokes it (deny).',
680
+ ),
681
+ } as const;
682
+
683
+ export const setAdminOperationGranteeInput = z.object(setAdminOperationGranteeInputShape);
684
+
685
+ export const setAdminOperationGranteeDescriptor = makeToolDescriptor({
686
+ title: 'Grant or revoke a system operation for users/roles',
687
+ description:
688
+ 'Grant (`canExecute=true`) or revoke (`canExecute=false`) a system operation for one or more `SysAdminUnit` ids (users or roles). Repeated calls for the same (operation, unit) pair update the existing grant row instead of duplicating. Use this instead of the generic create/update tools — OData modifications on `SysAdminOperationGrantee` are blocked.',
689
+ inputShape: setAdminOperationGranteeInputShape,
690
+ });
691
+
692
+ const deleteAdminOperationGranteeInputShape = {
693
+ ids: z
694
+ .array(creatioGuid())
695
+ .min(1)
696
+ .describe(
697
+ 'List of SysAdminOperationGrantee row Ids to delete. Look them up via `read` on `SysAdminOperationGrantee` filtered by `SysAdminOperationId` and/or `SysAdminUnitId`.',
698
+ ),
699
+ } as const;
700
+
701
+ export const deleteAdminOperationGranteeInput = z.object(deleteAdminOperationGranteeInputShape);
702
+
703
+ export const deleteAdminOperationGranteeDescriptor = makeToolDescriptor({
704
+ title: 'Remove specific system operation grant rows',
705
+ description:
706
+ 'Delete individual grant rows by Id when you want to remove a grant entry entirely. To flip allow ↔ deny instead, prefer `set-admin-operation-grantee`.',
707
+ inputShape: deleteAdminOperationGranteeInputShape,
708
+ });
709
+
710
+ const SERVICE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_-]*$/;
711
+
712
+ const callConfigurationServiceInputShape = {
713
+ service: z
714
+ .string()
715
+ .regex(SERVICE_NAME_PATTERN, 'Service name must match ^[A-Za-z][A-Za-z0-9_-]*$')
716
+ .describe(
717
+ 'Configuration service name as registered in Creatio (e.g., "RightsService"). The full URL is /0/rest/<service>/<method>.',
718
+ ),
719
+ method: z
720
+ .string()
721
+ .regex(SERVICE_NAME_PATTERN, 'Method name must match ^[A-Za-z][A-Za-z0-9_-]*$')
722
+ .describe(
723
+ 'Service method name (UriTemplate) to invoke (e.g., "UpsertAdminOperation").',
724
+ ),
725
+ httpMethod: z
726
+ .enum(['GET', 'POST', 'PATCH', 'PUT', 'DELETE'])
727
+ .default('POST')
728
+ .describe('HTTP method. Most Creatio configuration services use POST.'),
729
+ body: z
730
+ .record(z.string(), z.any())
731
+ .optional()
732
+ .describe(
733
+ 'Request body sent as JSON for POST/PATCH/PUT. Ignored for GET/DELETE. Pass the service parameters as a flat object (e.g., {"recordId":"<guid>","name":"..."}). Creatio configuration services use [WebInvoke BodyStyle=Wrapped], so each parameter becomes a top-level key.',
734
+ ),
735
+ query: z
736
+ .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))
737
+ .optional()
738
+ .describe('Optional query-string parameters appended to the URL.'),
739
+ } as const;
740
+
741
+ export const callConfigurationServiceInput = z.object(callConfigurationServiceInputShape);
742
+
743
+ export const callConfigurationServiceDescriptor = makeToolDescriptor({
744
+ title: 'Call a Creatio configuration REST service method',
745
+ description:
746
+ 'Escape hatch for invoking any configuration-package REST service exposed at /0/rest/<service>/<method>. Use this when no dedicated MCP tool covers the operation. Always prefer the specific tools (`upsert-admin-operation`, `refresh-feature-cache`, sys-settings tools, etc.) when they exist — they validate inputs, handle wrapped responses, and document side effects. Returns `{status, contentType, body}`; JSON responses are auto-parsed.',
747
+ inputShape: callConfigurationServiceInputShape,
748
+ });
@@ -1,17 +0,0 @@
1
- {
2
- "apps": [
3
- {
4
- "name": "mcp-creatio",
5
- "cwd": "C:/Projects/mcp-creatio",
6
- "script": "dist/index.js",
7
- "node_args": "",
8
- "env": {
9
- "CREATIO_BASE_URL": "http://tscore-dev-18:88/sae_m_seeenu_12458081_1106",
10
- "CREATIO_LOGIN": "your_login",
11
- "CREATIO_PASSWORD": "your_password",
12
- "PORT": "7700",
13
- "HOST": "0.0.0.0"
14
- }
15
- }
16
- ]
17
- }