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 CHANGED
@@ -14,25 +14,38 @@ wait for a major.
14
14
 
15
15
  ## Requirements
16
16
 
17
- - Node 24 for the current `frontier-mcp@0.3.1` release
18
- - `npx` for the current quick start; pnpm for development of this repository
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
- The current source also supports Node 20.20.2+ on 20.x, 22.17.1+ on 22.x, and 24.15.0+ on
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. For the current release, Cursor users can save
28
- this in `~/.cursor/mcp.json`, preserving any existing servers:
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.3.1"]
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 source checkout contains an automatic setup bootstrap, but `0.3.1` does not ship it. The
44
- [installation guide](docs/installation.md) explains that release boundary, Node 16 projects, runtime
45
- managers, absolute desktop paths, Bun and Deno selection, other clients, updates, recovery, and
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.3.1` pin in your user MCP config with the exact version you
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontier-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "An MCP server exposing the markdown issue tracker under a repo's .scratch/ as a queryable graph",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -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({ runtime, release, installation, target, preview, client: options.client });
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.3.1.');
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
- if (configuration.packageVersion !== '0.3.1' || process.platform !== 'darwin' || process.arch !== 'arm64') {
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