@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.
Files changed (3) hide show
  1. package/README.md +86 -13
  2. package/dist/index.cjs +1998 -1260
  3. 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 to your user settings (`.vscode/mcp.json`) or use Command Palette "MCP: Add Server":
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 in the install command always fetches the newest version. Most MCP clients cache the installed package, so you need to force a re-fetch:
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
- | **npx (manual)** | `npx -y @firfi/huly-mcp@latest` the `-y` flag skips the cache when `@latest` resolves to a new version |
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). Does NOT return issues that this issue blocks — use list_issue_relations on the target issue to see that. |
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 the CLI `-e` flag may fail because the shell interprets these characters before they reach the process.
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 using `claude mcp add -e`. In `~/.claude.json` (user scope) or `.mcp.json` (project scope), JSON handles all special characters natively:
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": "node",
484
- "args": ["path/to/dist/index.cjs"],
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",