frontier-mcp 0.4.0 → 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.
- package/README.md +25 -13
- package/package.json +1 -1
- package/scripts/frontier-setup.cjs +17 -5
package/README.md
CHANGED
|
@@ -14,25 +14,38 @@ wait for a major.
|
|
|
14
14
|
|
|
15
15
|
## Requirements
|
|
16
16
|
|
|
17
|
-
- Node 24
|
|
18
|
-
-
|
|
17
|
+
- Node 20.20.2+ on 20.x, 22.17.1+ on 22.x, or 24.15.0+ on 24.x for `frontier-mcp@0.4.0`
|
|
18
|
+
- Node 16.20.2+ to run the setup bootstrap; pnpm for development of this repository
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
24.x. That wider range takes effect only in a release that contains it. Node 24 LTS is recommended
|
|
22
|
-
for new installations. The package floors passed on macOS, Linux, and Windows in
|
|
20
|
+
Node 24 LTS is recommended for new installations. The package floors passed on macOS, Linux, and Windows in
|
|
23
21
|
[runtime CI](https://github.com/51ck/frontier-mcp/actions/runs/35074448965).
|
|
24
22
|
|
|
25
23
|
## Install
|
|
26
24
|
|
|
27
|
-
Register FrontierMCP once in the client's user scope.
|
|
28
|
-
|
|
25
|
+
Register FrontierMCP once in the client's user scope. The recommended setup downloads the bootstrap
|
|
26
|
+
from the published 0.4.0 tarball, installs the exact 0.4.0 server outside your project, verifies its
|
|
27
|
+
MCP handshake, and previews a Cursor user-scope entry before applying it:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
SETUP_DIR="$(mktemp -d)"
|
|
31
|
+
curl -fsSL https://registry.npmjs.org/frontier-mcp/-/frontier-mcp-0.4.0.tgz \
|
|
32
|
+
-o "$SETUP_DIR/frontier-mcp-0.4.0.tgz"
|
|
33
|
+
tar -xzf "$SETUP_DIR/frontier-mcp-0.4.0.tgz" -C "$SETUP_DIR" \
|
|
34
|
+
package/scripts/frontier-setup.cjs
|
|
35
|
+
node "$SETUP_DIR/package/scripts/frontier-setup.cjs" --version 0.4.0 --apply
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
It may run from a project pinned to Node 16; project runtime markers are evaluated later from the
|
|
39
|
+
client's working directory when the saved launcher starts. Omit `--apply` for a preview. The 0.4.0
|
|
40
|
+
bootstrap prints a stale `Preview only` line during apply, followed by the authoritative `Applied`
|
|
41
|
+
result; this cosmetic output is fixed for the next patch. For a manual Cursor entry instead:
|
|
29
42
|
|
|
30
43
|
```json
|
|
31
44
|
{
|
|
32
45
|
"mcpServers": {
|
|
33
46
|
"frontier": {
|
|
34
47
|
"command": "npx",
|
|
35
|
-
"args": ["-y", "frontier-mcp@0.
|
|
48
|
+
"args": ["-y", "frontier-mcp@0.4.0"]
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
51
|
}
|
|
@@ -40,10 +53,9 @@ this in `~/.cursor/mcp.json`, preserving any existing servers:
|
|
|
40
53
|
|
|
41
54
|
Restart Cursor after saving. The pin is the version you get; updates remain manual.
|
|
42
55
|
|
|
43
|
-
The
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
removal. Use its manual path until a published release includes the bootstrap.
|
|
56
|
+
The [installation guide](docs/installation.md) covers Node 16 projects, a PowerShell bootstrap,
|
|
57
|
+
runtime managers, absolute desktop paths, the follow-up selector's Bun 0.4.0 support, the published
|
|
58
|
+
bootstrap boundary, Deno's Node fallback, other clients, updates, recovery, and removal.
|
|
47
59
|
|
|
48
60
|
## First use in a repository
|
|
49
61
|
|
|
@@ -100,7 +112,7 @@ to avoid.
|
|
|
100
112
|
last tag is releasable, `auto` exits green having shipped nothing, so confirm a new tag appeared.
|
|
101
113
|
3. The workflow runs checks + tests, bumps `package.json`, updates `CHANGELOG.md`, tags
|
|
102
114
|
`v*`, creates a GitHub Release, and publishes to npm with `pnpm`.
|
|
103
|
-
4. Replace the current `frontier-mcp@0.
|
|
115
|
+
4. Replace the current `frontier-mcp@0.4.0` pin in your user MCP config with the exact version you
|
|
104
116
|
released when you want the new build — pins stay manual on purpose.
|
|
105
117
|
|
|
106
118
|
The workflow is dispatchable from any branch but refuses to run off `master`: release-it commits,
|
package/package.json
CHANGED
|
@@ -75,7 +75,15 @@ async function main(args) {
|
|
|
75
75
|
options.client === 'cursor'
|
|
76
76
|
? await prepareConfig(target, launch)
|
|
77
77
|
: { desired: { command: launch.command, args: launch.args } };
|
|
78
|
-
printPreview({
|
|
78
|
+
printPreview({
|
|
79
|
+
runtime,
|
|
80
|
+
release,
|
|
81
|
+
installation,
|
|
82
|
+
target,
|
|
83
|
+
preview,
|
|
84
|
+
client: options.client,
|
|
85
|
+
apply: options.apply,
|
|
86
|
+
});
|
|
79
87
|
|
|
80
88
|
if (!options.apply || options.client === 'manual') return;
|
|
81
89
|
await applyConfig(target, preview, options.replace);
|
|
@@ -126,7 +134,7 @@ function parseArguments(args) {
|
|
|
126
134
|
!options.help &&
|
|
127
135
|
(options.version === undefined || !/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(options.version))
|
|
128
136
|
) {
|
|
129
|
-
throw new Error('Pass an exact released version, for example --version 0.
|
|
137
|
+
throw new Error('Pass an exact released version, for example --version 0.4.0.');
|
|
130
138
|
}
|
|
131
139
|
if (options.client !== 'cursor' && options.client !== 'manual') {
|
|
132
140
|
throw new Error('--client must be cursor or manual.');
|
|
@@ -881,7 +889,11 @@ function chooseRuntime() {
|
|
|
881
889
|
}
|
|
882
890
|
|
|
883
891
|
function alternative(runtime, node) {
|
|
884
|
-
|
|
892
|
+
const packageVerified =
|
|
893
|
+
runtime === 'bun'
|
|
894
|
+
? ['0.3.1', '0.4.0'].includes(configuration.packageVersion)
|
|
895
|
+
: configuration.packageVersion === '0.3.1';
|
|
896
|
+
if (!packageVerified || process.platform !== 'darwin' || process.arch !== 'arm64') {
|
|
885
897
|
return fallback(node, \`\${runtimeName(runtime)} is not verified for frontier-mcp@\${configuration.packageVersion} on \${process.platform}/\${process.arch}; using configured Node\`);
|
|
886
898
|
}
|
|
887
899
|
const executable = configuration.alternatives[runtime];
|
|
@@ -1390,7 +1402,7 @@ function isObject(value) {
|
|
|
1390
1402
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
1391
1403
|
}
|
|
1392
1404
|
|
|
1393
|
-
function printPreview({ runtime, release, installation, target, preview, client }) {
|
|
1405
|
+
function printPreview({ runtime, release, installation, target, preview, client, apply }) {
|
|
1394
1406
|
process.stdout.write(`Runtime: ${runtime.executable} (Node ${formatVersion(runtime.version)})\n`);
|
|
1395
1407
|
process.stdout.write(
|
|
1396
1408
|
`Package: ${PACKAGE}@${release.version} (requires ${release.engines.node})\n`,
|
|
@@ -1407,7 +1419,7 @@ function printPreview({ runtime, release, installation, target, preview, client
|
|
|
1407
1419
|
if (client === 'cursor' && !preview.identical && preview.existing !== undefined) {
|
|
1408
1420
|
process.stdout.write('An existing frontier entry needs --replace before --apply.\n');
|
|
1409
1421
|
}
|
|
1410
|
-
if (client === 'cursor')
|
|
1422
|
+
if (client === 'cursor' && !apply)
|
|
1411
1423
|
process.stdout.write('Preview only. Add --apply to write this Cursor entry.\n');
|
|
1412
1424
|
}
|
|
1413
1425
|
|