@firfi/huly-mcp 0.55.2 → 0.55.4
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 +4 -16
- package/dist/application.cjs +6 -6
- package/dist/index.cjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -70,24 +70,15 @@ Exact native tool names still dispatch when a client calls them directly, but ma
|
|
|
70
70
|
<details>
|
|
71
71
|
<summary>Codex</summary>
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
`npx` automatically downloads and caches Huly MCP; `pnpm dlx @firfi/huly-mcp@latest` is an alternative. Huly is optional, so Codex can start without it and a cold download may leave the first turn without Huly tools. Run `/mcp` to check the connection.
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
codex mcp add huly \
|
|
77
|
-
--env MCP_TRANSPORT=stdio-resident \
|
|
78
|
-
--env HULY_URL=https://your-huly-instance.example.com \
|
|
79
|
-
--env HULY_TOKEN=your-huly-api-token \
|
|
80
|
-
--env HULY_WORKSPACE=yourworkspace \
|
|
81
|
-
-- npx -y @firfi/huly-mcp@latest
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Or add it directly to `~/.codex/config.toml`:
|
|
75
|
+
Add to `~/.codex/config.toml` (the 120-second startup allowance includes installation):
|
|
85
76
|
|
|
86
77
|
```toml
|
|
87
78
|
[mcp_servers.huly]
|
|
79
|
+
startup_timeout_sec = 120
|
|
88
80
|
command = "npx"
|
|
89
81
|
args = ["-y", "@firfi/huly-mcp@latest"]
|
|
90
|
-
startup_timeout_sec = 60
|
|
91
82
|
|
|
92
83
|
[mcp_servers.huly.env]
|
|
93
84
|
MCP_TRANSPORT = "stdio-resident"
|
|
@@ -229,10 +220,7 @@ the [production release guide](docs/NPM_PRODUCTION_RELEASE.md) for preflight che
|
|
|
229
220
|
|
|
230
221
|
## Shared resident stdio
|
|
231
222
|
|
|
232
|
-
The setup examples explicitly select `MCP_TRANSPORT=stdio-resident`. MCP clients still use stdio, while compatible clients under the same OS user share a Node backend through small native bridges. Linux and macOS arm64/x64 binaries are included; no Rust installation is needed.
|
|
233
|
-
|
|
234
|
-
Allow at least 60 seconds for MCP startup in the client so it can wait for the resident attempt, cleanup, and ordinary stdio startup. For Codex, set `startup_timeout_sec = 60` in its Huly server configuration, including when adding the server through `codex mcp add`.
|
|
235
|
-
For Claude Code, set `MCP_TIMEOUT=60000` in the environment that launches `claude`, or add `"MCP_TIMEOUT": "60000"` under `env` in `~/.claude/settings.json` ([Claude Code environment variables](https://code.claude.com/docs/en/env-vars)). Setting it only in the Huly server's `env` does not increase the parent client's startup timeout.
|
|
223
|
+
The setup examples explicitly select `MCP_TRANSPORT=stdio-resident`. MCP clients still use stdio, while compatible clients under the same OS user share a Node backend through small native bridges. Linux and macOS arm64/x64 binaries are included; no Rust installation is needed. Application requests remain buffered during the 30-second resident startup budget. Startup failure launches ordinary stdio and dispatches the buffered application input once. A failed active resident never reconnects or replays application requests.
|
|
236
224
|
|
|
237
225
|
Omitting `MCP_TRANSPORT` still selects ordinary `stdio`, preserving existing installations. Set `MCP_TRANSPORT=stdio` explicitly to keep a separate backend per client. Restart the MCP client after changing the setting.
|
|
238
226
|
|
package/dist/application.cjs
CHANGED
|
@@ -54789,7 +54789,7 @@ var VERSION;
|
|
|
54789
54789
|
var init_version = __esm({
|
|
54790
54790
|
"src/version.ts"() {
|
|
54791
54791
|
"use strict";
|
|
54792
|
-
VERSION = true ? "0.55.
|
|
54792
|
+
VERSION = true ? "0.55.4" : "0.0.0-dev";
|
|
54793
54793
|
}
|
|
54794
54794
|
});
|
|
54795
54795
|
|
|
@@ -222479,7 +222479,7 @@ var init_server_startup = __esm({
|
|
|
222479
222479
|
const configuration = yield* Effect_exports.result(resolveProcessConfiguration(transport, environment, captured));
|
|
222480
222480
|
if (Result_exports.isFailure(configuration)) {
|
|
222481
222481
|
if (transport === "stdio" && configuration.failure._tag === "CliProfileStoreError")
|
|
222482
|
-
return yield* runProfileStartupDiagnostic(configuration.failure, "0.55.
|
|
222482
|
+
return yield* runProfileStartupDiagnostic(configuration.failure, "0.55.4");
|
|
222483
222483
|
return yield* Effect_exports.fail(configuration.failure);
|
|
222484
222484
|
}
|
|
222485
222485
|
const { authMethod, configLayer, runtimeConfigContext } = configuration.success;
|
|
@@ -222829,7 +222829,7 @@ var init_native_exec = __esm({
|
|
|
222829
222829
|
const { main: local2 } = yield* Effect_exports.promise(() => Promise.resolve().then(() => (init_server_startup(), server_startup_exports)));
|
|
222830
222830
|
return yield* local2;
|
|
222831
222831
|
}).pipe(
|
|
222832
|
-
Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.
|
|
222832
|
+
Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.4")),
|
|
222833
222833
|
Effect_exports.provide(layer7),
|
|
222834
222834
|
Effect_exports.tapError(
|
|
222835
222835
|
(error3) => Effect_exports.sync(
|
|
@@ -223199,7 +223199,7 @@ ${hello}
|
|
|
223199
223199
|
Effect_exports.catchTag(
|
|
223200
223200
|
"CliProfileStoreError",
|
|
223201
223201
|
(error3) => publish4(`${NATIVE_LOCAL_HEADER}
|
|
223202
|
-
`).pipe(Effect_exports.andThen(runProfileStartupDiagnostic(error3, "0.55.
|
|
223202
|
+
`).pipe(Effect_exports.andThen(runProfileStartupDiagnostic(error3, "0.55.4")))
|
|
223203
223203
|
),
|
|
223204
223204
|
Effect_exports.mapError(
|
|
223205
223205
|
(error3) => error3 instanceof ConfigValidationError || error3 instanceof McpProcessPolicyError || error3 instanceof ManagedLaunchError || error3 instanceof ProtectedFileError || error3 instanceof BackendResponseError ? error3 : nativeBridgeFailure()
|
|
@@ -223234,7 +223234,7 @@ var init_manual_adapter_main = __esm({
|
|
|
223234
223234
|
const captured = yield* captureManualResidentSelection(environment);
|
|
223235
223235
|
yield* runManualAdapter(captured?.selection);
|
|
223236
223236
|
}).pipe(
|
|
223237
|
-
Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.
|
|
223237
|
+
Effect_exports.catchTag("CliProfileStoreError", (error3) => runProfileStartupDiagnostic(error3, "0.55.4")),
|
|
223238
223238
|
Effect_exports.provide(layer7),
|
|
223239
223239
|
Effect_exports.mapError(
|
|
223240
223240
|
(error3) => error3 instanceof BackendResponseError || error3 instanceof CliProfileStoreError || error3 instanceof ConfigValidationError || error3 instanceof McpProcessPolicyError || error3 instanceof ProtectedFileError ? error3 : new BackendResponseError({
|
|
@@ -223336,7 +223336,7 @@ if (unsupportedRuntime) {
|
|
|
223336
223336
|
detectedNodeVersion: process.versions.node,
|
|
223337
223337
|
executable: process.execPath,
|
|
223338
223338
|
requiredNodeVersion: nodeEngineRequirement,
|
|
223339
|
-
serverVersion: "0.55.
|
|
223339
|
+
serverVersion: "0.55.4"
|
|
223340
223340
|
});
|
|
223341
223341
|
startUnsupportedNodeMcp(config);
|
|
223342
223342
|
} else if (process.env.MCP_TRANSPORT === "resident-child") {
|
package/dist/index.cjs
CHANGED
|
@@ -37,7 +37,7 @@ var probeNativeExecutable = (executable) => {
|
|
|
37
37
|
if (process.env.MCP_TRANSPORT === "stdio-resident") {
|
|
38
38
|
const executable = nativeExecutableFor({ platform: process.platform, architecture: process.arch, packageFile: __filename, execveAvailable: typeof process.execve === "function" });
|
|
39
39
|
if (executable !== void 0) {
|
|
40
|
-
process.execve(executable, [executable, process.execPath, __filename], { ...process.env, MCP_NATIVE_EXPECTED_VERSION: "0.55.
|
|
40
|
+
process.execve(executable, [executable, process.execPath, __filename], { ...process.env, MCP_NATIVE_EXPECTED_VERSION: "0.55.4" });
|
|
41
41
|
} else {
|
|
42
42
|
process.stderr.write("Native resident bridge unavailable; starting ordinary stdio\n");
|
|
43
43
|
process.env.MCP_TRANSPORT = "stdio";
|