mcp-server-sfmc 2.0.0 → 2.1.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.
- package/README.md +8 -4
- package/dist/cli/reviewDiff.d.ts +1 -17
- package/dist/cli/reviewDiff.d.ts.map +1 -1
- package/dist/cli/reviewDiff.js +25 -53
- package/dist/cli/reviewDiff.js.map +1 -1
- package/dist/cli/reviewSeverity.d.ts +23 -0
- package/dist/cli/reviewSeverity.d.ts.map +1 -0
- package/dist/cli/reviewSeverity.js +36 -0
- package/dist/cli/reviewSeverity.js.map +1 -0
- package/dist/conversion-rules.d.ts.map +1 -1
- package/dist/conversion-rules.js +255 -249
- package/dist/conversion-rules.js.map +1 -1
- package/dist/index.js +185 -152
- package/dist/index.js.map +1 -1
- package/dist/mce-help-search.js +5 -5
- package/dist/mce-help-search.js.map +1 -1
- package/dist/mcn-help-search.js +5 -5
- package/dist/mcn-help-search.js.map +1 -1
- package/package.json +23 -12
package/README.md
CHANGED
|
@@ -204,7 +204,7 @@ Access via `/mcp.sfmc.writeAmpscript` etc. in VS Code, or via the prompts API:
|
|
|
204
204
|
|
|
205
205
|
## Migrating code to Marketing Cloud Next
|
|
206
206
|
|
|
207
|
-
Marketing Cloud Next (MCN) supports **41 of the
|
|
207
|
+
Marketing Cloud Next (MCN) supports **41 of the 155 AMPscript functions** and **does not support SSJS**. Three supported functions have behavioral differences (see below). The migration toolkit guides you from analysis through to a fully rewritten result.
|
|
208
208
|
|
|
209
209
|
### Recommended workflow
|
|
210
210
|
|
|
@@ -542,9 +542,13 @@ The `@eslint/mcp` server exposes an `eslint_lint` tool that your AI can call to
|
|
|
542
542
|
|
|
543
543
|
```
|
|
544
544
|
mcp-server-sfmc
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
545
|
+
├── sfmc-language-lsp (language intelligence core)
|
|
546
|
+
│ ├── ampscript-data (AMPscript function catalog)
|
|
547
|
+
│ ├── ssjs-data (SSJS function catalog)
|
|
548
|
+
│ └── handlebars-data (MCN Handlebars helper catalog)
|
|
549
|
+
├── ampscript-data (direct — conversion maps, mcnSince, handlebarsEquivalent)
|
|
550
|
+
├── ssjs-data (direct — Platform.Function ↔ AMPscript mapping)
|
|
551
|
+
└── handlebars-data (direct — AMPscript ↔ Handlebars conversion)
|
|
548
552
|
|
|
549
553
|
vscode-sfmc-language (VS Code extension)
|
|
550
554
|
└── sfmc-language-lsp (same core, bundled via esbuild)
|
package/dist/cli/reviewDiff.d.ts
CHANGED
|
@@ -2,21 +2,5 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* sfmc-review-diff — CI helper: spawn mcp-server-sfmc and call review_change on a unified diff.
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
6
|
-
export interface SeverityCounts {
|
|
7
|
-
errors: number;
|
|
8
|
-
warnings: number;
|
|
9
|
-
infos: number;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Counts diagnostic lines emitted by the review_change tool (see src/index.ts).
|
|
13
|
-
* @param output
|
|
14
|
-
*/
|
|
15
|
-
export declare function countReviewSeverities(output: string): SeverityCounts;
|
|
16
|
-
/**
|
|
17
|
-
* Whether the CLI should exit with code 1 given counts and --fail-on policy.
|
|
18
|
-
* @param counts
|
|
19
|
-
* @param failOn
|
|
20
|
-
*/
|
|
21
|
-
export declare function shouldFail(counts: SeverityCounts, failOn: FailOnLevel): boolean;
|
|
5
|
+
export {};
|
|
22
6
|
//# sourceMappingURL=reviewDiff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewDiff.d.ts","sourceRoot":"","sources":["../../src/cli/reviewDiff.ts"],"names":[],"mappings":";AACA;;GAEG
|
|
1
|
+
{"version":3,"file":"reviewDiff.d.ts","sourceRoot":"","sources":["../../src/cli/reviewDiff.ts"],"names":[],"mappings":";AACA;;GAEG"}
|
package/dist/cli/reviewDiff.js
CHANGED
|
@@ -8,41 +8,11 @@ import { fileURLToPath } from 'node:url';
|
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
10
10
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
11
|
-
|
|
12
|
-
* Counts diagnostic lines emitted by the review_change tool (see src/index.ts).
|
|
13
|
-
* @param output
|
|
14
|
-
*/
|
|
15
|
-
export function countReviewSeverities(output) {
|
|
16
|
-
let errors = 0;
|
|
17
|
-
let warnings = 0;
|
|
18
|
-
let infos = 0;
|
|
19
|
-
for (const line of output.split('\n')) {
|
|
20
|
-
if (line.startsWith('🔴 ERROR'))
|
|
21
|
-
errors += 1;
|
|
22
|
-
else if (line.startsWith('🟡 WARNING'))
|
|
23
|
-
warnings += 1;
|
|
24
|
-
else if (line.startsWith('🔵 INFO'))
|
|
25
|
-
infos += 1;
|
|
26
|
-
}
|
|
27
|
-
return { errors, warnings, infos };
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Whether the CLI should exit with code 1 given counts and --fail-on policy.
|
|
31
|
-
* @param counts
|
|
32
|
-
* @param failOn
|
|
33
|
-
*/
|
|
34
|
-
export function shouldFail(counts, failOn) {
|
|
35
|
-
if (counts.errors > 0)
|
|
36
|
-
return true;
|
|
37
|
-
if ((failOn === 'warning' || failOn === 'info') && counts.warnings > 0)
|
|
38
|
-
return true;
|
|
39
|
-
if (failOn === 'info' && counts.infos > 0)
|
|
40
|
-
return true;
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
11
|
+
import { countReviewSeverities, shouldFail } from './reviewSeverity.js';
|
|
43
12
|
function toolResultToText(result) {
|
|
44
13
|
const parts = [];
|
|
45
|
-
|
|
14
|
+
const contentBlocks = result.content ?? [];
|
|
15
|
+
for (const block of contentBlocks) {
|
|
46
16
|
if (block.type === 'text' && 'text' in block && typeof block.text === 'string') {
|
|
47
17
|
parts.push(block.text);
|
|
48
18
|
}
|
|
@@ -52,7 +22,9 @@ function toolResultToText(result) {
|
|
|
52
22
|
function readStdin() {
|
|
53
23
|
return new Promise((resolve, reject) => {
|
|
54
24
|
const chunks = [];
|
|
55
|
-
stdin.on('data', (c) =>
|
|
25
|
+
stdin.on('data', (c) => {
|
|
26
|
+
chunks.push(c);
|
|
27
|
+
});
|
|
56
28
|
stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
57
29
|
stdin.on('error', reject);
|
|
58
30
|
});
|
|
@@ -66,11 +38,11 @@ function serverEntryPath() {
|
|
|
66
38
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
67
39
|
return path.join(here, '..', 'index.js');
|
|
68
40
|
}
|
|
69
|
-
function
|
|
41
|
+
function packageVersion() {
|
|
70
42
|
try {
|
|
71
43
|
const p = path.join(projectRoot(), 'package.json');
|
|
72
|
-
const
|
|
73
|
-
return
|
|
44
|
+
const index = JSON.parse(readFileSync(p, 'utf8'));
|
|
45
|
+
return index.version ?? '0.0.0';
|
|
74
46
|
}
|
|
75
47
|
catch {
|
|
76
48
|
return '0.0.0';
|
|
@@ -95,20 +67,20 @@ Exit codes:
|
|
|
95
67
|
1 Review findings matched the failure policy, MCP error, or I/O error
|
|
96
68
|
`);
|
|
97
69
|
}
|
|
98
|
-
function
|
|
70
|
+
function parseArguments(argv) {
|
|
99
71
|
let failOn = 'error';
|
|
100
72
|
let language;
|
|
101
73
|
let maxProblems;
|
|
102
|
-
let
|
|
74
|
+
let isHelp = false;
|
|
103
75
|
const positional = [];
|
|
104
|
-
for (let
|
|
105
|
-
const a = argv[
|
|
76
|
+
for (let index = 0; index < argv.length; index++) {
|
|
77
|
+
const a = argv[index];
|
|
106
78
|
if (a === '-h' || a === '--help') {
|
|
107
|
-
|
|
79
|
+
isHelp = true;
|
|
108
80
|
continue;
|
|
109
81
|
}
|
|
110
82
|
if (a === '--fail-on') {
|
|
111
|
-
const v = argv[++
|
|
83
|
+
const v = argv[++index];
|
|
112
84
|
if (v !== 'error' && v !== 'warning' && v !== 'info') {
|
|
113
85
|
throw new Error(`--fail-on must be error, warning, or info, got: ${v ?? '(missing)'}`);
|
|
114
86
|
}
|
|
@@ -116,7 +88,7 @@ function parseArgs(argv) {
|
|
|
116
88
|
continue;
|
|
117
89
|
}
|
|
118
90
|
if (a === '--language') {
|
|
119
|
-
const v = argv[++
|
|
91
|
+
const v = argv[++index];
|
|
120
92
|
if (v !== 'ampscript' && v !== 'ssjs' && v !== 'html' && v !== 'auto') {
|
|
121
93
|
throw new Error(`--language must be ampscript, ssjs, html, or auto`);
|
|
122
94
|
}
|
|
@@ -124,8 +96,8 @@ function parseArgs(argv) {
|
|
|
124
96
|
continue;
|
|
125
97
|
}
|
|
126
98
|
if (a === '--max-problems') {
|
|
127
|
-
const v = argv[++
|
|
128
|
-
const n = v ? Number
|
|
99
|
+
const v = argv[++index];
|
|
100
|
+
const n = v ? Number(v) : NaN;
|
|
129
101
|
if (!Number.isFinite(n) || n < 1) {
|
|
130
102
|
throw new Error(`--max-problems must be a positive integer`);
|
|
131
103
|
}
|
|
@@ -145,7 +117,7 @@ function parseArgs(argv) {
|
|
|
145
117
|
failOn,
|
|
146
118
|
language,
|
|
147
119
|
maxProblems,
|
|
148
|
-
help,
|
|
120
|
+
help: isHelp,
|
|
149
121
|
};
|
|
150
122
|
}
|
|
151
123
|
function isExecutedDirectly() {
|
|
@@ -162,7 +134,7 @@ function isExecutedDirectly() {
|
|
|
162
134
|
async function main() {
|
|
163
135
|
let parsed;
|
|
164
136
|
try {
|
|
165
|
-
parsed =
|
|
137
|
+
parsed = parseArguments(process.argv.slice(2));
|
|
166
138
|
}
|
|
167
139
|
catch (ex) {
|
|
168
140
|
// eslint-disable-next-line no-console -- intentional CLI error output
|
|
@@ -183,18 +155,18 @@ async function main() {
|
|
|
183
155
|
});
|
|
184
156
|
const client = new Client({
|
|
185
157
|
name: 'sfmc-review-diff',
|
|
186
|
-
version:
|
|
158
|
+
version: packageVersion(),
|
|
187
159
|
});
|
|
188
160
|
try {
|
|
189
161
|
await client.connect(transport);
|
|
190
|
-
const
|
|
162
|
+
const arguments_ = { diff: diffText };
|
|
191
163
|
if (parsed.language !== undefined)
|
|
192
|
-
|
|
164
|
+
arguments_.language = parsed.language;
|
|
193
165
|
if (parsed.maxProblems !== undefined)
|
|
194
|
-
|
|
166
|
+
arguments_.maxProblems = parsed.maxProblems;
|
|
195
167
|
const result = await client.callTool({
|
|
196
168
|
name: 'review_change',
|
|
197
|
-
arguments:
|
|
169
|
+
arguments: arguments_,
|
|
198
170
|
});
|
|
199
171
|
const text = toolResultToText(result);
|
|
200
172
|
process.stdout.write(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewDiff.js","sourceRoot":"","sources":["../../src/cli/reviewDiff.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewDiff.js","sourceRoot":"","sources":["../../src/cli/reviewDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Severity parsing helpers for the sfmc-review-diff CLI. Kept in a dedicated
|
|
3
|
+
* module (no shebang) so the pure, unit-tested logic is importable without the
|
|
4
|
+
* executable CLI entry point.
|
|
5
|
+
*/
|
|
6
|
+
export type FailOnLevel = 'error' | 'warning' | 'info';
|
|
7
|
+
export interface SeverityCounts {
|
|
8
|
+
errors: number;
|
|
9
|
+
warnings: number;
|
|
10
|
+
infos: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Counts diagnostic lines emitted by the review_change tool (see src/index.ts).
|
|
14
|
+
* @param output
|
|
15
|
+
*/
|
|
16
|
+
export declare function countReviewSeverities(output: string): SeverityCounts;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the CLI should exit with code 1 given counts and --fail-on policy.
|
|
19
|
+
* @param counts
|
|
20
|
+
* @param failOn
|
|
21
|
+
*/
|
|
22
|
+
export declare function shouldFail(counts: SeverityCounts, failOn: FailOnLevel): boolean;
|
|
23
|
+
//# sourceMappingURL=reviewSeverity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewSeverity.d.ts","sourceRoot":"","sources":["../../src/cli/reviewSeverity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAUpE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAI/E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Severity parsing helpers for the sfmc-review-diff CLI. Kept in a dedicated
|
|
3
|
+
* module (no shebang) so the pure, unit-tested logic is importable without the
|
|
4
|
+
* executable CLI entry point.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Counts diagnostic lines emitted by the review_change tool (see src/index.ts).
|
|
8
|
+
* @param output
|
|
9
|
+
*/
|
|
10
|
+
export function countReviewSeverities(output) {
|
|
11
|
+
let errors = 0;
|
|
12
|
+
let warnings = 0;
|
|
13
|
+
let infos = 0;
|
|
14
|
+
for (const line of output.split('\n')) {
|
|
15
|
+
if (line.startsWith('🔴 ERROR'))
|
|
16
|
+
errors += 1;
|
|
17
|
+
else if (line.startsWith('🟡 WARNING'))
|
|
18
|
+
warnings += 1;
|
|
19
|
+
else if (line.startsWith('🔵 INFO'))
|
|
20
|
+
infos += 1;
|
|
21
|
+
}
|
|
22
|
+
return { errors, warnings, infos };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether the CLI should exit with code 1 given counts and --fail-on policy.
|
|
26
|
+
* @param counts
|
|
27
|
+
* @param failOn
|
|
28
|
+
*/
|
|
29
|
+
export function shouldFail(counts, failOn) {
|
|
30
|
+
if (counts.errors > 0)
|
|
31
|
+
return true;
|
|
32
|
+
if ((failOn === 'warning' || failOn === 'info') && counts.warnings > 0)
|
|
33
|
+
return true;
|
|
34
|
+
return failOn === 'info' && counts.infos > 0;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=reviewSeverity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewSeverity.js","sourceRoot":"","sources":["../../src/cli/reviewSeverity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC;aACxC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,QAAQ,IAAI,CAAC,CAAC;aACjD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAsB,EAAE,MAAmB;IAClE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion-rules.d.ts","sourceRoot":"","sources":["../src/conversion-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;CACrC;AAQD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKrE,CAAC;AAoBF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAEtD,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBhE,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAG9E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAezD,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CASxD,CAAC;AAMH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,aAAa,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmC3F,CAAC;
|
|
1
|
+
{"version":3,"file":"conversion-rules.d.ts","sourceRoot":"","sources":["../src/conversion-rules.ts"],"names":[],"mappings":"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"}
|