@firfi/huly-mcp 0.52.4 → 0.52.6
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 +29 -26
- package/dist/index.cjs +100171 -105724
- package/package.json +7 -12
package/README.md
CHANGED
|
@@ -10,10 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
**Huly MCP** is a feature-complete MCP server for [Huly](https://huly.io/) integration. Published on npm as [`@firfi/huly-mcp`](https://www.npmjs.com/package/@firfi/huly-mcp).
|
|
12
12
|
|
|
13
|
-
It connects to
|
|
14
|
-
|
|
15
|
-
> [!IMPORTANT]
|
|
16
|
-
> **Hosted Huly is shutting down.** Huly's upstream README says shutdown is expected July 20. If you use `https://huly.app`, [export and migrate your data](https://github.com/hcengineering/platform/blob/develop/README.md) as soon as possible. See the [backup and restore guide](https://github.com/hcengineering/platform/blob/develop/docs/guides/backup-restore.en.md) and [self-hosting repository](https://github.com/hcengineering/huly-selfhost). Self-hosted deployments are not affected.
|
|
13
|
+
It connects to Huly Platform deployments and should also work with the [Platform Collective](https://github.com/Platform-Collective/platform) and [TraceX](https://tracex.co) forks. [Intabia](https://platform.intabia.ru/) `0.8.33` / model `0.8.4` has been compatibility-tested; [known gaps are tracked in issue #279](https://github.com/dearlordylord/huly-mcp/issues/279). Fork support remains unofficial.
|
|
17
14
|
|
|
18
15
|
## Huly CLI Alternative
|
|
19
16
|
|
|
@@ -39,7 +36,7 @@ detected executable and required version, and the same `unsupported Node.js runt
|
|
|
39
36
|
stderr. Upgrade Node.js or configure the MCP server command to use the absolute path of a compatible Node.js
|
|
40
37
|
executable, then restart the MCP server. Huly operations remain unavailable until the runtime is upgraded.
|
|
41
38
|
|
|
42
|
-
The standard configuration works with most MCP clients:
|
|
39
|
+
The standard configuration uses a Huly API token and works with most MCP clients:
|
|
43
40
|
|
|
44
41
|
```json
|
|
45
42
|
{
|
|
@@ -49,8 +46,7 @@ The standard configuration works with most MCP clients:
|
|
|
49
46
|
"args": ["-y", "@firfi/huly-mcp@latest"],
|
|
50
47
|
"env": {
|
|
51
48
|
"HULY_URL": "https://your-huly-instance.example.com",
|
|
52
|
-
"
|
|
53
|
-
"HULY_PASSWORD": "yourpassword",
|
|
49
|
+
"HULY_TOKEN": "your-huly-api-token",
|
|
54
50
|
"HULY_WORKSPACE": "yourworkspace"
|
|
55
51
|
}
|
|
56
52
|
}
|
|
@@ -58,6 +54,12 @@ The standard configuration works with most MCP clients:
|
|
|
58
54
|
}
|
|
59
55
|
```
|
|
60
56
|
|
|
57
|
+
Prefer a managed API token created in Huly account settings when the target deployment supports it. Managed tokens
|
|
58
|
+
are bound to one workspace, assigned an expiry, and can be revoked without changing the account password. They still
|
|
59
|
+
inherit the account's full rights in that workspace, so use a dedicated integration account with only the workspace
|
|
60
|
+
role, space memberships, and data access the automation needs. Older Huly deployments may not expose managed token
|
|
61
|
+
settings; email/password authentication remains available as a compatibility fallback.
|
|
62
|
+
|
|
61
63
|
## Tool Exposure Defaults
|
|
62
64
|
|
|
63
65
|
By default (`HULY_TOOL_MODE=auto`), Huly MCP optimizes for current MCP clients by avoiding a 470-tool eager list. Exact `claude-code` sessions receive native Huly tools. Codex, Cursor, Windsurf, Copilot, OpenCode, Claude AI/Desktop-style clients, and unknown clients receive a small proxy surface: `list_tool_categories`, `search_tools`, `get_tool_schema`, and `invoke_tool`.
|
|
@@ -72,8 +74,7 @@ Use Codex's MCP manager:
|
|
|
72
74
|
```bash
|
|
73
75
|
codex mcp add huly \
|
|
74
76
|
--env HULY_URL=https://your-huly-instance.example.com \
|
|
75
|
-
--env
|
|
76
|
-
--env HULY_PASSWORD=yourpassword \
|
|
77
|
+
--env HULY_TOKEN=your-huly-api-token \
|
|
77
78
|
--env HULY_WORKSPACE=yourworkspace \
|
|
78
79
|
-- npx -y @firfi/huly-mcp@latest
|
|
79
80
|
```
|
|
@@ -87,8 +88,7 @@ args = ["-y", "@firfi/huly-mcp@latest"]
|
|
|
87
88
|
|
|
88
89
|
[mcp_servers.huly.env]
|
|
89
90
|
HULY_URL = "https://your-huly-instance.example.com"
|
|
90
|
-
|
|
91
|
-
HULY_PASSWORD = "yourpassword"
|
|
91
|
+
HULY_TOKEN = "your-huly-api-token"
|
|
92
92
|
HULY_WORKSPACE = "yourworkspace"
|
|
93
93
|
```
|
|
94
94
|
|
|
@@ -100,8 +100,7 @@ HULY_WORKSPACE = "yourworkspace"
|
|
|
100
100
|
```bash
|
|
101
101
|
claude mcp add huly \
|
|
102
102
|
-e HULY_URL=https://your-huly-instance.example.com \
|
|
103
|
-
-e
|
|
104
|
-
-e HULY_PASSWORD=yourpassword \
|
|
103
|
+
-e HULY_TOKEN=your-huly-api-token \
|
|
105
104
|
-e HULY_WORKSPACE=yourworkspace \
|
|
106
105
|
-- npx -y @firfi/huly-mcp@latest
|
|
107
106
|
```
|
|
@@ -133,8 +132,7 @@ Add with Command Palette → "MCP: Add Server", or put this in a VS Code MCP con
|
|
|
133
132
|
"args": ["-y", "@firfi/huly-mcp@latest"],
|
|
134
133
|
"env": {
|
|
135
134
|
"HULY_URL": "https://your-huly-instance.example.com",
|
|
136
|
-
"
|
|
137
|
-
"HULY_PASSWORD": "yourpassword",
|
|
135
|
+
"HULY_TOKEN": "your-huly-api-token",
|
|
138
136
|
"HULY_WORKSPACE": "yourworkspace"
|
|
139
137
|
}
|
|
140
138
|
}
|
|
@@ -171,8 +169,7 @@ Open the global configuration file (`~/.config/opencode/opencode.json`) and merg
|
|
|
171
169
|
"command": ["npx", "-y", "@firfi/huly-mcp@latest"],
|
|
172
170
|
"environment": {
|
|
173
171
|
"HULY_URL": "https://your-huly-instance.example.com",
|
|
174
|
-
"
|
|
175
|
-
"HULY_PASSWORD": "yourpassword",
|
|
172
|
+
"HULY_TOKEN": "your-huly-api-token",
|
|
176
173
|
"HULY_WORKSPACE": "yourworkspace"
|
|
177
174
|
}
|
|
178
175
|
}
|
|
@@ -229,8 +226,7 @@ By default, the server uses stdio transport. For HTTP transport:
|
|
|
229
226
|
|
|
230
227
|
```bash
|
|
231
228
|
HULY_URL=https://your-huly-instance.example.com \
|
|
232
|
-
|
|
233
|
-
HULY_PASSWORD=yourpassword \
|
|
229
|
+
HULY_TOKEN=your-huly-api-token \
|
|
234
230
|
HULY_WORKSPACE=yourworkspace \
|
|
235
231
|
MCP_TRANSPORT=http \
|
|
236
232
|
npx -y @firfi/huly-mcp@latest
|
|
@@ -246,7 +242,9 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
246
242
|
|
|
247
243
|
### HTTP MCP Protocol Support
|
|
248
244
|
|
|
249
|
-
Both
|
|
245
|
+
Both transports are implemented with Effect AI's MCP server and protocol adapters. The server configures the released MCP `2026-07-28` stateless protocol and the MCP `2025-06-18` compatibility protocol. Modern HTTP requires one JSON-RPC message per POST, `Accept: application/json, text/event-stream`, `MCP-Protocol-Version: 2026-07-28`, `Mcp-Method`, method-specific `Mcp-Name`, and per-request `_meta.io.modelcontextprotocol/*` client metadata. Legacy HTTP supports initialized sessions using the returned `Mcp-Session-Id` and bare stateless calls with request-local bindings. Huly credentials are configured separately through env vars or supported `x-huly-*` headers.
|
|
246
|
+
|
|
247
|
+
See [MCP transport architecture and certification](docs/MCP_TRANSPORT_CERTIFICATION.md) for the implementation boundary and the current verification record.
|
|
250
248
|
|
|
251
249
|
For hosted or tunneled HTTP deployments, you can require an MCP endpoint bearer token:
|
|
252
250
|
|
|
@@ -286,9 +284,9 @@ For a Smithery publish schema example, see [docs/SMITHERY_URL_PUBLISH.md](docs/S
|
|
|
286
284
|
| Variable | Required | Description |
|
|
287
285
|
|----------|----------|-------------|
|
|
288
286
|
| `HULY_URL` | Yes | Reachable self-hosted or replacement hosted Huly instance URL |
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
287
|
+
| `HULY_TOKEN` | Auth* | Preferred: managed Huly API token where supported |
|
|
288
|
+
| `HULY_EMAIL` | Auth* | Compatibility fallback: account email |
|
|
289
|
+
| `HULY_PASSWORD` | Auth* | Compatibility fallback: account password |
|
|
292
290
|
| `HULY_WORKSPACE` | Yes | Workspace identifier |
|
|
293
291
|
| `HULY_CONNECTION_TIMEOUT` | No | Connection timeout in ms. Omit to use the package default. |
|
|
294
292
|
| `MCP_TRANSPORT` | No | Transport type: `stdio` (default) or `http` |
|
|
@@ -300,7 +298,8 @@ For a Smithery publish schema example, see [docs/SMITHERY_URL_PUBLISH.md](docs/S
|
|
|
300
298
|
| `TOOLSETS` | No | Comma-separated tool categories to expose. If neither `TOOLSETS` nor `TOOLS` is set, all native Huly tools are exposed. Example: `issues,projects,search` |
|
|
301
299
|
| `TOOLS` | No | Comma-separated exact tool names to expose in addition to selected toolsets. Example: `list_documents,create_issue` |
|
|
302
300
|
|
|
303
|
-
*Auth:
|
|
301
|
+
*Auth: Prefer `HULY_TOKEN`. Use `HULY_EMAIL` + `HULY_PASSWORD` only when the Huly deployment does not support a
|
|
302
|
+
managed API token or another compatibility constraint requires password authentication.
|
|
304
303
|
|
|
305
304
|
## Built-in Diagnostic Tools
|
|
306
305
|
|
|
@@ -362,6 +361,9 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
362
361
|
| Tool | Description |
|
|
363
362
|
|------|-------------|
|
|
364
363
|
| `preview_deletion` | Preview the impact of deleting a Huly entity before actually deleting it. Shows affected sub-entities, relations, and warnings. Supports issues, projects, components, and milestones. Use this to understand cascade effects before calling a delete operation. |
|
|
364
|
+
| `list_external_tracker_targets` | List external issue-tracker targets mapped to a Huly project. Omit provider to list every provider supported by this server, or pass provider:'github' to list mapped GitHub repositories. Returns each target's provider, kind, stable Huly ID, exact name, enabled state, and an actionable unavailable reason when known. This discovers Huly configuration only; it does not call the external provider or prove that the synchronization worker is running. |
|
|
365
|
+
| `publish_issue_to_external_tracker` | Request publication of an existing Huly issue as a new issue in Huly's configured external tracker. Identify the issue with project and its human identifier (for example, HULY-123); provider currently accepts only 'github'. Select target by stable Huly target ID or exact name, or omit target only when exactly one enabled target is mapped to the project. Publication is asynchronous: pending means Huly accepted the request, not that an external issue exists. Repeating the same target is safe while pending or published; a failed same-target request retries, while a different target is rejected. Use get_issue_publication_status to observe completion. |
|
|
366
|
+
| `get_issue_publication_status` | Read the Huly-persisted external publication state for an issue identified by project and human issue identifier. Returns not_requested, pending, published, or failed; pending includes the ISO state-change timestamp and elapsed time, while published includes an external URL and positive issue number. A timeout is projected as failed only after the bounded wait, and later persisted publication takes precedence. This reads Huly state and never calls the external provider directly. |
|
|
365
367
|
| `list_components` | List components in a Huly project. Components organize issues by area/feature. Returns components sorted by modification date (newest first). |
|
|
366
368
|
| `get_component` | Retrieve full details for a Huly component. Use this to view component content and metadata. |
|
|
367
369
|
| `create_component` | Create a new component in a Huly project. Components help organize issues by area/feature. Description supports markdown. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. Returns the created component ID and label. |
|
|
@@ -1184,7 +1186,7 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
1184
1186
|
|
|
1185
1187
|
## Troubleshooting
|
|
1186
1188
|
|
|
1187
|
-
###
|
|
1189
|
+
### Password fallback with special characters
|
|
1188
1190
|
|
|
1189
1191
|
If your Huly password contains characters like `*`, `%`, `!`, or `#`, passing it via CLI environment flags such as `-e` or `--env` may fail because the shell interprets these characters before they reach the process.
|
|
1190
1192
|
|
|
@@ -1217,7 +1219,8 @@ For Claude JSON config, the shell-sensitive characters above can be written dire
|
|
|
1217
1219
|
}
|
|
1218
1220
|
```
|
|
1219
1221
|
|
|
1220
|
-
|
|
1222
|
+
Prefer `HULY_TOKEN` instead of this password fallback when the deployment supports managed API tokens (see
|
|
1223
|
+
[Environment Variables](#environment-variables)).
|
|
1221
1224
|
|
|
1222
1225
|
### MCP client shows "Failed to reconnect"
|
|
1223
1226
|
|