@wix/mcp 1.0.7 → 1.0.9

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 (122) hide show
  1. package/README.md +99 -95
  2. package/build/bin-standalone.js +16434 -0
  3. package/build/bin-standalone.js.map +7 -0
  4. package/build/cjs/index.js +24140 -0
  5. package/build/cjs/index.js.map +7 -0
  6. package/build/dts/api-call/index.d.ts +4 -0
  7. package/build/dts/api-call/index.d.ts.map +1 -0
  8. package/build/dts/api-call/index.js +150 -0
  9. package/build/dts/api-call/index.js.map +1 -0
  10. package/build/dts/auth/index.d.ts +6 -0
  11. package/build/dts/auth/index.d.ts.map +1 -0
  12. package/build/dts/auth/index.js +2 -0
  13. package/build/dts/auth/index.js.map +1 -0
  14. package/build/{bin.d.ts → dts/bin.d.ts} +3 -2
  15. package/build/dts/bin.d.ts.map +1 -0
  16. package/build/dts/bin.js +108 -0
  17. package/build/dts/bin.js.map +1 -0
  18. package/build/dts/cli-tools/cli.d.ts +5 -0
  19. package/build/dts/cli-tools/cli.d.ts.map +1 -0
  20. package/build/dts/cli-tools/cli.js +340 -0
  21. package/build/dts/cli-tools/cli.js.map +1 -0
  22. package/build/{cli-tools → dts/cli-tools}/utils.d.ts +1 -0
  23. package/build/dts/cli-tools/utils.d.ts.map +1 -0
  24. package/build/dts/cli-tools/utils.js +26 -0
  25. package/build/dts/cli-tools/utils.js.map +1 -0
  26. package/build/{docs → dts/docs}/docs.d.ts +1 -0
  27. package/build/dts/docs/docs.d.ts.map +1 -0
  28. package/build/dts/docs/docs.js +438 -0
  29. package/build/dts/docs/docs.js.map +1 -0
  30. package/build/dts/docs/fetch-article.d.ts +3 -0
  31. package/build/dts/docs/fetch-article.d.ts.map +1 -0
  32. package/build/dts/docs/fetch-article.js +20 -0
  33. package/build/dts/docs/fetch-article.js.map +1 -0
  34. package/build/dts/docs/get-to-know.d.ts +3 -0
  35. package/build/dts/docs/get-to-know.d.ts.map +1 -0
  36. package/build/dts/docs/get-to-know.js +42 -0
  37. package/build/dts/docs/get-to-know.js.map +1 -0
  38. package/build/{docs → dts/docs}/long-content.d.ts +1 -0
  39. package/build/dts/docs/long-content.d.ts.map +1 -0
  40. package/build/dts/docs/long-content.js +2 -0
  41. package/build/dts/docs/long-content.js.map +1 -0
  42. package/build/{docs → dts/docs}/semanticSearch.d.ts +1 -0
  43. package/build/dts/docs/semanticSearch.d.ts.map +1 -0
  44. package/build/dts/docs/semanticSearch.js +109 -0
  45. package/build/dts/docs/semanticSearch.js.map +1 -0
  46. package/build/dts/docs/semanticSearch.test.d.ts +2 -0
  47. package/build/dts/docs/semanticSearch.test.d.ts.map +1 -0
  48. package/build/dts/docs/semanticSearch.test.js +460 -0
  49. package/build/dts/docs/semanticSearch.test.js.map +1 -0
  50. package/build/{index.d.ts → dts/index.d.ts} +3 -0
  51. package/build/dts/index.d.ts.map +1 -0
  52. package/build/dts/index.js +8 -0
  53. package/build/dts/index.js.map +1 -0
  54. package/build/dts/infra/bi-logger.d.ts +3 -0
  55. package/build/dts/infra/bi-logger.d.ts.map +1 -0
  56. package/build/dts/infra/bi-logger.js +11 -0
  57. package/build/dts/infra/bi-logger.js.map +1 -0
  58. package/build/dts/infra/environment.d.ts +10 -0
  59. package/build/dts/infra/environment.d.ts.map +1 -0
  60. package/build/dts/infra/environment.js +28 -0
  61. package/build/dts/infra/environment.js.map +1 -0
  62. package/build/{logger.d.ts → dts/infra/logger.d.ts} +1 -0
  63. package/build/dts/infra/logger.d.ts.map +1 -0
  64. package/build/dts/infra/logger.js +62 -0
  65. package/build/dts/infra/logger.js.map +1 -0
  66. package/build/dts/infra/panorama.d.ts +8 -0
  67. package/build/dts/infra/panorama.d.ts.map +1 -0
  68. package/build/dts/infra/panorama.js +36 -0
  69. package/build/dts/infra/panorama.js.map +1 -0
  70. package/build/dts/infra/sentry.d.ts +2 -0
  71. package/build/dts/infra/sentry.d.ts.map +1 -0
  72. package/build/dts/infra/sentry.js +11 -0
  73. package/build/dts/infra/sentry.js.map +1 -0
  74. package/build/{interactive-command-tools → dts/interactive-command-tools}/eventually.d.ts +1 -0
  75. package/build/dts/interactive-command-tools/eventually.d.ts.map +1 -0
  76. package/build/dts/interactive-command-tools/eventually.js +16 -0
  77. package/build/dts/interactive-command-tools/eventually.js.map +1 -0
  78. package/build/{interactive-command-tools → dts/interactive-command-tools}/handleStdout.d.ts +1 -0
  79. package/build/dts/interactive-command-tools/handleStdout.d.ts.map +1 -0
  80. package/build/dts/interactive-command-tools/handleStdout.js +76 -0
  81. package/build/dts/interactive-command-tools/handleStdout.js.map +1 -0
  82. package/build/{interactive-command-tools → dts/interactive-command-tools}/interactive-command-utils.d.ts +1 -0
  83. package/build/dts/interactive-command-tools/interactive-command-utils.d.ts.map +1 -0
  84. package/build/dts/interactive-command-tools/interactive-command-utils.js +76 -0
  85. package/build/dts/interactive-command-tools/interactive-command-utils.js.map +1 -0
  86. package/build/{resources → dts/resources}/docs.d.ts +1 -0
  87. package/build/dts/resources/docs.d.ts.map +1 -0
  88. package/build/dts/resources/docs.js +46 -0
  89. package/build/dts/resources/docs.js.map +1 -0
  90. package/build/{support → dts/support}/index.d.ts +1 -0
  91. package/build/dts/support/index.d.ts.map +1 -0
  92. package/build/dts/support/index.js +33 -0
  93. package/build/dts/support/index.js.map +1 -0
  94. package/build/dts/tool-utils.d.ts +3 -0
  95. package/build/dts/tool-utils.d.ts.map +1 -0
  96. package/build/dts/tool-utils.js +31 -0
  97. package/build/dts/tool-utils.js.map +1 -0
  98. package/build/dts/tool-utils.spec.d.ts +2 -0
  99. package/build/dts/tool-utils.spec.d.ts.map +1 -0
  100. package/build/dts/tool-utils.spec.js +100 -0
  101. package/build/dts/tool-utils.spec.js.map +1 -0
  102. package/build/{wix-mcp-server.d.ts → dts/wix-mcp-server.d.ts} +13 -1
  103. package/build/dts/wix-mcp-server.d.ts.map +1 -0
  104. package/build/dts/wix-mcp-server.js +115 -0
  105. package/build/dts/wix-mcp-server.js.map +1 -0
  106. package/build/esm/index.js +18898 -0
  107. package/build/esm/index.js.map +7 -0
  108. package/package.json +19 -11
  109. package/bin.js +0 -2
  110. package/build/api-call/index.d.ts +0 -2
  111. package/build/bin.js +0 -681
  112. package/build/bin.js.map +0 -7
  113. package/build/chunk-QGIZNLF4.js +0 -8179
  114. package/build/chunk-QGIZNLF4.js.map +0 -7
  115. package/build/cli-tools/cli.d.ts +0 -4
  116. package/build/docs/semanticSearch.test.d.ts +0 -1
  117. package/build/index.js +0 -201
  118. package/build/index.js.map +0 -7
  119. package/build/panorama.d.ts +0 -2
  120. package/build/sentry.d.ts +0 -1
  121. package/build/tool-utils.d.ts +0 -1
  122. package/build/tool-utils.spec.d.ts +0 -1
@@ -0,0 +1,4 @@
1
+ import { WixMcpServer } from '../wix-mcp-server.js';
2
+ import { McpAuthenticationStrategy } from '../auth/index.js';
3
+ export declare function addApiCallTool(server: WixMcpServer, strategy: McpAuthenticationStrategy): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,yBAAyB,QAqMpC"}
@@ -0,0 +1,150 @@
1
+ import { z } from 'zod';
2
+ import { logger } from '../infra/logger.js';
3
+ import { handleWixAPIResponse } from '../tool-utils.js';
4
+ export function addApiCallTool(server, strategy) {
5
+ server.tool('CallWixSiteAPI', [
6
+ 'Call Wix apis on a business or site. Use this to create, read, update, and delete data and other Wix entities in your Wix site,',
7
+ `You should ALWAYS check the rest docs - "SearchWixRESTDocumentation" for the specific API you want to call, don't just call it without knowing what it does, CHECK THE DOCS`,
8
+ 'Error Handling:',
9
+ 'If the error is related to missing installed app or "WDE0110: Wix Code not enabled", you should install the missing app by using ReadFullDocsArticle tool to fetch the article - https://dev.wix.com/docs/kb-only/MCP_REST_RECIPES_KB_ID/TRAIN_wix.devcenter.apps.installer.v1.AppsInstallerService.InstallApp',
10
+ '**Note:** there is no need to check if an app is installed/ Wix Code enabled in advance, just call the API and handle the error if it occurs, the API error message will state it clearly.',
11
+ 'For any other error, use your default error handling mechanism'
12
+ ].join('\n'), {
13
+ siteId: z
14
+ .string()
15
+ .describe('The id of the site selected using site selection tool'),
16
+ url: z
17
+ .string()
18
+ .describe('The url of the api to call - ALWAYS get the information from the Wix REST docs or from the conversation context, the URL MUST BE ABSOLUTE URL'),
19
+ method: z
20
+ .string()
21
+ .describe('The HTTP method to use for the API call (e.g. GET, POST, PUT, DELETE)'),
22
+ body: z
23
+ .string()
24
+ .optional()
25
+ .describe('A string representing of a valid JSON object to describe the body of the request')
26
+ }, async ({ url, body, method, siteId }, { httpClient }) => {
27
+ logger.log(`Calling Wix Site API: ${siteId} ${url}, body: ${JSON.stringify(body)}`);
28
+ try {
29
+ const response = await httpClient.request({
30
+ url,
31
+ method: method,
32
+ headers: {
33
+ ...(await strategy.getSiteAuthHeaders(siteId)),
34
+ ...(body ? { 'Content-Type': 'application/json' } : {})
35
+ },
36
+ data: method === 'GET' ? undefined : body
37
+ });
38
+ const responseData = await handleWixAPIResponse(response);
39
+ return {
40
+ content: [
41
+ {
42
+ type: 'text',
43
+ text: `Wix Site API call successful: ${JSON.stringify(responseData)}`
44
+ }
45
+ ]
46
+ };
47
+ }
48
+ catch (error) {
49
+ logger.error(`Failed to call Wix Site API: ${error}`);
50
+ const response = error.response;
51
+ if (!response) {
52
+ throw new Error(`Failed to call Wix Site API: ${error}`);
53
+ }
54
+ return handleWixAPIResponse(response);
55
+ }
56
+ });
57
+ server.tool('ListWixSites', 'List Wix sites for the current user, by default it will return all sites, but you can filter by name', {
58
+ nameSearch: z
59
+ .string()
60
+ .optional()
61
+ .describe('optional filer by name, if not provided all sites will be returned'),
62
+ // Hack for Cursor ignoring tools with no params (when nameSearch is optional)
63
+ alwaysTrue: z.boolean().describe('Always pass true to this parameter')
64
+ }, async ({ nameSearch }, { httpClient }) => {
65
+ const sitesRes = await httpClient.post('https://www.wixapis.com/site-list/v2/sites/query', {
66
+ query: {
67
+ cursorPaging: { limit: 21 },
68
+ filter: {
69
+ ...(nameSearch
70
+ ? {
71
+ name: nameSearch
72
+ }
73
+ : {}),
74
+ namespace: {
75
+ $in: ['WIX', 'DASHBOARD_FIRST', 'ANYWHERE', 'HEADLESS']
76
+ }
77
+ }
78
+ }
79
+ }, {
80
+ headers: {
81
+ ...(await strategy.getAccountAuthHeaders()),
82
+ 'Content-Type': 'application/json',
83
+ Accept: 'application/json, text/plain, */*'
84
+ }
85
+ });
86
+ const result = sitesRes.data.sites?.map(({ id, displayName }) => ({
87
+ id,
88
+ name: displayName
89
+ })) ?? [];
90
+ return {
91
+ content: [
92
+ {
93
+ type: 'text',
94
+ text: JSON.stringify(result)
95
+ },
96
+ {
97
+ type: 'text',
98
+ text: 'if there is more than one site returned, the user should pick one from a list, list the sites (only name) for the user and ask them to pick one,' +
99
+ 'If more than 20 are found you should list all 20 and suggest to search by the name of the site they are looking for'
100
+ }
101
+ ]
102
+ };
103
+ });
104
+ server.tool('ManageWixSite', `Use account level API in order to create a site, update a site and publish site.
105
+ ALWAYS use "SearchWixRESTDocumentation" to search for the API you should invoke, NEVER GUESS THE SITE API URL
106
+ You should ALWAYS check the rest docs - "SearchWixRESTDocumentation" for the specific API you want to call, don't just call it without knowing what it does, CHECK THE DOCS`, {
107
+ url: z
108
+ .string()
109
+ .describe('The url of the api to call - ALWAYS get the information from the Wix REST docs DONT GUESS IT, the URL MUST BE ABSOLUTE URL'),
110
+ method: z
111
+ .string()
112
+ .describe('The HTTP method to use for the API call (e.g. GET, POST, PUT, DELETE)'),
113
+ body: z
114
+ .string()
115
+ .optional()
116
+ .describe('A string representing of a valid JSON object to describe the body of the request')
117
+ }, async ({ url, body, method }, { httpClient }) => {
118
+ logger.log(`Calling Wix Account level API: ${url}, body: ${JSON.stringify(body)}`);
119
+ try {
120
+ // if we would like to allow the user to manage multiple accounts, we should add accountId to the params
121
+ const response = await httpClient.request({
122
+ url,
123
+ method: method,
124
+ headers: {
125
+ ...(await strategy.getAccountAuthHeaders()),
126
+ ...(body ? { 'Content-Type': 'application/json' } : {})
127
+ },
128
+ data: method === 'GET' ? undefined : body
129
+ });
130
+ const responseData = await handleWixAPIResponse(response);
131
+ return {
132
+ content: [
133
+ {
134
+ type: 'text',
135
+ text: `Wix Account API call successful: ${JSON.stringify(responseData)}`
136
+ }
137
+ ]
138
+ };
139
+ }
140
+ catch (error) {
141
+ logger.error(`Failed to call Wix Account API: ${error}`);
142
+ const response = error.response;
143
+ if (!response) {
144
+ throw new Error(`Failed to call Wix Account API: ${error}`);
145
+ }
146
+ return handleWixAPIResponse(response);
147
+ }
148
+ });
149
+ }
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,QAAmC;IAEnC,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB;QACE,iIAAiI;QACjI,6KAA6K;QAC7K,iBAAiB;QACjB,gTAAgT;QAChT,4LAA4L;QAC5L,gEAAgE;KACjE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,uDAAuD,CAAC;QACpE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,CACP,+IAA+I,CAChJ;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CACP,uEAAuE,CACxE;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kFAAkF,CACnF;KACJ,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACtD,MAAM,CAAC,GAAG,CACR,yBAAyB,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;gBACxC,GAAG;gBACH,MAAM,EAAE,MAAa;gBACrB,OAAO,EAAE;oBACP,GAAG,CAAC,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAC9C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;aAC1C,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iCAAiC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;qBACtE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;YAEtD,MAAM,QAAQ,GAAI,KAAmB,CAAC,QAAQ,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,sGAAsG,EACtG;QACE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,oEAAoE,CACrE;QACH,8EAA8E;QAC9E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CACpC,kDAAkD,EAClD;YACE,KAAK,EAAE;gBACL,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,MAAM,EAAE;oBACN,GAAG,CAAC,UAAU;wBACZ,CAAC,CAAC;4BACE,IAAI,EAAE,UAAU;yBACjB;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,SAAS,EAAE;wBACT,GAAG,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,CAAC;qBACxD;iBACF;aACF;SACF,EACD;YACE,OAAO,EAAE;gBACP,GAAG,CAAC,MAAM,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBAC3C,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,mCAAmC;aAC5C;SACF,CACF,CAAC;QAEF,MAAM,MAAM,GACV,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAO,EAAE,EAAE,CAAC,CAAC;YACtD,EAAE;YACF,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC7B;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,kJAAkJ;wBAClJ,qHAAqH;iBACxH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;gLAE4K,EAC5K;QACE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,CACP,4HAA4H,CAC7H;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CACP,uEAAuE,CACxE;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kFAAkF,CACnF;KACJ,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,CACR,kCAAkC,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC;QAEF,IAAI,CAAC;YACH,wGAAwG;YACxG,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;gBACxC,GAAG;gBACH,MAAM,EAAE,MAAa;gBACrB,OAAO,EAAE;oBACP,GAAG,CAAC,MAAM,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC3C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;aAC1C,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;qBACzE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAI,KAAmB,CAAC,QAAQ,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type McpHeaders = Record<string, string>;
2
+ export type McpAuthenticationStrategy = {
3
+ getSiteAuthHeaders: (siteId: string) => Promise<McpHeaders> | McpHeaders;
4
+ getAccountAuthHeaders: (accountId?: string) => Promise<McpHeaders> | McpHeaders;
5
+ };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAAG;IACtC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACzE,qBAAqB,EAAE,CACrB,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":""}
@@ -1,6 +1,7 @@
1
- import './sentry.js';
1
+ import './infra/sentry.js';
2
2
  declare const PUBLIC_TOOLS: readonly ["WDS", "REST", "SDK", "BUILD_APPS", "WIX_HEADLESS", "BUSINESS_SOLUTIONS"];
3
- declare const EXPERIMENTAL_TOOLS: readonly ["WIX_API", "CLI_COMMAND"];
3
+ declare const EXPERIMENTAL_TOOLS: readonly ["WIX_API", "CLI_COMMAND", "GET_TO_KNOW_WIX"];
4
4
  type Tool = (typeof PUBLIC_TOOLS)[number] | (typeof EXPERIMENTAL_TOOLS)[number];
5
5
  export declare const DEFAULT_TOOLS: Tool[];
6
6
  export {};
7
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAgB3B,QAAA,MAAM,YAAY,qFAAiC,CAAC;AACpD,QAAA,MAAM,kBAAkB,wDAId,CAAC;AACX,KAAK,IAAI,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,eAAO,MAAM,aAAa,EAAE,IAAI,EAA0B,CAAC"}
@@ -0,0 +1,108 @@
1
+ import './infra/sentry.js';
2
+ import minimist from 'minimist';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { addDocsTools, VALID_DOCS_TOOLS } from './docs/docs.js';
5
+ import { addGetToKnowTools } from './docs/get-to-know.js';
6
+ import { addCliTools, VALID_CLI_TOOLS } from './cli-tools/cli.js';
7
+ import { logger, attachStdErrLogger, attachMcpServerLogger, attachFileLogger } from './infra/logger.js';
8
+ import { WixMcpServer } from './wix-mcp-server.js';
9
+ import { addDocsResources } from './resources/docs.js';
10
+ const PUBLIC_TOOLS = [...VALID_DOCS_TOOLS];
11
+ const EXPERIMENTAL_TOOLS = [
12
+ 'WIX_API',
13
+ 'CLI_COMMAND',
14
+ 'GET_TO_KNOW_WIX'
15
+ ];
16
+ export const DEFAULT_TOOLS = [...VALID_DOCS_TOOLS];
17
+ const parsedArgs = minimist(process.argv.slice(2));
18
+ function parseExperimentalArg() {
19
+ const experimentalArg = parsedArgs['experimental'];
20
+ if (!experimentalArg)
21
+ return [];
22
+ return experimentalArg
23
+ .split(',')
24
+ .map((t) => t.trim())
25
+ .filter((tool) => EXPERIMENTAL_TOOLS.includes(tool));
26
+ }
27
+ function parseToolsArg() {
28
+ const toolsArg = parsedArgs['tools'];
29
+ const experimentalTools = parseExperimentalArg();
30
+ if (!toolsArg) {
31
+ // When no tools specified, return both default and experimental tools
32
+ return [...DEFAULT_TOOLS, ...experimentalTools];
33
+ }
34
+ const requestedTools = toolsArg.split(',').map((t) => t.trim());
35
+ const tools = [
36
+ // Include valid non-experimental tools
37
+ ...requestedTools.filter((tool) => PUBLIC_TOOLS.includes(tool)),
38
+ // Include enabled experimental tools
39
+ ...experimentalTools
40
+ ];
41
+ // Warn about enabled experimental tools
42
+ tools.forEach((tool) => {
43
+ if (EXPERIMENTAL_TOOLS.includes(tool)) {
44
+ logger.log(`Warning: ${tool} is an experimental tool and may have limited functionality or breaking changes`);
45
+ }
46
+ });
47
+ return tools;
48
+ }
49
+ const loggerType = parsedArgs['logger'] || 'mcp';
50
+ if (loggerType === 'file') {
51
+ attachFileLogger();
52
+ }
53
+ else {
54
+ // Initially we log to stderr, because MCP server is not connected yet
55
+ // When the server is connected, we attach the MCP server logger
56
+ attachStdErrLogger();
57
+ }
58
+ logger.log('--------------------------------');
59
+ logger.log('starting WIX MCP server');
60
+ logger.log('--------------------------------');
61
+ const server = new WixMcpServer({
62
+ name: 'wix-mcp-server',
63
+ version: '1.0.0'
64
+ }, {
65
+ capabilities: {
66
+ tools: {},
67
+ prompts: {},
68
+ logging: {},
69
+ resources: {}
70
+ }
71
+ });
72
+ const activeTools = parseToolsArg();
73
+ logger.log('Active tools:', activeTools);
74
+ const docsTools = activeTools.filter((tool) => VALID_DOCS_TOOLS.includes(tool));
75
+ if (docsTools.length > 0) {
76
+ logger.log('Adding docs tools:', docsTools);
77
+ addDocsTools(server, docsTools);
78
+ }
79
+ const isWixOne = parsedArgs['cli'] === 'wix-one';
80
+ const cliTools = activeTools.filter((tool) => VALID_CLI_TOOLS.includes(tool));
81
+ if (cliTools.length > 0) {
82
+ logger.log('Adding cli tools:', cliTools, 'isWixOne:', isWixOne);
83
+ addCliTools(server, cliTools, isWixOne);
84
+ }
85
+ if (activeTools.includes('GET_TO_KNOW_WIX')) {
86
+ const docUrl = parsedArgs['get-to-know-wix-url'];
87
+ await addGetToKnowTools(server, docUrl);
88
+ }
89
+ try {
90
+ const portals = parsedArgs['portals']?.split(',') || [];
91
+ if (portals.length > 0) {
92
+ logger.log('Adding docs resources for portals:', portals);
93
+ await addDocsResources(server, portals);
94
+ }
95
+ }
96
+ catch (error) {
97
+ logger.error('Error adding docs resources:', error);
98
+ }
99
+ logger.log('Starting server');
100
+ const transport = new StdioServerTransport();
101
+ logger.log('Connecting to transport');
102
+ await server.connect(transport);
103
+ logger.log('Transport connected');
104
+ if (loggerType === 'mcp') {
105
+ // From now on, we log to the MCP server
106
+ attachMcpServerLogger(server);
107
+ }
108
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { WixMcpServer } from '../wix-mcp-server.js';
2
+ export declare const VALID_CLI_TOOLS: readonly ["WIX_API", "CLI_COMMAND", "CLI_COMMAND_INTERACTIVE_MODE"];
3
+ export type CLITool = (typeof VALID_CLI_TOOLS)[number];
4
+ export declare function addCliTools(server: WixMcpServer, allowedTools?: CLITool[], isWixOne?: boolean): void;
5
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli-tools/cli.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,eAAe,qEAIlB,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,YAAY,GAAE,OAAO,EAIpB,EACD,QAAQ,GAAE,OAAe,QAmZ1B"}