mcp4openapi 0.3.0 → 0.3.3

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 (81) hide show
  1. package/README.md +7 -0
  2. package/dist/src/auth/oauth-provider.d.ts.map +1 -1
  3. package/dist/src/auth/oauth-provider.js +5 -2
  4. package/dist/src/auth/oauth-provider.js.map +1 -1
  5. package/dist/src/core/cli-config.d.ts.map +1 -1
  6. package/dist/src/core/cli-config.js +3 -0
  7. package/dist/src/core/cli-config.js.map +1 -1
  8. package/dist/src/core/index.d.ts.map +1 -1
  9. package/dist/src/core/index.js +19 -3
  10. package/dist/src/core/index.js.map +1 -1
  11. package/dist/src/generated-schemas.d.ts +45 -0
  12. package/dist/src/generated-schemas.d.ts.map +1 -1
  13. package/dist/src/generated-schemas.js +3 -0
  14. package/dist/src/generated-schemas.js.map +1 -1
  15. package/dist/src/openapi/openapi-parser.d.ts.map +1 -1
  16. package/dist/src/openapi/openapi-parser.js +22 -0
  17. package/dist/src/openapi/openapi-parser.js.map +1 -1
  18. package/dist/src/profile/profile-allowlist.d.ts +18 -0
  19. package/dist/src/profile/profile-allowlist.d.ts.map +1 -0
  20. package/dist/src/profile/profile-allowlist.js +68 -0
  21. package/dist/src/profile/profile-allowlist.js.map +1 -0
  22. package/dist/src/profile/profile-loader.d.ts.map +1 -1
  23. package/dist/src/profile/profile-loader.js +8 -1
  24. package/dist/src/profile/profile-loader.js.map +1 -1
  25. package/dist/src/profile/profile-registry.d.ts +7 -1
  26. package/dist/src/profile/profile-registry.d.ts.map +1 -1
  27. package/dist/src/profile/profile-registry.js +49 -8
  28. package/dist/src/profile/profile-registry.js.map +1 -1
  29. package/dist/src/profile/profile-resolver.d.ts +16 -0
  30. package/dist/src/profile/profile-resolver.d.ts.map +1 -1
  31. package/dist/src/profile/profile-resolver.js +120 -0
  32. package/dist/src/profile/profile-resolver.js.map +1 -1
  33. package/dist/src/tooling/composite-executor.d.ts.map +1 -1
  34. package/dist/src/tooling/composite-executor.js +7 -2
  35. package/dist/src/tooling/composite-executor.js.map +1 -1
  36. package/dist/src/tooling/proxy-executor.d.ts.map +1 -1
  37. package/dist/src/tooling/proxy-executor.js +4 -0
  38. package/dist/src/tooling/proxy-executor.js.map +1 -1
  39. package/dist/src/tooling/tool-generator.d.ts.map +1 -1
  40. package/dist/src/tooling/tool-generator.js +36 -3
  41. package/dist/src/tooling/tool-generator.js.map +1 -1
  42. package/dist/src/transport/http-transport-config.d.ts.map +1 -1
  43. package/dist/src/transport/http-transport-config.js +1 -0
  44. package/dist/src/transport/http-transport-config.js.map +1 -1
  45. package/dist/src/transport/http-transport.d.ts +5 -0
  46. package/dist/src/transport/http-transport.d.ts.map +1 -1
  47. package/dist/src/transport/http-transport.js +63 -1
  48. package/dist/src/transport/http-transport.js.map +1 -1
  49. package/dist/src/transport/profile-index.d.ts +84 -0
  50. package/dist/src/transport/profile-index.d.ts.map +1 -0
  51. package/dist/src/transport/profile-index.js +405 -0
  52. package/dist/src/transport/profile-index.js.map +1 -0
  53. package/dist/src/types/http-transport.d.ts +1 -0
  54. package/dist/src/types/http-transport.d.ts.map +1 -1
  55. package/dist/src/types/openapi.d.ts +3 -0
  56. package/dist/src/types/openapi.d.ts.map +1 -1
  57. package/dist/src/types/profile.d.ts +3 -0
  58. package/dist/src/types/profile.d.ts.map +1 -1
  59. package/dist/src/validation/validation-utils.d.ts.map +1 -1
  60. package/dist/src/validation/validation-utils.js +1 -0
  61. package/dist/src/validation/validation-utils.js.map +1 -1
  62. package/html/profile-index.html +386 -0
  63. package/package.json +3 -2
  64. package/profile-schema.json +14 -0
  65. package/profiles/gitlab/developer-profile-oauth.json +244 -42
  66. package/profiles/gitlab/developer-profile-oauth.test.json +1009 -5
  67. package/profiles/gitlab/openapi.yaml +1419 -164
  68. package/profiles/gitlab/profile-optimized-oauth.json +785 -0
  69. package/profiles/gitlab/profile-optimized-oauth.test.json +1566 -0
  70. package/profiles/grafana/openapi.json +28078 -0
  71. package/profiles/grafana/profile.json +1083 -0
  72. package/profiles/grafana/profile.test.json +235 -0
  73. package/profiles/mattermost/openapi.yaml +27434 -0
  74. package/profiles/mattermost/profile.json +463 -0
  75. package/profiles/mattermost/profile.test.json +607 -0
  76. package/profiles/n8n/profile-optimized.json +1002 -364
  77. package/profiles/n8n/profile-optimized.test.json +43 -43
  78. package/profiles/n8n/profile.json +1 -1
  79. package/profiles/n8n-nodes/profile-nodes.json +1 -1
  80. package/profiles/semgrep/profile.json +1 -1
  81. package/profiles/youtrack/profile.json +1 -1
@@ -0,0 +1,463 @@
1
+ {
2
+ "$schema": "../../profile-schema.json",
3
+ "profile_name": "mattermost",
4
+ "profile_id": "mattermost",
5
+ "profile_aliases": ["mattermost-default"],
6
+ "openapi_spec_path": "./openapi.yaml",
7
+ "description": "CRUD tools for Mattermost users, teams, channels, posts, files, reactions, and threads.",
8
+
9
+ "parameter_aliases": {
10
+ "id": ["user_id", "team_id", "channel_id", "post_id", "file_id", "thread_id"],
11
+ "user_id": ["user", "uid"],
12
+ "team_id": ["team"],
13
+ "channel_id": ["channel"],
14
+ "post_id": ["post"],
15
+ "file_id": ["file"],
16
+ "thread_id": ["thread"]
17
+ },
18
+
19
+ "tools": [
20
+ {
21
+ "name": "create_content",
22
+ "description": "Create Mattermost content. Actions: 'create_user', 'create_team', 'create_channel', 'create_post', 'upload_file', 'save_reaction'.",
23
+ "metadata_params": ["action"],
24
+ "operations": {
25
+ "create_user": "CreateUser",
26
+ "create_team": "CreateTeam",
27
+ "create_channel": "CreateChannel",
28
+ "create_post": "CreatePost",
29
+ "upload_file": "UploadFile",
30
+ "save_reaction": "SaveReaction"
31
+ },
32
+ "parameters": {
33
+ "action": {
34
+ "type": "string",
35
+ "enum": ["create_user", "create_team", "create_channel", "create_post", "upload_file", "save_reaction"],
36
+ "description": "Action to perform",
37
+ "required": true
38
+ },
39
+ "email": {
40
+ "type": "string",
41
+ "description": "User email",
42
+ "required_for": ["create_user"]
43
+ },
44
+ "username": {
45
+ "type": "string",
46
+ "description": "User username",
47
+ "required_for": ["create_user"]
48
+ },
49
+ "password": {
50
+ "type": "string",
51
+ "description": "User password",
52
+ "required_for": ["create_user"]
53
+ },
54
+ "first_name": {
55
+ "type": "string",
56
+ "description": "User first name"
57
+ },
58
+ "last_name": {
59
+ "type": "string",
60
+ "description": "User last name"
61
+ },
62
+ "nickname": {
63
+ "type": "string",
64
+ "description": "User nickname"
65
+ },
66
+ "locale": {
67
+ "type": "string",
68
+ "description": "User locale"
69
+ },
70
+ "name": {
71
+ "type": "string",
72
+ "description": "Team or channel name",
73
+ "required_for": ["create_team", "create_channel"]
74
+ },
75
+ "display_name": {
76
+ "type": "string",
77
+ "description": "Display name",
78
+ "required_for": ["create_team", "create_channel"]
79
+ },
80
+ "type": {
81
+ "type": "string",
82
+ "description": "Team or channel type (e.g., O for open, P for private)",
83
+ "required_for": ["create_team", "create_channel"]
84
+ },
85
+ "description": {
86
+ "type": "string",
87
+ "description": "Team description"
88
+ },
89
+ "team_id": {
90
+ "type": "string",
91
+ "description": "Team ID",
92
+ "required_for": ["create_channel"]
93
+ },
94
+ "purpose": {
95
+ "type": "string",
96
+ "description": "Channel purpose"
97
+ },
98
+ "header": {
99
+ "type": "string",
100
+ "description": "Channel header"
101
+ },
102
+ "channel_id": {
103
+ "type": "string",
104
+ "description": "Channel ID",
105
+ "required_for": ["create_post", "upload_file"]
106
+ },
107
+ "message": {
108
+ "type": "string",
109
+ "description": "Post message",
110
+ "required_for": ["create_post"]
111
+ },
112
+ "root_id": {
113
+ "type": "string",
114
+ "description": "Root post ID for threads"
115
+ },
116
+ "file_ids": {
117
+ "type": "array",
118
+ "items": { "type": "string" },
119
+ "description": "File IDs to attach to a post"
120
+ },
121
+ "props": {
122
+ "type": "object",
123
+ "description": "Post props (custom JSON)",
124
+ "properties": {}
125
+ },
126
+ "files": {
127
+ "type": "string",
128
+ "description": "Binary file contents (multipart/form-data)",
129
+ "required_for": ["upload_file"]
130
+ },
131
+ "filename": {
132
+ "type": "string",
133
+ "description": "File name (optional for upload)"
134
+ },
135
+ "client_ids": {
136
+ "type": "string",
137
+ "description": "Client IDs for upload correlation"
138
+ },
139
+ "post_id": {
140
+ "type": "string",
141
+ "description": "Post ID",
142
+ "required_for": ["save_reaction"]
143
+ },
144
+ "user_id": {
145
+ "type": "string",
146
+ "description": "User ID",
147
+ "required_for": ["save_reaction"]
148
+ },
149
+ "emoji_name": {
150
+ "type": "string",
151
+ "description": "Emoji name",
152
+ "required_for": ["save_reaction"]
153
+ }
154
+ }
155
+ },
156
+
157
+ {
158
+ "name": "retrieve_content",
159
+ "description": "Retrieve Mattermost content. Actions: 'list_users', 'get_user', 'list_teams', 'get_team', 'list_channels', 'get_channel', 'list_posts_for_channel', 'get_post', 'get_post_thread', 'get_user_threads', 'get_user_thread', 'get_file_infos_for_post', 'get_file_info', 'get_file', 'get_file_thumbnail', 'get_file_preview', 'get_file_link', 'get_reactions'.",
160
+ "metadata_params": ["action"],
161
+ "operations": {
162
+ "list_users": "GetUsers",
163
+ "get_user": "GetUser",
164
+ "list_teams": "GetAllTeams",
165
+ "get_team": "GetTeam",
166
+ "list_channels": "GetAllChannels",
167
+ "get_channel": "GetChannel",
168
+ "list_posts_for_channel": "GetPostsForChannel",
169
+ "get_post": "GetPost",
170
+ "get_post_thread": "GetPostThread",
171
+ "get_user_threads": "GetUserThreads",
172
+ "get_user_thread": "GetUserThread",
173
+ "get_file_infos_for_post": "GetFileInfosForPost",
174
+ "get_file_info": "GetFileInfo",
175
+ "get_file": "GetFile",
176
+ "get_file_thumbnail": "GetFileThumbnail",
177
+ "get_file_preview": "GetFilePreview",
178
+ "get_file_link": "GetFileLink",
179
+ "get_reactions": "GetReactions"
180
+ },
181
+ "response_fields": {
182
+ "list_users": ["id", "username", "email", "first_name", "last_name", "nickname", "create_at", "update_at"],
183
+ "get_user": ["id", "username", "email", "first_name", "last_name", "nickname", "create_at", "update_at"],
184
+ "list_teams": ["id", "name", "display_name", "type", "description", "create_at", "update_at"],
185
+ "get_team": ["id", "name", "display_name", "type", "description", "create_at", "update_at"],
186
+ "list_channels": ["id", "team_id", "name", "display_name", "type", "purpose", "header", "create_at", "update_at", "delete_at"],
187
+ "get_channel": ["id", "team_id", "name", "display_name", "type", "purpose", "header", "create_at", "update_at", "delete_at"],
188
+ "list_posts_for_channel": ["order", "posts"],
189
+ "get_post": ["id", "channel_id", "message", "user_id", "root_id", "create_at", "update_at", "delete_at"],
190
+ "get_post_thread": ["order", "posts"],
191
+ "get_user_threads": ["threads", "total", "unread_mentions_per_channel", "unread_replies_per_channel"],
192
+ "get_user_thread": ["id", "reply_count", "participants", "last_reply_at", "last_viewed_at", "post"]
193
+ },
194
+ "parameters": {
195
+ "action": {
196
+ "type": "string",
197
+ "enum": ["list_users", "get_user", "list_teams", "get_team", "list_channels", "get_channel", "list_posts_for_channel", "get_post", "get_post_thread", "get_user_threads", "get_user_thread", "get_file_infos_for_post", "get_file_info", "get_file", "get_file_thumbnail", "get_file_preview", "get_file_link", "get_reactions"],
198
+ "description": "Action to perform",
199
+ "required": true
200
+ },
201
+ "user_id": {
202
+ "type": "string",
203
+ "description": "User ID",
204
+ "required_for": ["get_user", "get_user_threads", "get_user_thread"]
205
+ },
206
+ "team_id": {
207
+ "type": "string",
208
+ "description": "Team ID",
209
+ "required_for": ["get_user_threads", "get_user_thread"]
210
+ },
211
+ "channel_id": {
212
+ "type": "string",
213
+ "description": "Channel ID",
214
+ "required_for": ["list_posts_for_channel"]
215
+ },
216
+ "post_id": {
217
+ "type": "string",
218
+ "description": "Post ID",
219
+ "required_for": ["get_post", "get_post_thread", "get_file_infos_for_post", "get_reactions"]
220
+ },
221
+ "thread_id": {
222
+ "type": "string",
223
+ "description": "Thread ID",
224
+ "required_for": ["get_user_thread"]
225
+ },
226
+ "file_id": {
227
+ "type": "string",
228
+ "description": "File ID",
229
+ "required_for": ["get_file_info", "get_file", "get_file_thumbnail", "get_file_preview", "get_file_link"]
230
+ },
231
+ "page": {
232
+ "type": "integer",
233
+ "description": "Page number (0-indexed)",
234
+ "default": 0
235
+ },
236
+ "per_page": {
237
+ "type": "integer",
238
+ "description": "Items per page",
239
+ "default": 60
240
+ },
241
+ "since": {
242
+ "type": "integer",
243
+ "description": "Filter by updated timestamp (threads)"
244
+ }
245
+ }
246
+ },
247
+
248
+ {
249
+ "name": "update_content",
250
+ "description": "Update Mattermost content. Actions: 'update_user', 'patch_user', 'update_team', 'update_channel', 'update_post', 'update_threads_read', 'update_thread_read', 'set_thread_unread', 'start_following_thread', 'move_thread'.",
251
+ "metadata_params": ["action"],
252
+ "operations": {
253
+ "update_user": "UpdateUser",
254
+ "patch_user": "PatchUser",
255
+ "update_team": "UpdateTeam",
256
+ "update_channel": "UpdateChannel",
257
+ "update_post": "UpdatePost",
258
+ "update_threads_read": "UpdateThreadsReadForUser",
259
+ "update_thread_read": "UpdateThreadReadForUser",
260
+ "set_thread_unread": "SetThreadUnreadByPostId",
261
+ "start_following_thread": "StartFollowingThread",
262
+ "move_thread": "MoveThread"
263
+ },
264
+ "response_fields": {
265
+ "update_user": ["id", "username", "email", "first_name", "last_name", "nickname", "create_at", "update_at"],
266
+ "patch_user": ["id", "username", "email", "first_name", "last_name", "nickname", "create_at", "update_at"],
267
+ "update_team": ["id", "name", "display_name", "type", "description", "create_at", "update_at"],
268
+ "update_channel": ["id", "team_id", "name", "display_name", "type", "purpose", "header", "create_at", "update_at", "delete_at"],
269
+ "update_post": ["id", "channel_id", "message", "user_id", "root_id", "create_at", "update_at", "delete_at"]
270
+ },
271
+ "parameters": {
272
+ "action": {
273
+ "type": "string",
274
+ "enum": ["update_user", "patch_user", "update_team", "update_channel", "update_post", "update_threads_read", "update_thread_read", "set_thread_unread", "start_following_thread", "move_thread"],
275
+ "description": "Action to perform",
276
+ "required": true
277
+ },
278
+ "user_id": {
279
+ "type": "string",
280
+ "description": "User ID",
281
+ "required_for": ["update_user", "patch_user", "update_threads_read", "update_thread_read", "set_thread_unread", "start_following_thread"]
282
+ },
283
+ "team_id": {
284
+ "type": "string",
285
+ "description": "Team ID",
286
+ "required_for": ["update_team", "update_threads_read", "update_thread_read", "set_thread_unread", "start_following_thread"]
287
+ },
288
+ "channel_id": {
289
+ "type": "string",
290
+ "description": "Channel ID",
291
+ "required_for": ["update_channel", "move_thread"]
292
+ },
293
+ "post_id": {
294
+ "type": "string",
295
+ "description": "Post ID",
296
+ "required_for": ["update_post", "set_thread_unread", "move_thread"]
297
+ },
298
+ "thread_id": {
299
+ "type": "string",
300
+ "description": "Thread ID",
301
+ "required_for": ["update_thread_read", "set_thread_unread", "start_following_thread"]
302
+ },
303
+ "timestamp": {
304
+ "type": "string",
305
+ "description": "Read timestamp",
306
+ "required_for": ["update_thread_read"]
307
+ },
308
+ "message": {
309
+ "type": "string",
310
+ "description": "Updated post message",
311
+ "required_for": ["update_post"]
312
+ },
313
+ "id": {
314
+ "type": "string",
315
+ "description": "Resource ID",
316
+ "required_for": ["update_user", "update_team", "update_channel", "update_post"]
317
+ },
318
+ "props": {
319
+ "type": "object",
320
+ "description": "Post props (custom JSON)",
321
+ "properties": {}
322
+ },
323
+ "email": {
324
+ "type": "string",
325
+ "description": "User email"
326
+ },
327
+ "username": {
328
+ "type": "string",
329
+ "description": "User username",
330
+ "required_for": ["update_user"]
331
+ },
332
+ "first_name": {
333
+ "type": "string",
334
+ "description": "User first name"
335
+ },
336
+ "last_name": {
337
+ "type": "string",
338
+ "description": "User last name"
339
+ },
340
+ "nickname": {
341
+ "type": "string",
342
+ "description": "User nickname"
343
+ },
344
+ "display_name": {
345
+ "type": "string",
346
+ "description": "Display name"
347
+ },
348
+ "name": {
349
+ "type": "string",
350
+ "description": "Name"
351
+ },
352
+ "type": {
353
+ "type": "string",
354
+ "description": "Team or channel type (e.g., O for open, P for private)"
355
+ },
356
+ "description": {
357
+ "type": "string",
358
+ "description": "Description",
359
+ "required_for": ["update_team"]
360
+ },
361
+ "company_name": {
362
+ "type": "string",
363
+ "description": "Company name",
364
+ "required_for": ["update_team"]
365
+ },
366
+ "allowed_domains": {
367
+ "type": "string",
368
+ "description": "Allowed domains (comma-separated)",
369
+ "required_for": ["update_team"]
370
+ },
371
+ "invite_id": {
372
+ "type": "string",
373
+ "description": "Invite ID",
374
+ "required_for": ["update_team"]
375
+ },
376
+ "allow_open_invite": {
377
+ "type": "string",
378
+ "description": "Allow open invite (string per OpenAPI spec)",
379
+ "required_for": ["update_team"]
380
+ },
381
+ "purpose": {
382
+ "type": "string",
383
+ "description": "Channel purpose"
384
+ },
385
+ "header": {
386
+ "type": "string",
387
+ "description": "Channel header"
388
+ }
389
+ }
390
+ },
391
+
392
+ {
393
+ "name": "delete_content",
394
+ "description": "Delete Mattermost content. Actions: 'delete_user', 'delete_team', 'delete_channel', 'delete_post', 'delete_reaction', 'stop_following_thread'.",
395
+ "metadata_params": ["action"],
396
+ "operations": {
397
+ "delete_user": "DeleteUser",
398
+ "delete_team": "SoftDeleteTeam",
399
+ "delete_channel": "DeleteChannel",
400
+ "delete_post": "DeletePost",
401
+ "delete_reaction": "DeleteReaction",
402
+ "stop_following_thread": "StopFollowingThread"
403
+ },
404
+ "parameters": {
405
+ "action": {
406
+ "type": "string",
407
+ "enum": ["delete_user", "delete_team", "delete_channel", "delete_post", "delete_reaction", "stop_following_thread"],
408
+ "description": "Action to perform",
409
+ "required": true
410
+ },
411
+ "user_id": {
412
+ "type": "string",
413
+ "description": "User ID",
414
+ "required_for": ["delete_user", "delete_reaction", "stop_following_thread"]
415
+ },
416
+ "team_id": {
417
+ "type": "string",
418
+ "description": "Team ID",
419
+ "required_for": ["delete_team", "stop_following_thread"]
420
+ },
421
+ "channel_id": {
422
+ "type": "string",
423
+ "description": "Channel ID",
424
+ "required_for": ["delete_channel"]
425
+ },
426
+ "post_id": {
427
+ "type": "string",
428
+ "description": "Post ID",
429
+ "required_for": ["delete_post", "delete_reaction"]
430
+ },
431
+ "emoji_name": {
432
+ "type": "string",
433
+ "description": "Emoji name",
434
+ "required_for": ["delete_reaction"]
435
+ },
436
+ "thread_id": {
437
+ "type": "string",
438
+ "description": "Thread ID",
439
+ "required_for": ["stop_following_thread"]
440
+ }
441
+ }
442
+ }
443
+ ],
444
+
445
+ "interceptors": {
446
+ "auth": {
447
+ "type": "bearer",
448
+ "value_from_env": "MATTERMOST_TOKEN"
449
+ },
450
+ "base_url": {
451
+ "value_from_env": "MATTERMOST_API_BASE_URL",
452
+ "default": "http://localhost:8065/api/v4"
453
+ },
454
+ "rate_limit": {
455
+ "max_requests_per_minute": 600
456
+ },
457
+ "retry": {
458
+ "max_attempts": 3,
459
+ "backoff_ms": [1000, 2000, 4000],
460
+ "retry_on_status": [429, 500, 502, 503, 504]
461
+ }
462
+ }
463
+ }