@firfi/huly-mcp 0.12.0 → 0.14.0
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 +86 -13
- package/dist/index.cjs +1998 -1260
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,6 +30,36 @@ The standard configuration works with most MCP clients:
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
<details>
|
|
34
|
+
<summary>Codex</summary>
|
|
35
|
+
|
|
36
|
+
Use Codex's MCP manager:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
codex mcp add huly \
|
|
40
|
+
--env HULY_URL=https://huly.app \
|
|
41
|
+
--env HULY_EMAIL=your@email.com \
|
|
42
|
+
--env HULY_PASSWORD=yourpassword \
|
|
43
|
+
--env HULY_WORKSPACE=yourworkspace \
|
|
44
|
+
-- npx -y @firfi/huly-mcp@latest
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Or add it directly to `~/.codex/config.toml`:
|
|
48
|
+
|
|
49
|
+
```toml
|
|
50
|
+
[mcp_servers.huly]
|
|
51
|
+
command = "npx"
|
|
52
|
+
args = ["-y", "@firfi/huly-mcp@latest"]
|
|
53
|
+
|
|
54
|
+
[mcp_servers.huly.env]
|
|
55
|
+
HULY_URL = "https://huly.app"
|
|
56
|
+
HULY_EMAIL = "your@email.com"
|
|
57
|
+
HULY_PASSWORD = "yourpassword"
|
|
58
|
+
HULY_WORKSPACE = "yourworkspace"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
</details>
|
|
62
|
+
|
|
33
63
|
<details>
|
|
34
64
|
<summary>Claude Code</summary>
|
|
35
65
|
|
|
@@ -59,7 +89,7 @@ Add the standard config to your `claude_desktop_config.json`:
|
|
|
59
89
|
<details>
|
|
60
90
|
<summary>VS Code</summary>
|
|
61
91
|
|
|
62
|
-
Add
|
|
92
|
+
Add with Command Palette → "MCP: Add Server", or put this in a VS Code MCP config such as `.vscode/mcp.json`. Do not commit workspace config files that contain real credentials.
|
|
63
93
|
|
|
64
94
|
```json
|
|
65
95
|
{
|
|
@@ -94,16 +124,42 @@ Add the standard config to your Windsurf MCP configuration file.
|
|
|
94
124
|
|
|
95
125
|
</details>
|
|
96
126
|
|
|
127
|
+
<details>
|
|
128
|
+
<summary>OpenCode</summary>
|
|
129
|
+
|
|
130
|
+
Open the global configuration file (`~/.config/opencode/opencode.json`) and merge this entry into your config:
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"mcp": {
|
|
135
|
+
"huly": {
|
|
136
|
+
"type": "local",
|
|
137
|
+
"command": ["npx", "-y", "@firfi/huly-mcp@latest"],
|
|
138
|
+
"environment": {
|
|
139
|
+
"HULY_URL": "https://huly.app",
|
|
140
|
+
"HULY_EMAIL": "your@email.com",
|
|
141
|
+
"HULY_PASSWORD": "yourpassword",
|
|
142
|
+
"HULY_WORKSPACE": "yourworkspace"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
</details>
|
|
150
|
+
|
|
97
151
|
## Updating
|
|
98
152
|
|
|
99
|
-
The `@latest` tag
|
|
153
|
+
The `@latest` tag asks the package runner for the newest version. Some MCP clients keep server processes or resolved installs alive, so restart or re-add the server when updating:
|
|
100
154
|
|
|
101
155
|
| Client | How to update |
|
|
102
156
|
|--------|--------------|
|
|
157
|
+
| **Codex** | `codex mcp remove huly` then re-add with the install command above. If your password has shell-sensitive characters, edit `~/.codex/config.toml` directly instead |
|
|
103
158
|
| **Claude Code** | `claude mcp remove huly` then re-add with the install command above |
|
|
104
159
|
| **Claude Desktop** | Restart the app (it runs `npx` on startup) |
|
|
105
|
-
| **VS Code / Cursor** | Restart the MCP server from the command palette or reload the window |
|
|
106
|
-
| **
|
|
160
|
+
| **VS Code / Cursor** | Restart the MCP server from the command palette/configured client or reload the window |
|
|
161
|
+
| **OpenCode** | Restart OpenCode or start a new session after config changes |
|
|
162
|
+
| **npx (manual)** | `npx -y @firfi/huly-mcp@latest` — the `-y` flag auto-confirms install prompts |
|
|
107
163
|
|
|
108
164
|
## HTTP Transport
|
|
109
165
|
|
|
@@ -147,7 +203,7 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
147
203
|
<!-- AUTO-GENERATED from src/mcp/tools/ descriptions. Do not edit manually. Run `pnpm update-readme` to regenerate. -->
|
|
148
204
|
## Available Tools
|
|
149
205
|
|
|
150
|
-
**`TOOLSETS` categories:** `projects`, `issues`, `comments`, `milestones`, `documents`, `storage`, `attachments`, `contacts`, `channels`, `calendar`, `time tracking`, `search`, `activity`, `notifications`, `workspace`, `cards`, `custom-fields`, `labels`, `leads`, `tag-categories`, `task-management`, `test-management`
|
|
206
|
+
**`TOOLSETS` categories:** `projects`, `issues`, `comments`, `milestones`, `documents`, `storage`, `attachments`, `contacts`, `channels`, `calendar`, `time tracking`, `search`, `activity`, `notifications`, `workspace`, `cards`, `custom-fields`, `labels`, `leads`, `processes`, `tag-categories`, `task-management`, `test-management`
|
|
151
207
|
|
|
152
208
|
### Projects
|
|
153
209
|
|
|
@@ -167,8 +223,8 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
167
223
|
| `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. |
|
|
168
224
|
| `list_issues` | Query Huly issues with optional filters. Returns issues sorted by modification date (newest first). Supports filtering by project, status, assignee, component, and parentIssue (to list children of a specific issue). Supports searching by title substring (titleSearch) and description content (descriptionSearch). |
|
|
169
225
|
| `get_issue` | Retrieve full details for a Huly issue including markdown description. Use this to view issue content, comments, or full metadata. |
|
|
170
|
-
| `create_issue` | Create a new issue in a Huly project. Optionally create as a sub-issue by specifying parentIssue. Description supports markdown formatting. Returns the created issue identifier. |
|
|
171
|
-
| `update_issue` | Update fields on an existing Huly issue. Only provided fields are modified. Description updates support markdown. |
|
|
226
|
+
| `create_issue` | Create a new issue in a Huly project. Optionally set taskType by ID or display name; it is resolved within the target project's project type, and status is validated against that task type's workflow. Use list_task_types or get_project_type to discover valid task types and statuses. Optionally create as a sub-issue by specifying parentIssue. Description supports markdown formatting. Returns the created issue identifier. |
|
|
227
|
+
| `update_issue` | Update fields on an existing Huly issue. Optionally set taskType by ID or display name; it is resolved within the target project's project type, and the status is preserved only when valid for the new task type. Use list_task_types or get_project_type to discover valid task types and statuses. Only provided fields are modified. Description updates support markdown. |
|
|
172
228
|
| `add_issue_label` | Add a tag/label to a Huly issue. Creates the tag if it doesn't exist in the project. |
|
|
173
229
|
| `remove_issue_label` | Remove a tag/label from a Huly issue. Detaches the label reference; does not delete the label definition. |
|
|
174
230
|
| `delete_issue` | Permanently delete a Huly issue. This action cannot be undone. |
|
|
@@ -189,7 +245,7 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
189
245
|
| `remove_template_child` | Remove a child (sub-task) template from an issue template by its child ID. Get child IDs from get_issue_template response. |
|
|
190
246
|
| `add_issue_relation` | Add a relation between two issues. Relation types: 'blocks' (source blocks target — pushes into target's blockedBy), 'is-blocked-by' (source is blocked by target — pushes into source's blockedBy), 'relates-to' (bidirectional link — updates both sides). targetIssue accepts cross-project identifiers like 'OTHER-42'. No-op if the relation already exists. |
|
|
191
247
|
| `remove_issue_relation` | Remove a relation between two issues. Mirrors add_issue_relation: 'blocks' pulls from target's blockedBy, 'is-blocked-by' pulls from source's blockedBy, 'relates-to' pulls from both sides. No-op if the relation doesn't exist. |
|
|
192
|
-
| `list_issue_relations` | List all relations of an issue. Returns blockedBy (issues blocking this one), relations (bidirectional issue links), and documents (linked documents with title/teamspace).
|
|
248
|
+
| `list_issue_relations` | List all relations of an issue. Returns blockedBy (issues blocking this one), blocks (issues this one blocks), relations (bidirectional issue links), and documents (linked documents with title/teamspace). |
|
|
193
249
|
| `link_document_to_issue` | Link a Huly document to an issue. The link appears in the issue's Relations panel in the UI. Idempotent: no-op if the document is already linked. Use list_issue_relations to see linked documents. |
|
|
194
250
|
| `unlink_document_from_issue` | Remove a document link from an issue. Idempotent: no-op if the document is not linked. |
|
|
195
251
|
|
|
@@ -332,7 +388,7 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
332
388
|
|
|
333
389
|
| Tool | Description |
|
|
334
390
|
|------|-------------|
|
|
335
|
-
| `list_activity` | List activity messages for a Huly object. Returns activity sorted by date (newest first). |
|
|
391
|
+
| `list_activity` | List activity messages for a Huly issue, document, channel, or raw Huly object. Prefer friendly targets: project+issueIdentifier for issues, teamspace+document for documents, or channel for channels. Advanced callers may pass objectId+objectClass directly. Returns activity sorted by date (newest first). |
|
|
336
392
|
| `add_reaction` | Add an emoji reaction to an activity message. |
|
|
337
393
|
| `remove_reaction` | Remove an emoji reaction from an activity message. |
|
|
338
394
|
| `list_reactions` | List reactions on an activity message. |
|
|
@@ -412,6 +468,14 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
412
468
|
| `list_leads` | Query Huly leads in a funnel with optional filters. Pass the funnel ID returned by list_funnels, or a funnel name for convenience lookup. Returns leads sorted by modification date (newest first). Supports filtering by status, assignee, and title search. |
|
|
413
469
|
| `get_lead` | Retrieve full details for a Huly lead including markdown description, customer name, funnel ID and funnel name, and status. Lead identifiers follow the upstream Huly format like 'LEAD-1'. |
|
|
414
470
|
|
|
471
|
+
### Processes
|
|
472
|
+
|
|
473
|
+
| Tool | Description |
|
|
474
|
+
|------|-------------|
|
|
475
|
+
| `list_processes` | List read-only Huly Process workflow definitions. Optionally filter by the master tag/card type that workflows attach to. Returns process IDs, names, attached card type, automation flags, and state/transition counts. |
|
|
476
|
+
| `get_process` | Get one Huly Process workflow definition by process ID or exact display name. If a name is ambiguous, the tool returns a typed error with candidate IDs instead of guessing. |
|
|
477
|
+
| `list_process_executions` | List read-only Huly Process workflow executions. Supports filters by process ID/name, card/document ID/title, and status. Rows are enriched with process name, card title, and current state title when available. |
|
|
478
|
+
|
|
415
479
|
### Tag-Categories
|
|
416
480
|
|
|
417
481
|
| Tool | Description |
|
|
@@ -471,17 +535,26 @@ MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @firfi/huly-m
|
|
|
471
535
|
|
|
472
536
|
### Passwords with special characters
|
|
473
537
|
|
|
474
|
-
If your Huly password contains characters like `*`, `%`, `!`, or `#`, passing it via
|
|
538
|
+
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.
|
|
475
539
|
|
|
476
|
-
**Solution**: Edit your MCP config file directly instead of
|
|
540
|
+
**Solution**: Edit your MCP config file directly instead of passing the password through the shell:
|
|
541
|
+
|
|
542
|
+
- Codex: `~/.codex/config.toml`
|
|
543
|
+
- Claude Code: `~/.claude.json` (user scope) or `.mcp.json` (project scope)
|
|
544
|
+
- Claude Desktop: `claude_desktop_config.json` in the location listed in the installation section
|
|
545
|
+
- VS Code and Cursor: use the client config location from the installation section; avoid committing workspace files that contain real credentials
|
|
546
|
+
- Windsurf: edit your Windsurf MCP configuration file directly
|
|
547
|
+
- OpenCode: `~/.config/opencode/opencode.json`
|
|
548
|
+
|
|
549
|
+
For Claude JSON config, the shell-sensitive characters above can be written directly. JSON-reserved characters such as `"` and `\` still need normal JSON escaping:
|
|
477
550
|
|
|
478
551
|
```json
|
|
479
552
|
{
|
|
480
553
|
"mcpServers": {
|
|
481
554
|
"huly": {
|
|
482
555
|
"type": "stdio",
|
|
483
|
-
"command": "
|
|
484
|
-
"args": ["
|
|
556
|
+
"command": "npx",
|
|
557
|
+
"args": ["-y", "@firfi/huly-mcp@latest"],
|
|
485
558
|
"env": {
|
|
486
559
|
"HULY_URL": "https://your-huly-instance.com",
|
|
487
560
|
"HULY_EMAIL": "you@example.com",
|