mcp-creatio 0.3.10 → 0.4.1

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 (225) hide show
  1. package/README.md +117 -108
  2. package/dist/cli.d.ts +5 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +18 -11
  5. package/dist/cli.js.map +1 -1
  6. package/dist/creatio/auth/auth.d.ts +2 -0
  7. package/dist/creatio/auth/auth.d.ts.map +1 -1
  8. package/dist/creatio/auth/auth.js.map +1 -1
  9. package/dist/creatio/auth/providers/base-provider.d.ts +1 -0
  10. package/dist/creatio/auth/providers/base-provider.d.ts.map +1 -1
  11. package/dist/creatio/auth/providers/base-provider.js +3 -0
  12. package/dist/creatio/auth/providers/base-provider.js.map +1 -1
  13. package/dist/creatio/auth/providers/oauth2-code-provider.d.ts +3 -0
  14. package/dist/creatio/auth/providers/oauth2-code-provider.d.ts.map +1 -1
  15. package/dist/creatio/auth/providers/oauth2-code-provider.js +30 -24
  16. package/dist/creatio/auth/providers/oauth2-code-provider.js.map +1 -1
  17. package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts +13 -0
  18. package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts.map +1 -0
  19. package/dist/creatio/engines/admin-operation/admin-operation-engine.js +27 -0
  20. package/dist/creatio/engines/admin-operation/admin-operation-engine.js.map +1 -0
  21. package/dist/creatio/engines/configuration/configuration-engine.d.ts +10 -0
  22. package/dist/creatio/engines/configuration/configuration-engine.d.ts.map +1 -0
  23. package/dist/creatio/engines/configuration/configuration-engine.js +18 -0
  24. package/dist/creatio/engines/configuration/configuration-engine.js.map +1 -0
  25. package/dist/creatio/engines/engine-manager.d.ts +13 -1
  26. package/dist/creatio/engines/engine-manager.d.ts.map +1 -1
  27. package/dist/creatio/engines/engine-manager.js +17 -0
  28. package/dist/creatio/engines/engine-manager.js.map +1 -1
  29. package/dist/creatio/engines/engine-registry.d.ts +3 -0
  30. package/dist/creatio/engines/engine-registry.d.ts.map +1 -1
  31. package/dist/creatio/engines/engine-registry.js +3 -0
  32. package/dist/creatio/engines/engine-registry.js.map +1 -1
  33. package/dist/creatio/engines/feature/feature-engine.d.ts +10 -0
  34. package/dist/creatio/engines/feature/feature-engine.d.ts.map +1 -0
  35. package/dist/creatio/engines/feature/feature-engine.js +18 -0
  36. package/dist/creatio/engines/feature/feature-engine.js.map +1 -0
  37. package/dist/creatio/engines/index.d.ts +3 -0
  38. package/dist/creatio/engines/index.d.ts.map +1 -1
  39. package/dist/creatio/engines/index.js +3 -0
  40. package/dist/creatio/engines/index.js.map +1 -1
  41. package/dist/creatio/provider-context.d.ts +4 -1
  42. package/dist/creatio/provider-context.d.ts.map +1 -1
  43. package/dist/creatio/providers/admin-operation-provider.d.ts +27 -0
  44. package/dist/creatio/providers/admin-operation-provider.d.ts.map +1 -0
  45. package/dist/creatio/providers/admin-operation-provider.js +3 -0
  46. package/dist/creatio/providers/admin-operation-provider.js.map +1 -0
  47. package/dist/creatio/providers/configuration-provider.d.ts +19 -0
  48. package/dist/creatio/providers/configuration-provider.d.ts.map +1 -0
  49. package/dist/creatio/providers/configuration-provider.js +3 -0
  50. package/dist/creatio/providers/configuration-provider.js.map +1 -0
  51. package/dist/creatio/providers/feature-provider.d.ts +10 -0
  52. package/dist/creatio/providers/feature-provider.d.ts.map +1 -0
  53. package/dist/creatio/providers/feature-provider.js +3 -0
  54. package/dist/creatio/providers/feature-provider.js.map +1 -0
  55. package/dist/creatio/providers/index.d.ts +3 -0
  56. package/dist/creatio/providers/index.d.ts.map +1 -1
  57. package/dist/creatio/providers/index.js +3 -0
  58. package/dist/creatio/providers/index.js.map +1 -1
  59. package/dist/creatio/services/admin-operation-service-provider.d.ts +15 -0
  60. package/dist/creatio/services/admin-operation-service-provider.d.ts.map +1 -0
  61. package/dist/creatio/services/admin-operation-service-provider.js +69 -0
  62. package/dist/creatio/services/admin-operation-service-provider.js.map +1 -0
  63. package/dist/creatio/services/configuration-service-provider.d.ts +14 -0
  64. package/dist/creatio/services/configuration-service-provider.d.ts.map +1 -0
  65. package/dist/creatio/services/configuration-service-provider.js +90 -0
  66. package/dist/creatio/services/configuration-service-provider.js.map +1 -0
  67. package/dist/creatio/services/creatio-service-context.d.ts +4 -1
  68. package/dist/creatio/services/creatio-service-context.d.ts.map +1 -1
  69. package/dist/creatio/services/creatio-service-context.js +9 -0
  70. package/dist/creatio/services/creatio-service-context.js.map +1 -1
  71. package/dist/creatio/services/feature-service-provider.d.ts +10 -0
  72. package/dist/creatio/services/feature-service-provider.d.ts.map +1 -0
  73. package/dist/creatio/services/feature-service-provider.js +43 -0
  74. package/dist/creatio/services/feature-service-provider.js.map +1 -0
  75. package/dist/creatio/services/http-client.d.ts.map +1 -1
  76. package/dist/creatio/services/http-client.js +0 -1
  77. package/dist/creatio/services/http-client.js.map +1 -1
  78. package/dist/creatio/services/index.d.ts +3 -0
  79. package/dist/creatio/services/index.d.ts.map +1 -1
  80. package/dist/creatio/services/index.js +3 -0
  81. package/dist/creatio/services/index.js.map +1 -1
  82. package/dist/creatio/services/metadata-store.d.ts +5 -0
  83. package/dist/creatio/services/metadata-store.d.ts.map +1 -1
  84. package/dist/creatio/services/metadata-store.js +18 -6
  85. package/dist/creatio/services/metadata-store.js.map +1 -1
  86. package/dist/creatio/services/odata-crud-provider.d.ts +2 -0
  87. package/dist/creatio/services/odata-crud-provider.d.ts.map +1 -1
  88. package/dist/creatio/services/odata-crud-provider.js +10 -1
  89. package/dist/creatio/services/odata-crud-provider.js.map +1 -1
  90. package/dist/server/http/creatio-oauth-handlers.d.ts +0 -1
  91. package/dist/server/http/creatio-oauth-handlers.d.ts.map +1 -1
  92. package/dist/server/http/creatio-oauth-handlers.js +30 -23
  93. package/dist/server/http/creatio-oauth-handlers.js.map +1 -1
  94. package/dist/server/http/httpServer.d.ts +9 -0
  95. package/dist/server/http/httpServer.d.ts.map +1 -1
  96. package/dist/server/http/httpServer.js +34 -11
  97. package/dist/server/http/httpServer.js.map +1 -1
  98. package/dist/server/http/mcp-handlers.d.ts.map +1 -1
  99. package/dist/server/http/mcp-handlers.js +4 -1
  100. package/dist/server/http/mcp-handlers.js.map +1 -1
  101. package/dist/server/http/mcp-oauth-handlers.d.ts.map +1 -1
  102. package/dist/server/http/mcp-oauth-handlers.js +18 -6
  103. package/dist/server/http/mcp-oauth-handlers.js.map +1 -1
  104. package/dist/server/http/middleware.d.ts +7 -0
  105. package/dist/server/http/middleware.d.ts.map +1 -1
  106. package/dist/server/http/middleware.js +23 -0
  107. package/dist/server/http/middleware.js.map +1 -1
  108. package/dist/server/http/rate-limiter.d.ts +24 -0
  109. package/dist/server/http/rate-limiter.d.ts.map +1 -0
  110. package/dist/server/http/rate-limiter.js +42 -0
  111. package/dist/server/http/rate-limiter.js.map +1 -0
  112. package/dist/server/mcp/prompts-data.d.ts +58 -0
  113. package/dist/server/mcp/prompts-data.d.ts.map +1 -1
  114. package/dist/server/mcp/prompts-data.js +391 -1
  115. package/dist/server/mcp/prompts-data.js.map +1 -1
  116. package/dist/server/mcp/server.d.ts.map +1 -1
  117. package/dist/server/mcp/server.js +69 -0
  118. package/dist/server/mcp/server.js.map +1 -1
  119. package/dist/server/mcp/tools-data.d.ts +63 -0
  120. package/dist/server/mcp/tools-data.d.ts.map +1 -1
  121. package/dist/server/mcp/tools-data.js +110 -5
  122. package/dist/server/mcp/tools-data.js.map +1 -1
  123. package/dist/server/oauth/oauth-server.d.ts +0 -1
  124. package/dist/server/oauth/oauth-server.d.ts.map +1 -1
  125. package/dist/server/oauth/oauth-server.js +11 -21
  126. package/dist/server/oauth/oauth-server.js.map +1 -1
  127. package/dist/server/oauth/storage.d.ts +0 -2
  128. package/dist/server/oauth/storage.d.ts.map +1 -1
  129. package/dist/server/oauth/storage.js +0 -6
  130. package/dist/server/oauth/storage.js.map +1 -1
  131. package/dist/server/oauth/validators.d.ts +6 -0
  132. package/dist/server/oauth/validators.d.ts.map +1 -1
  133. package/dist/server/oauth/validators.js +28 -0
  134. package/dist/server/oauth/validators.js.map +1 -1
  135. package/dist/services/session-context.d.ts +8 -7
  136. package/dist/services/session-context.d.ts.map +1 -1
  137. package/dist/services/session-context.js +7 -27
  138. package/dist/services/session-context.js.map +1 -1
  139. package/package.json +19 -10
  140. package/.dockerignore +0 -12
  141. package/.editorconfig +0 -14
  142. package/.eslintrc.cjs +0 -18
  143. package/.gitattributes +0 -8
  144. package/.github/workflows/docker-publish.yml +0 -50
  145. package/.prettierignore +0 -3
  146. package/.prettierrc +0 -9
  147. package/.vscode/launch.json +0 -23
  148. package/.vscode/mcp.json +0 -13
  149. package/.vscode/settings.json +0 -16
  150. package/Agent.md +0 -187
  151. package/Debug.md +0 -32
  152. package/Dockerfile +0 -23
  153. package/docs/coding-style.md +0 -30
  154. package/eslint.config.cjs +0 -95
  155. package/src/cli.ts +0 -162
  156. package/src/config-builder.ts +0 -76
  157. package/src/consts.ts +0 -3
  158. package/src/creatio/auth/auth-manager.ts +0 -27
  159. package/src/creatio/auth/auth.ts +0 -31
  160. package/src/creatio/auth/index.ts +0 -3
  161. package/src/creatio/auth/providers/base-oauth2-provider.ts +0 -62
  162. package/src/creatio/auth/providers/base-provider.ts +0 -42
  163. package/src/creatio/auth/providers/index.ts +0 -4
  164. package/src/creatio/auth/providers/legacy-provider.ts +0 -70
  165. package/src/creatio/auth/providers/oauth2-code-provider.ts +0 -252
  166. package/src/creatio/auth/providers/oauth2-provider.ts +0 -91
  167. package/src/creatio/auth/providers/type.ts +0 -5
  168. package/src/creatio/client-config.ts +0 -34
  169. package/src/creatio/engines/crud/crud-engine.ts +0 -47
  170. package/src/creatio/engines/engine-manager.ts +0 -102
  171. package/src/creatio/engines/engine-registry.ts +0 -36
  172. package/src/creatio/engines/engine.ts +0 -3
  173. package/src/creatio/engines/index.ts +0 -7
  174. package/src/creatio/engines/process/process-engine.ts +0 -20
  175. package/src/creatio/engines/sys-settings/sys-settings-engine.ts +0 -41
  176. package/src/creatio/engines/user/user-engine.ts +0 -20
  177. package/src/creatio/index.ts +0 -6
  178. package/src/creatio/provider-context.ts +0 -10
  179. package/src/creatio/providers/crud-provider.ts +0 -45
  180. package/src/creatio/providers/index.ts +0 -4
  181. package/src/creatio/providers/process-provider.ts +0 -15
  182. package/src/creatio/providers/sys-settings-provider.ts +0 -63
  183. package/src/creatio/providers/user-provider.ts +0 -12
  184. package/src/creatio/services/creatio-service-context.ts +0 -38
  185. package/src/creatio/services/http-client.ts +0 -174
  186. package/src/creatio/services/index.ts +0 -7
  187. package/src/creatio/services/metadata-store.ts +0 -181
  188. package/src/creatio/services/odata-crud-provider.ts +0 -210
  189. package/src/creatio/services/process-service-provider.ts +0 -76
  190. package/src/creatio/services/sys-settings-service-provider.ts +0 -192
  191. package/src/creatio/services/user-info-provider.ts +0 -41
  192. package/src/index.ts +0 -44
  193. package/src/log.ts +0 -183
  194. package/src/server/http/creatio-oauth-handlers.ts +0 -146
  195. package/src/server/http/httpServer.ts +0 -150
  196. package/src/server/http/index.ts +0 -5
  197. package/src/server/http/mcp-handlers.ts +0 -92
  198. package/src/server/http/mcp-oauth-handlers.ts +0 -108
  199. package/src/server/http/middleware.ts +0 -91
  200. package/src/server/index.ts +0 -2
  201. package/src/server/mcp/filters.ts +0 -97
  202. package/src/server/mcp/index.ts +0 -1
  203. package/src/server/mcp/prompts-data.ts +0 -896
  204. package/src/server/mcp/server.ts +0 -331
  205. package/src/server/mcp/tools-data.ts +0 -592
  206. package/src/server/oauth/client-manager.ts +0 -47
  207. package/src/server/oauth/index.ts +0 -6
  208. package/src/server/oauth/oauth-server.ts +0 -185
  209. package/src/server/oauth/storage.ts +0 -106
  210. package/src/server/oauth/token-manager.ts +0 -80
  211. package/src/server/oauth/types.ts +0 -55
  212. package/src/server/oauth/validators.ts +0 -56
  213. package/src/services/index.ts +0 -2
  214. package/src/services/session-context.ts +0 -232
  215. package/src/services/token-refresh-scheduler.ts +0 -68
  216. package/src/types/index.ts +0 -1
  217. package/src/types/network.ts +0 -7
  218. package/src/utils/context.ts +0 -49
  219. package/src/utils/env.ts +0 -12
  220. package/src/utils/index.ts +0 -5
  221. package/src/utils/mcp.ts +0 -8
  222. package/src/utils/network.ts +0 -65
  223. package/src/utils/pkce.ts +0 -39
  224. package/src/version.ts +0 -15
  225. package/tsconfig.json +0 -28
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SessionContext = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
7
8
  const log_1 = __importDefault(require("../log"));
8
9
  class SessionContext {
9
10
  static _instance;
@@ -18,8 +19,8 @@ class SessionContext {
18
19
  return SessionContext._instance;
19
20
  }
20
21
  _generateState() {
21
- return (Math.random().toString(36).substring(2, 15) +
22
- Math.random().toString(36).substring(2, 15));
22
+ // Cryptographically secure, unguessable CSRF/state token (CWE-330).
23
+ return crypto_1.default.randomBytes(32).toString('base64url');
23
24
  }
24
25
  createSession(sessionId, userKey, remoteIp) {
25
26
  const session = {
@@ -102,10 +103,11 @@ class SessionContext {
102
103
  async deleteTokensForUser(userKey) {
103
104
  this._userTokens.delete(userKey);
104
105
  }
105
- createOAuthState(userKey) {
106
+ createOAuthState(userKey, sessionId) {
106
107
  const state = this._generateState();
107
108
  const stateInfo = {
108
109
  userKey,
110
+ sessionId,
109
111
  createdAt: Date.now(),
110
112
  expiresAt: Date.now() + 10 * 60 * 1000,
111
113
  };
@@ -122,18 +124,10 @@ class SessionContext {
122
124
  return null;
123
125
  }
124
126
  this._oauthStates.delete(state);
125
- return { userKey: stateInfo.userKey };
127
+ return { userKey: stateInfo.userKey, sessionId: stateInfo.sessionId };
126
128
  }
127
129
  validateAndConsumeOAuthState(state) {
128
- const result = this.validateOAuthState(state);
129
- return result?.userKey;
130
- }
131
- setSessionUserKey(sessionId, userKey) {
132
- const session = this._sessions.get(sessionId);
133
- if (session) {
134
- session.userKey = userKey;
135
- log_1.default.info('session_mapping.set', { sessionId, userKey });
136
- }
130
+ return this.validateOAuthState(state) ?? undefined;
137
131
  }
138
132
  cleanupExpiredOAuthStates() {
139
133
  const now = Date.now();
@@ -156,20 +150,6 @@ class SessionContext {
156
150
  const session = this.createSession(sessionId, userKey, remoteIp);
157
151
  return session;
158
152
  }
159
- mapAllSessionsToUser(userKey) {
160
- const sessionIds = [];
161
- for (const [sessionId, session] of this._sessions.entries()) {
162
- if (session.transport) {
163
- session.userKey = userKey;
164
- sessionIds.push(sessionId);
165
- }
166
- }
167
- log_1.default.info('mapping_all_sessions', {
168
- userKey,
169
- sessionCount: sessionIds.length,
170
- sessionIds,
171
- });
172
- }
173
153
  getStats() {
174
154
  return {
175
155
  sessionsCount: this._sessions.size,
@@ -1 +1 @@
1
- {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/services/session-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/services/session-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "mcp-creatio",
3
- "version": "0.3.10",
3
+ "version": "0.4.1",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "mcp-creatio": "dist/cli.js"
7
7
  },
8
+ "files": [
9
+ "dist"
10
+ ],
8
11
  "scripts": {
9
- "test": "echo \"Error: no test specified\" && exit 1",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
14
+ "test:coverage": "vitest run --coverage",
10
15
  "clean": "rimraf ./dist",
11
16
  "prebuild": "npm run clean",
12
17
  "build": "tsc",
@@ -46,22 +51,26 @@
46
51
  "description": "MCP server for Creatio CRM. Connect Claude Desktop, ChatGPT, and GitHub Copilot to Creatio via Model Context Protocol and OData v4.",
47
52
  "devDependencies": {
48
53
  "@types/express": "5.0.6",
49
- "@types/node": "^25.3.0",
50
- "@typescript-eslint/eslint-plugin": "^8.56.0",
51
- "@typescript-eslint/parser": "^8.56.0",
52
- "eslint": "^9.39.3",
54
+ "@types/node": "^25.9.1",
55
+ "@types/supertest": "^7.2.0",
56
+ "@typescript-eslint/eslint-plugin": "^8.59.4",
57
+ "@typescript-eslint/parser": "^8.59.4",
58
+ "@vitest/coverage-v8": "^4.1.9",
59
+ "eslint": "^9.39.4",
53
60
  "eslint-config-prettier": "^10.1.8",
54
61
  "eslint-plugin-import": "^2.32.0",
55
62
  "eslint-plugin-prettier": "^5.5.5",
56
- "prettier": "^3.8.1",
63
+ "prettier": "^3.8.3",
57
64
  "rimraf": "^6.1.3",
65
+ "supertest": "^7.2.2",
58
66
  "ts-node": "^10.9.2",
59
- "typescript": "^5.9.3"
67
+ "typescript": "^5.9.3",
68
+ "vitest": "^4.1.9"
60
69
  },
61
70
  "dependencies": {
62
- "@modelcontextprotocol/sdk": "^1.26.0",
71
+ "@modelcontextprotocol/sdk": "^1.29.0",
63
72
  "@types/jsonwebtoken": "^9.0.10",
64
- "fast-xml-parser": "^5.3.7",
73
+ "fast-xml-parser": "^5.8.0",
65
74
  "jsonwebtoken": "^9.0.3"
66
75
  }
67
76
  }
package/.dockerignore DELETED
@@ -1,12 +0,0 @@
1
- node_modules
2
- npm-debug.log
3
- Dockerfile*
4
- .dockerignore
5
- .git
6
- .gitignore
7
- .vscode
8
- coverage
9
- dist
10
- *.tsbuildinfo
11
- .eslintcache
12
- .cache
package/.editorconfig DELETED
@@ -1,14 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- charset = utf-8
5
- end_of_line = crlf
6
- insert_final_newline = true
7
- indent_style = tab
8
- indent_size = 4
9
- tab_width = 4
10
-
11
- [*.{ts,tsx,js,jsx,json,md,html,css}]
12
- indent_style = tab
13
- indent_size = 4
14
- tab_width = 4
package/.eslintrc.cjs DELETED
@@ -1,18 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- parser: '@typescript-eslint/parser',
4
- parserOptions: {
5
- project: ['./tsconfig.json'],
6
- tsconfigRootDir: __dirname,
7
- sourceType: 'module',
8
- },
9
- plugins: ['@typescript-eslint', 'prettier'],
10
- extends: [
11
- 'eslint:recommended',
12
- 'plugin:@typescript-eslint/recommended',
13
- 'plugin:prettier/recommended',
14
- ],
15
- rules: {
16
- 'prettier/prettier': 'error',
17
- },
18
- };
package/.gitattributes DELETED
@@ -1,8 +0,0 @@
1
- # Ensure CRLF in repository for these files
2
- * text=auto eol=crlf
3
- *.ts text eol=crlf
4
- *.tsx text eol=crlf
5
- *.js text eol=crlf
6
- *.jsx text eol=crlf
7
- *.json text eol=crlf
8
- *.md text eol=crlf
@@ -1,50 +0,0 @@
1
- name: Docker Build and Publish
2
-
3
- on:
4
- push:
5
- branches: ['main']
6
- tags: ['v*.*.*']
7
- workflow_dispatch:
8
-
9
- jobs:
10
- docker:
11
- runs-on: ubuntu-latest
12
-
13
- permissions:
14
- contents: read
15
- packages: write
16
-
17
- steps:
18
- - name: Checkout
19
- uses: actions/checkout@v4
20
-
21
- - name: Set up QEMU
22
- uses: docker/setup-qemu-action@v3
23
-
24
- - name: Set up Docker Buildx
25
- uses: docker/setup-buildx-action@v3
26
-
27
- - name: Docker Hub login
28
- uses: docker/login-action@v3
29
- with:
30
- username: ${{ secrets.DOCKER_USERNAME }}
31
- password: ${{ secrets.DOCKER_PASSWORD }}
32
-
33
- - name: Compute Docker tags from package.json
34
- id: vars
35
- shell: bash
36
- run: |
37
- VERSION=$(jq -r .version package.json)
38
- if [[ -z "$VERSION" || "$VERSION" == "null" ]]; then
39
- echo "Package version is empty" >&2
40
- exit 1
41
- fi
42
- echo "tags=crackish/mcp-creatio:latest,crackish/mcp-creatio:v${VERSION}" >> $GITHUB_OUTPUT
43
-
44
- - name: Build and push
45
- uses: docker/build-push-action@v6
46
- with:
47
- context: .
48
- push: true
49
- platforms: linux/amd64,linux/arm64
50
- tags: ${{ steps.vars.outputs.tags }}
package/.prettierignore DELETED
@@ -1,3 +0,0 @@
1
- node_modules
2
- dist
3
- coverage
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "printWidth": 100,
3
- "singleQuote": true,
4
- "trailingComma": "all",
5
- "semi": true,
6
- "useTabs": true,
7
- "tabWidth": 4,
8
- "endOfLine": "crlf"
9
- }
@@ -1,23 +0,0 @@
1
- {
2
- "version": "0.2.0",
3
- "configurations": [
4
- {
5
- "name": "Debug MCP Creatio",
6
- "type": "node",
7
- "request": "launch",
8
- "cwd": "${workspaceFolder}",
9
- "runtimeExecutable": "npm",
10
- "runtimeArgs": [
11
- "run",
12
- "start"
13
- ],
14
- "console": "integratedTerminal",
15
- "internalConsoleOptions": "neverOpen",
16
- "env": {
17
- "CREATIO_BASE_URL": "https://your-creatio.com",
18
- "CREATIO_LOGIN": "Supervisor",
19
- "CREATIO_PASSWORD": "Supervisor"
20
- }
21
- }
22
- ]
23
- }
package/.vscode/mcp.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "servers": {
3
- "creatio_local": {
4
- "url": "http://localhost:3000/mcp",
5
- "type": "http"
6
- },
7
- "creatio_demo": {
8
- "url": "http://a_vanikhin:7700/mcp",
9
- "type": "http"
10
- }
11
- },
12
- "inputs": []
13
- }
@@ -1,16 +0,0 @@
1
- {
2
- "editor.formatOnSave": true,
3
- "editor.insertSpaces": false,
4
- "editor.tabSize": 4,
5
- "files.eol": "\r\n",
6
- "files.encoding": "utf8",
7
- "editor.detectIndentation": false,
8
- "[typescript]": {
9
- "editor.defaultFormatter": "esbenp.prettier-vscode"
10
- },
11
- "eslint.validate": ["typescript", "typescriptreact"],
12
- "editor.codeActionsOnSave": {
13
- "source.fixAll": "explicit",
14
- "source.fixAll.eslint": "explicit"
15
- }
16
- }
package/Agent.md DELETED
@@ -1,187 +0,0 @@
1
- # Agent Guide: MCP Creatio Server
2
-
3
- This document is for AI coding agents contributing to this repository. It explains project purpose, architecture, invariants, and safe extension patterns.
4
-
5
- ## 1. Purpose
6
-
7
- An implementation of a Model Context Protocol (MCP) server that exposes Creatio CRM to MCP-compatible AI clients (Claude Desktop, ChatGPT Connectors, GitHub Copilot, etc.).
8
-
9
- Primary goals:
10
-
11
- - Provide stable tool surface for CRUD, schema discovery, business process execution.
12
- - Enforce safe data operations (especially Activities ownership rules, date/time UTC handling).
13
- - Offer prompts that guide LLMs to use Creatio correctly.
14
-
15
- ## 2. High-Level Architecture
16
-
17
- ```
18
- src/
19
- creatio/ ← Low-level Creatio API client & auth providers
20
- server/ ← MCP server + HTTP layer (OAuth server, handlers)
21
- mcp/ ← MCP tool descriptors, prompts, filters builder
22
- oauth/ ← Local OAuth 2.1 authorization server for clients
23
- services/ ← Session/token refresh orchestration
24
- utils/ ← Reusable helpers (env, network, pkce, context)
25
- types/ ← Shared TypeScript interfaces & DTO shapes
26
- ```
27
-
28
- Key flows:
29
-
30
- 1. Client authenticates (legacy credentials OR OAuth2 variants).
31
- 2. MCP server registers tools using descriptors from `server/mcp/tools-data.ts`.
32
- 3. Tool handlers call into `CreatioEngineManager`, which resolves a `CreatioServiceContext` (built from `src/creatio/services/*`) and delegates work to the appropriate provider (CRUD, process, sys-settings, user).
33
- 4. Responses are normalized into MCP content blocks.
34
-
35
- ### Creatio Service Stack (LLM Cheat Sheet)
36
-
37
- ```
38
- CreatioServiceContext
39
- ├─ CreatioAuthManager → selects concrete auth provider (legacy / OAuth2 / OAuth2 code)
40
- ├─ CreatioHttpClient → transport + logging + retry + header helpers
41
- ├─ ODataMetadataStore → caches entity schemas per environment
42
- ├─ ODataCrudProvider → implements CrudProvider using http + metadata
43
- ├─ ProcessServiceProvider → POSTs to ProcessEngineService
44
- ├─ SysSettingsServiceProvider → DataService JSON endpoint
45
- └─ UserInfoProvider → UserInfoService for current user data
46
- ```
47
-
48
- Usage pattern:
49
-
50
- - Handlers never craft raw fetch calls. They work through provider interfaces exposed by the context (`provider.crud`, `provider.process`, etc.).
51
- - If you need a new Creatio capability, add a dedicated provider (or extend an existing one) and wire it up inside `CreatioServiceContext`.
52
- - `CreatioHttpClient` should stay transport-focused (auth headers, retries, timing). Keep endpoint-specific logic inside providers or a dedicated endpoint helper.
53
-
54
- ## 3. Core Modules You Will Touch
55
-
56
- | Area | File(s) | Notes |
57
- | ---------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------ |
58
- | Tool registration | `src/server/mcp/server.ts` | Add/remove tool handlers; keep descriptors in separate file. |
59
- | Tool schemas & text guidance | `src/server/mcp/tools-data.ts` | Use `zod` schemas; detailed descriptions help AI reasoning. |
60
- | Filters logic | `src/server/mcp/filters.ts` | Converts structured JSON filters into OData `$filter` strings. |
61
- | Prompts | `src/server/mcp/prompts-data.ts` | Pre-baked instructional prompts consumed by clients. |
62
- | Creatio API | `src/creatio/services/*` | `CreatioServiceContext` composes auth + http client + providers; extend providers instead of bypassing them. |
63
- | OAuth for clients | `src/server/oauth/*` | Maintains tokens for MCP clients; ephemeral memory by default. |
64
-
65
- ## 4. Invariants & Rules (Do NOT Break)
66
-
67
- 1. All date/time fields passed to Creatio MUST be UTC ISO8601 with `Z` suffix.
68
- 2. Activity creation: Always set `OwnerId` and `AuthorId` to current user's ContactId obtained via `get-current-user-info` unless user explicitly specifies another owner.
69
- 3. Avoid adding blocking network calls in tool descriptors—descriptors must be static; logic belongs in handlers.
70
- 4. Never silently swallow errors coming from Creatio—log via `log.error` then rethrow.
71
- 5. Keep tool names stable: lowercase kebab-case (e.g. `execute-process`).
72
- 6. Keep authentication precedence: Authorization Code > Client Credentials > Legacy.
73
- 7. Do not leak secrets or access tokens in tool responses.
74
- 8. `READONLY_MODE=true` must guarantee no mutation tools (`create`, `update`, `delete`, `execute-process`) are registered.
75
-
76
- ## 5. Adding a New Tool (Checklist)
77
-
78
- 1. Define input shape in `tools-data.ts` using `zod`.
79
- 2. Provide rich description (include examples, edge cases, warnings).
80
- 3. Export descriptor & input schema.
81
- 4. Register in `server.ts` via `_registerHandlerWithDescriptor` (respect readonly mode if mutating).
82
- 5. Implement the handler by calling the appropriate provider on the `CreatioServiceContext` (via `CreatioEngineManager`); if functionality is missing, extend or add a provider under `src/creatio/services` rather than issuing raw fetch calls.
83
- 6. Ensure responses are formatted as `{ content: [{ type: 'text', text: JSON.stringify(result) }] }` when not already MCP native.
84
- 7. Add edge-case validation (empty arrays, invalid GUID, missing required filter fields).
85
- 8. Update documentation (README if public feature; otherwise just Agent.md).
86
-
87
- ## 6. Error Handling Pattern
88
-
89
- - Use `try/catch` in handlers ONLY if you need to wrap/transform the error.
90
- - Log with contextual tag: `log.error('mcp.tool.handler', err)`.
91
- - Throw the original error afterward (MCP layer will relay).
92
- - For validation failures rely on `withValidation(...)` wrapper.
93
-
94
- ## 7. Logging Guidelines
95
-
96
- - Use `log.info('mcp.tool.register', { tool })` when registering tools.
97
- - Use `log.warn` for non-fatal recoverable issues (e.g., partial data fetch).
98
- - Use `log.error` strictly for failures that abort the operation.
99
-
100
- ## 8. Performance Considerations
101
-
102
- - Prefer `select` + `expand` to limit payload size; educate users via descriptor text.
103
- - Batch calls carefully—avoid sequential redundant reads if data already provided.
104
- - Avoid adding expensive synchronous CPU logic inside handlers.
105
-
106
- ## 9. Security & Safety
107
-
108
- - Never echo passwords or client secrets back to clients.
109
- - Strip or mask token-like values if accidentally included in objects.
110
- - Validate GUID format (8-4-4-4-12 hex) when exposing user input into queries.
111
-
112
- ## 10. Testing (Minimal Approach)
113
-
114
- Currently no formal test suite. For quick validation:
115
-
116
- - Start server locally (`npm start`) and manually invoke tools from an MCP client.
117
- - Consider adding lightweight Jest tests for filter builder and client methods (future enhancement).
118
-
119
- ## 11. Versioning & Release
120
-
121
- - Increment `package.json` version; code reads dynamically via `src/version.ts`.
122
- - Use semantic prefixes in commits: `feat:`, `fix:`, `docs:`, `chore:`.
123
- - Tag releases: `git tag vX.Y.Z && git push --tags` (manual unless automated later).
124
-
125
- ## 12. Common Edge Cases
126
-
127
- | Case | Mitigation |
128
- | ----------------------------------------- | -------------------------------------------------------------- |
129
- | Empty `select` array supplied | Preprocess to `undefined` (already handled) |
130
- | Mixed raw `filter` + structured `filters` | Combine with `and` parenthesized in handler |
131
- | Invalid GUID quoting | Provide guidance text + possible pre-validation before sending |
132
- | Large result sets | Encourage `top` param (<200 recommended) |
133
- | Readonly mode attempt to mutate | Ensure mutation tools not registered |
134
-
135
- ## 13. Extending Authentication
136
-
137
- If adding new auth provider:
138
-
139
- 1. Create provider under `src/creatio/auth/providers/` implementing shared interface.
140
- 2. Add selection logic in `auth-manager.ts` maintaining precedence ordering.
141
- 3. Document environment variables clearly in README + Agent.md.
142
-
143
- ## 14. Prompts Extension
144
-
145
- - Add new prompt object in `prompts-data.ts` (`name`, `title`, `description`, `argsSchema`, `callback`).
146
- - Keep names unique and descriptive.
147
- - Avoid external network calls inside prompt callbacks.
148
-
149
- ## 15. Code Style
150
-
151
- Baseline rules live in `docs/coding-style.md`. Highlights:
152
-
153
- - Keep TypeScript strict (avoid `any`, prefer explicit interfaces).
154
- - Follow the class-member ordering guide (readonly fields → fields → getters → setters → constructor → methods, each ordered `private → protected → public`).
155
- - Prefix private fields/methods with `_`.
156
- - Use existing utility wrappers (e.g., `withValidation`).
157
- - Keep functions small; single responsibility.
158
- - Reuse logging tags already established.
159
-
160
- ## 16. What NOT To Do
161
-
162
- - Do not reintroduce removed tools (`search`, `fetch`) unless strong justification & design review.
163
- - Do not bypass `CreatioServiceContext`/providers with raw fetch calls scattered in handlers.
164
- - Do not embed long multi-megabyte payloads in commit history (limit sample data).
165
-
166
- ## 17. Quick Start for Agent Changes
167
-
168
- 1. Make code edits.
169
- 2. Run `npm run build` to ensure TypeScript passes.
170
- 3. Optionally lint: `npm run lint`.
171
- 4. Commit using conventional message.
172
- 5. Push; consider tag if version bump.
173
-
174
- ## 18. Future Enhancements (Suggestions)
175
-
176
- - Add Jest test suite for filter builder + auth flows.
177
- - Implement persistent token storage (e.g., file/Redis) for OAuth tokens.
178
- - Add rate limiting to prevent excessive query load.
179
- - Provide structured error codes instead of raw messages.
180
-
181
- ## 19. Contact Points
182
-
183
- If you need business logic clarification, check existing descriptor guidance first. Many patterns (date handling, ownership) are documented inline in `tools-data.ts`.
184
-
185
- ---
186
-
187
- **Summary:** Focus on safe MCP tool extension around Creatio CRM. Preserve invariants, keep descriptors rich, centralize API interactions, and avoid leaking credentials.
package/Debug.md DELETED
@@ -1,32 +0,0 @@
1
- # Debug Guide
2
-
3
- ## PowerShell ISE Quick Start
4
-
5
- 1. Open **Windows PowerShell ISE (x64)** with the working directory set to the project root.
6
- 2. Copy the snippet below into a new script tab (for example, save it as `debug-creatio.ps1`).
7
- 3. Update the placeholder values to match your Creatio instance.
8
- 4. Press `F5` (or click **Run Script**) to launch the server with the desired environment.
9
-
10
- ```powershell
11
- # debug-creatio.ps1
12
- # Sets temporary environment variables for the current ISE session
13
- # and starts the MCP Creatio server in development mode.
14
-
15
- $env:CREATIO_BASE_URL = "https://your-creatio.com"
16
- $env:CREATIO_LOGIN = "your_login"
17
- $env:CREATIO_PASSWORD = "your_password"
18
-
19
- # Optional: adjust logging verbosity or other flags here
20
- # $env:LOG_LEVEL = "debug"
21
-
22
- # Start the server with the configured environment
23
- npm start
24
- ```
25
-
26
- ### Notes
27
-
28
- - Environment variables assigned with `$env:` live only for the current ISE session; close the session to clear them.
29
- - If you prefer reusable configuration, convert the snippet into a standalone `.ps1` file and commit the real credentials to a secure secrets manager instead of the repository.
30
- - When debugging authentication, consider leveraging the existing logging utilities in `src/log.ts` to inspect token exchange flows.
31
- - For deeper tracing (e.g., OAuth callback handling), set breakpoints in `src/server/http/creatio-oauth-handlers.ts` and `src/server/mcp/server.ts` before running the script.
32
- - The `Debug MCP Creatio` configuration in `.vscode/launch.json` mirrors these environment variables; adjust the placeholder values there to attach VS Code's debugger directly to `npm start`.
package/Dockerfile DELETED
@@ -1,23 +0,0 @@
1
- # Minimal Dockerfile for MCP Creatio Server
2
- # Builds and runs with ts-node (no separate build step)
3
-
4
- FROM node:20-alpine AS base
5
-
6
- # App directory
7
- WORKDIR /app
8
-
9
- # Install production and dev deps (ts-node, types)
10
- COPY package.json package-lock.json* ./
11
- RUN npm ci || npm install
12
-
13
- # Copy source
14
- COPY . .
15
-
16
- # Environment (override at runtime)
17
- ENV PORT=3000
18
-
19
- # Expose MCP HTTP port
20
- EXPOSE 3000
21
-
22
- # Start the server (ts-node)
23
- CMD ["npm", "run", "start"]
@@ -1,30 +0,0 @@
1
- # Coding Style Guide
2
-
3
- This guide defines the class/member layout used across the project so every contributor (human or LLM) can keep the codebase consistent and easy to read.
4
-
5
- ## Class Member Ordering
6
-
7
- Group class members in the following order. Within each group sort by access level: `private` → `protected` → `public`.
8
-
9
- 1. **Fields (readonly)** – immutable state declared with `readonly`.
10
- 2. **Fields** – mutable fields.
11
- 3. **Properties (getters only)**.
12
- 4. **Properties with setters** – getter/setter pairs.
13
- 5. **Constructors**.
14
- 6. **Methods** – regular functions (again `private`, `protected`, `public`).
15
-
16
- Additional rules:
17
-
18
- - Prefix all private fields and methods with `_` (e.g., `_cache`, `_buildRequest`).
19
- - Prefer `protected` for members intended for subclasses, otherwise keep them `private` or `public`.
20
- - Avoid interleaving unrelated helper functions; keep the order strict even when a method depends on another declared later.
21
- - Use whitespace between groups to keep sections visually distinct.
22
-
23
- ## Clean Code Expectations
24
-
25
- - Keep methods small and single-purpose. Extract helpers rather than nesting complex logic.
26
- - Use descriptive names; avoid abbreviations unless they are domain-specific and already established.
27
- - Log through the shared `log` helper. Never swallow errors silently.
28
- - Adhere to existing TypeScript strictness (no implicit `any`).
29
-
30
- When updating or creating a class, run through this list to ensure the structure matches before submitting changes.