关于 Huly Mcp
Huly Mcp 将 Huly 项目管理功能开放给 MCP 客户端,覆盖项目、问题、文档、日历和工时等领域。它支持自定义任务类型、项目状态工作流,并提供 Process 插件的只读工具。
主要功能
- 01覆盖 23 类管理功能
- 02支持问题与项目管理
- 03支持自定义任务类型和状态
- 04提供 Process 插件只读工具
- 05可按类别筛选工具集
适用场景
- 01通过 MCP 管理 Huly 项目和问题
- 02维护评论、文档及附件
- 03查看流程与执行记录
- 04按需限制可用工具类别
MCP 相关
这是供 MCP 客户端连接的 Huly MCP 服务,支持 stdio 和 Streamable HTTP 传输。可通过 `TOOLSETS` 选择对客户端开放的工具类别。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
@dugynoo/huly-mcp
用于集成 Huly 的 MCP 服务——包含 23 个类别的 209 个工具(问题、项目、任务、评论、文档、卡片、频道、日历、时间跟踪、测试管理、流程、自定义字段、附件、潜在客户等)。支持自定义任务类型、项目范围内的状态工作流,以及 Process 插件的读取工具。
安装
标准配置适用于大多数 MCP 客户端:
{
"mcpServers": {
"huly": {
"command": "npx",
"args": ["-y", "@dugynoo/huly-mcp@latest"],
"env": {
"HULY_URL": "https://huly.app",
"HULY_EMAIL": "[email protected]",
"HULY_PASSWORD": "yourpassword",
"HULY_WORKSPACE": "yourworkspace"
}
}
}
}
Claude Code
claude mcp add huly \
-e HULY_URL=https://huly.app \
-e [email protected] \
-e HULY_PASSWORD=yourpassword \
-e HULY_WORKSPACE=yourworkspace \
-- npx -y @dugynoo/huly-mcp@latest
或者使用上方的标准配置添加到 ~/.claude.json。
Claude Desktop
将标准配置添加到 claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
VS Code
添加到用户设置(.vscode/mcp.json),或使用命令面板 → “MCP: Add Server”:
{
"servers": {
"huly": {
"command": "npx",
"args": ["-y", "@dugynoo/huly-mcp@latest"],
"env": {
"HULY_URL": "https://huly.app",
"HULY_EMAIL": "[email protected]",
"HULY_PASSWORD": "yourpassword",
"HULY_WORKSPACE": "yourworkspace"
}
}
}
}
Cursor
将标准配置添加到 ~/.cursor/mcp.json,或通过设置 → 工具与集成 → 新建 MCP 服务进行添加。
Windsurf
将标准配置添加到 Windsurf MCP 配置文件。
OpenCode
打开全局配置文件(~/.config/opencode/opencode.json),并将此配置添加到 mcp 部分。
"huly": {
"type": "local",
"command": ["npx", "-y", "@dugynoo/huly-mcp@latest"],
"environment": {
"HULY_URL": "https://huly.app",
"HULY_EMAIL": "[email protected]",
"HULY_PASSWORD": "yourpassword",
"HULY_WORKSPACE": "yourworkspace"
}
}
更新
安装命令中的 @latest 标签始终会获取最新版本。大多数 MCP 客户端会缓存已安装的软件包,因此需要强制重新获取:
| 客户端 | 更新方法 |
|---|---|
| Claude Code | 执行 claude mcp remove huly,然后使用上方的安装命令重新添加 |
| Claude Desktop | 重启应用(启动时会运行 npx) |
| VS Code / Cursor | 从命令面板重启 MCP 服务,或重新加载窗口 |
| npx (manual) | npx -y @dugynoo/huly-mcp@latest — 当 @latest 指向新版本时,-y 标志会跳过缓存 |
HTTP 传输
默认情况下,服务使用 stdio 传输。要使用 HTTP 传输(Streamable HTTP):
HULY_URL=https://huly.app \
[email protected] \
HULY_PASSWORD=yourpassword \
HULY_WORKSPACE=yourworkspace \
MCP_TRANSPORT=http \
npx -y @dugynoo/huly-mcp@latest
服务默认监听 http://127.0.0.1:3000/mcp。
使用 MCP_HTTP_PORT 和 MCP_HTTP_HOST 进行配置:
MCP_TRANSPORT=http MCP_HTTP_PORT=8080 MCP_HTTP_HOST=0.0.0.0 npx -y @dugynoo/huly-mcp@latest
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
HULY_URL | 是 | Huly 实例 URL |
HULY_EMAIL | 身份验证* | 账户邮箱 |
HULY_PASSWORD | 身份验证* | 账户密码 |
HULY_TOKEN | 身份验证* | API 令牌(可替代邮箱/密码) |
HULY_WORKSPACE | 是 | 工作区标识符 |
HULY_CONNECTION_TIMEOUT | 否 | 连接超时时间,单位为 ms(默认值:30000) |
MCP_TRANSPORT | 否 | 传输类型:stdio(默认)或 http |
MCP_HTTP_PORT | 否 | HTTP 服务端口(默认值:3000) |
MCP_HTTP_HOST | 否 | HTTP 服务主机(默认值:127.0.0.1) |
TOOLSETS | 否 | 要公开的工具类别,以逗号分隔。未设置时会公开所有工具。示例:issues,projects,search |
*身份验证:提供 HULY_EMAIL + HULY_PASSWORD 或 HULY_TOKEN。
与 @firfi/huly-mcp 的差异
此软件包是 @firfi/huly-mcp 的下游版本,并新增了两项功能:
- 在
create_issue和update_issue上添加taskType参数,以便使用自定义任务类型(例如Ticket、Bug、Feature)以及项目范围内的状态工作流(Created、Awaiting approval等)创建问题。没有此参数时,即使项目定义了自己的任务类型,通过 MCP 创建的问题仍会回退到默认任务类型。 - 只读 Process 插件工具:
list_processes、get_process、list_executions。需要启用了 Process 插件的 Huly 服务(v0.7.382+)。
原上游版权信息保留在 LICENSE 中。
可用工具
TOOLSETS 类别: projects、issues、comments、milestones、documents、storage、attachments、contacts、channels、calendar、time tracking、search、activity、notifications、workspace、associations、cards、custom-fields、labels、leads、processes、tag-categories、task-management、test-management、user-statuses
项目
| 工具 | 描述 |
|---|---|
list_projects | 列出所有 Huly 项目。按名称排序返回项目。支持按归档状态筛选。 |
get_project | 获取 Huly 项目的完整详情,包括其状态。返回项目名称、描述、归档标记、默认状态和所有可用状态。 |
list_statuses | 列出 Huly 项目的所有问题状态及其类别信息。返回状态名称、isDone、isCanceled 和 isDefault 标记。创建或更新问题前,可用此工具查找有效状态。 |
create_project | 创建新的 Huly tracker 项目。具有幂等性:如果已存在具有相同标识符的项目,则返回该项目(created=false)。标识符必须为 1 到 5 个大写字母数字字符,且以字母开头。 |
update_project | 更新 Huly 项目。仅修改已提供的字段。将描述设为 null 可清除描述。 |
delete_project | 永久删除 Huly 项目。此项目中的所有问题、里程碑和组件都将成为孤立项。此操作无法撤销。 |
问题
| 工具 | 描述 |
|---|---|
preview_deletion | 在实际删除 Huly 实体之前,预览删除的影响。显示受影响的子实体、关系和警告。支持问题、项目、组件和里程碑。调用删除操作前,使用此工具了解级联影响。 |
list_issues | 查询 Huly 问题,可选使用筛选条件。返回按修改日期排序的问题(最新的排在前面)。支持按项目、状态、受派人、组件和 parentIssue 筛选(以列出特定问题的子问题)。支持按标题子字符串(titleSearch)和描述内容(descriptionSearch)搜索。 |
get_issue | 获取 Huly 问题的完整详情,包括 Markdown 描述。使用此工具查看问题内容、评论或完整元数据。 |
create_issue | 在 Huly 项目中创建新问题。可通过指定 parentIssue 将其创建为子问题。描述支持 Markdown 格式。返回创建的问题标识符。 |
update_issue | 更新现有 Huly 问题的字段。仅修改已提供的字段。描述更新支持 Markdown。 |
add_issue_label | 为 Huly 问题添加标签。如果项目中不存在该标签,则会创建。 |
remove_issue_label | 从 Huly 问题中移除标签。解除标签引用,但不会删除标签定义。 |
delete_issue | 永久删除 Huly 问题。此操作无法撤销。 |
move_issue | 将问题移至新的父级(使其成为子问题),或移至顶层(null)。更新父子关系和子问题数量。 |
list_components | 列出 Huly 项目中的组件。组件按领域/功能组织问题。返回按修改日期排序的组件(最新的排在前面)。 |
get_component | 获取 Huly 组件的完整详情。使用此工具查看组件内容和元数据。 |
create_component | 在 Huly 项目中创建新组件。组件有助于按领域/功能组织问题。返回创建的组件 ID 和标签。 |
update_component | 更新现有 Huly 组件的字段。仅修改已提供的字段。 |
set_issue_component | 设置或清除 Huly 问题的组件。传入 null 作为组件即可清除。 |
delete_component | 永久删除 Huly 组件。此操作无法撤销。 |
list_issue_templates | 列出 Huly 项目中的问题模板。模板定义可复用的问题配置。返回按修改日期排序的模板(最新的排在前面)。 |
get_issue_template | 获取 Huly 问题模板的完整详情,包括子项(子任务模板)。使用此工具查看模板内容、默认值和子模板 ID。 |
create_issue_template | 在 Huly 项目中创建新问题模板。模板为新问题定义默认值。可选包含子项(子任务模板),使用此模板创建问题时,这些子项将成为子问题。返回创建的模板 ID 和标题。 |
create_issue_from_template | 根据模板创建新问题。应用模板默认值,并允许覆盖特定字段。如果模板包含子项(子任务模板),除非将 includeChildren 设为 false,否则会自动创建子问题。返回创建的问题标识符和创建的子问题数量。 |
update_issue_template | 更新现有 Huly 问题模板的字段。仅修改已提供的字段。 |
delete_issue_template | 永久删除 Huly 问题模板。此操作无法撤销。 |
add_template_child | 为问题模板添加子项(子任务)模板。使用 create_issue_from_template 时,此子模板用于定义所创建子问题的默认值。返回子模板 ID。 |
remove_template_child | 根据子项 ID 从问题模板中移除子项(子任务)模板。可从 get_issue_template 响应中获取子项 ID。 |
add_issue_relation | 在两个问题之间添加关系。关系类型:'blocks'(源问题阻止目标问题——添加到目标问题的 blockedBy 中)、'is-blocked-by'(源问题被目标问题阻止——添加到源问题的 blockedBy 中)、'relates-to'(双向链接——更新两侧)。targetIssue 接受跨项目标识符,例如 'OTHER-42'。如果关系已存在,则不执行任何操作。 |
remove_issue_relation | 移除两个问题之间的关系。与 add_issue_relation 相对应:'blocks' 从目标问题的 blockedBy 中移除,'is-blocked-by' 从源问题的 blockedBy 中移除,'relates-to' 从两侧移除。如果关系不存在,则不执行任何操作。 |
list_issue_relations | 列出某个问题的所有关系。返回 blockedBy(阻止此问题的问题)、relations(双向问题链接)和 documents(含标题/团队空间信息的已链接文档)。不会返回此问题所阻止的问题——请在目标问题上使用 list_issue_relations 查看。 |
link_document_to_issue | 将 Huly 文档链接到问题。此链接会显示在界面中问题的“关系”面板里。幂等:如果文档已链接,则不执行任何操作。使用 list_issue_relations 查看已链接的文档。 |
unlink_document_from_issue | 从问题中移除文档链接。幂等:如果文档未链接,则不执行任何操作。 |
评论
| 工具 | 说明 |
|---|---|
list_comments | 列出 Huly 问题中的评论。按创建日期排序(从早到晚)。包含线程回复的评论会将回复放在 replies 数组中(从早到晚)。 |
add_comment | 为 Huly 问题添加评论。评论正文支持 Markdown 格式。 |
update_comment | 更新 Huly 问题中现有的评论。评论正文支持 Markdown 格式。 |
delete_comment | 删除 Huly 问题中的评论。此操作无法撤销。 |
里程碑
| 工具 | 说明 |
|---|---|
list_milestones | 列出 Huly 项目中的里程碑。按修改日期排序(从新到旧)。 |
get_milestone | 获取 Huly 里程碑的完整详情。用于查看里程碑内容和元数据。 |
create_milestone | 在 Huly 项目中创建新里程碑。返回已创建里程碑的 ID 和标签。 |
update_milestone | 更新现有 Huly 里程碑的字段。仅修改已提供的字段。 |
set_issue_milestone | 设置或清除 Huly 问题的里程碑。传入 null 可清除里程碑。 |
delete_milestone | 永久删除 Huly 里程碑。此操作无法撤销。 |
文档
| 工具 | 说明 |
|---|---|
list_teamspaces | 列出所有 Huly 文档团队空间。按名称排序。支持按归档状态筛选。 |
get_teamspace | 获取 Huly 文档团队空间的详情,包括文档数量。可按名称或 ID 查找,包括已归档的团队空间。 |
create_teamspace | 创建新的 Huly 文档团队空间。幂等:如果存在同名团队空间,则返回现有团队空间。 |
update_teamspace | 更新现有 Huly 文档团队空间的字段。仅修改已提供的字段。将 description 设为 null 可清除描述。 |
delete_teamspace | 永久删除 Huly 文档团队空间。此操作无法撤销。 |
list_documents | 列出 Huly 团队空间中的文档。按修改日期排序(从新到旧)。每个结果都包含指向 Huly Web 应用中该文档的 'url' 字段。支持按标题子串 (titleSearch) 和内容 (contentSearch) 搜索。 |
get_document | 获取 Huly 文档的完整详情,包括 Markdown 内容以及指向 Huly Web 应用中该文档的 'url' 字段。用于查看文档内容和元数据。 |
create_document | 在 Huly 团队空间中创建新文档。内容支持完整 Markdown,包括原生 Mermaid 图表(```mermaid 代码块会在 Huly UI 中交互式呈现)。可选地传入父文档的标题或 ID 作为 parent,以创建嵌套子文档;父文档无效时会报错,而不会静默创建顶层文档。返回已创建文档的 id,以及指向 Huly Web 应用中该文档的 'url' 字段。使用 link_document_to_issue 将文档关联到跟踪器问题。 |
edit_document | 编辑现有 Huly 文档。支持两种互斥的内容模式:(1) 使用 'content' 完整替换;(2) 使用 'old_text' + 'new_text' 定向搜索并替换。除非 replace_all 为 true,否则匹配多处时会报错。将 new_text 设为空字符串可删除匹配文本。还支持通过 'title' 重命名。内容支持完整 Markdown,包括原生 Mermaid 图表。返回指向 Huly Web 应用中该文档的 'url' 字段。 |
list_inline_comments | 列出 Huly 文档中的行内评论线程。从文档内容中提取以 ProseMirror 标记嵌入的评论。每条评论都包含高亮文本和线程 ID。设置 includeReplies=true 还会获取线程回复消息及发送者姓名。 |
delete_document | 永久删除 Huly 文档。此操作无法撤销。 |
存储
| 工具 | 描述 |
|---|---|
upload_file | 将文件上传到 Huly 存储。提供以下其中一项:filePath(本地文件,首选)、fileUrl(从 URL 获取)或 data(base64,仅适用于小文件)。返回用于引用该文件的 blob ID 和 URL。 |
附件
| 工具 | 描述 |
|---|---|
list_attachments | 列出 Huly 对象(问题、文档等)上的附件。按修改日期排序(最新的在前)。 |
get_attachment | 获取 Huly 附件的完整详细信息,包括下载 URL。 |
add_attachment | 为 Huly 对象添加附件。提供以下其中一项:filePath(本地文件,首选)、fileUrl(从 URL 获取)或 data(base64)。返回附件 ID 和下载 URL。 |
update_attachment | 更新附件元数据(描述、置顶状态)。 |
delete_attachment | 永久删除附件。此操作无法撤销。 |
pin_attachment | 置顶或取消置顶附件。 |
download_attachment | 获取附件的下载 URL 以及文件元数据(名称、类型、大小)。 |
add_issue_attachment | 为 Huly 问题添加附件。此便捷方法会根据项目和标识符查找问题。提供以下其中一项:filePath、fileUrl 或 data。 |
add_document_attachment | 为 Huly 文档添加附件。此便捷方法会根据团队空间和标题/ID 查找文档。提供以下其中一项:filePath、fileUrl 或 data。 |
联系人
| 工具 | 描述 |
|---|---|
list_persons | 列出 Huly 工作区中的所有人员。返回的人员按修改日期排序(最新的在前)。支持按姓名子串(nameSearch)和电子邮件子串(emailSearch)搜索。 |
get_person | 获取人员的完整详细信息,包括联系渠道。使用 personId 或电子邮件地址来识别人员。 |
create_person | 在 Huly 中创建新人员。返回创建的人员 ID。 |
update_person | 更新现有人员的字段。仅修改提供的字段。 |
delete_person | 从 Huly 永久删除人员。此操作无法撤销。 |
list_employees | 列出员工(即团队成员)。返回的员工按修改日期排序(最新的在前)。 |
list_organizations | 列出 Huly 工作区中的所有组织。返回的组织按修改日期排序(最新的在前)。 |
create_organization | 在 Huly 中创建新组织。可选择按人员 ID 或电子邮件地址添加成员。如果无法解析任何指定成员,则操作失败。返回创建的组织 ID。 |
get_organization | 按 ID 或唯一的精确名称获取组织的完整详细信息,包括城市、描述、成员数和修改时间戳。如果多个组织同名,请使用组织 ID。 |
update_organization | 按 ID 或唯一的精确名称更新现有组织的字段。仅修改提供的字段。描述支持多行纯文本,适合存储 CRM 备注、营收摘要和背景信息。传入 null 可清除城市或描述。如果多个组织同名,请使用组织 ID。 |
delete_organization | 按 ID 或唯一的精确名称永久删除组织。请谨慎使用——此操作无法撤销。适用于在其他位置合并数据后清理重复组织。如果多个组织同名,请使用组织 ID。 |
make_organization_customer | 为组织应用 Customer 混入项,使其显示在 Huly 的 Leads > Customers 视图中。此操作幂等,可安全用于已是客户的组织。接受组织 ID 或唯一的精确名称。 |
add_organization_channel | 为按 ID 或唯一的精确名称标识的组织添加联系渠道(电话、电子邮件、网站/主页、LinkedIn、Twitter、GitHub、Facebook、Telegram)。提供方名称:email、phone、linkedin、twitter、github、facebook、telegram、homepage。 |
add_organization_member | 将人员关联为组织成员。该人员会显示在 Huly 组织的 Members 选项卡下。使用人员 ID 或电子邮件地址来识别人员。此操作幂等:如果该人员已经是成员,则返回 added=false。 |
list_organization_members | 列出组织的所有成员。返回每位成员的人员 ID、姓名和主要电子邮件地址(如果有)。使用名称而非 ID 时,该名称必须唯一对应一个组织。 |
list_person_organizations | 列出人员所属的所有组织。提供 personId 或电子邮件地址。返回每个组织的 ID 和名称。 |
remove_organization_member | 将人员从组织成员中移除。与 add_organization_member 的操作相反。如果该人员不是成员,则返回 removed: false。使用组织名称而非 ID 时,该名称必须唯一对应一个组织。 |
频道
| 工具 | 描述 |
|---|---|
list_channels | 列出所有 Huly 频道。返回按名称排序的频道。支持按归档状态筛选。支持搜索名称子串(nameSearch)和主题子串(topicSearch)。 |
get_channel | 获取 Huly 频道的完整详情,包括主题和成员列表。 |
create_channel | 在 Huly 中创建新频道。返回创建的频道 ID 和名称。 |
update_channel | 更新现有 Huly 频道的字段。仅修改提供的字段。 |
delete_channel | 永久删除 Huly 频道。此操作无法撤销。 |
list_channel_messages | 列出 Huly 频道中的消息。返回按日期排序的消息(最新的在前)。 |
send_channel_message | 向 Huly 频道发送消息。消息正文支持 Markdown 格式。 |
update_channel_message | 更新频道消息。只能修改正文。 |
delete_channel_message | 永久删除频道消息。此操作无法撤销。 |
list_direct_messages | 列出 Huly 中的私信对话。返回按日期排序的对话(最新的在前)。 |
create_direct_message | 与工作区成员开启一对一私信对话。person 参数接受电子邮件地址或精确的显示名称(例如 Smith,Bill)。此操作具有幂等性:如果与该参与者的私信已存在,则返回该私信(created: false);否则创建新的私信(created: true)。返回的 id 可作为 dm 参数传给 send_dm_message、list_dm_messages 等工具。 |
list_dm_messages | 列出私信对话中的消息,按最新优先排序。dm 参数接受私信 _id 或参与者的显示名称(例如 Kerr,Shannon);名称仅会解析为与已验证账户的一对一私信。 |
send_dm_message | 向私信对话发送消息。dm 参数接受私信 _id 或参与者的显示名称;名称仅会解析为与已验证账户的一对一私信。消息正文支持 Markdown 格式。 |
update_dm_message | 更新私信消息。dm 参数接受私信 _id 或参与者的显示名称;名称仅会解析为与已验证账户的一对一私信。只能修改正文。 |
delete_dm_message | 永久删除私信消息。dm 参数接受私信 _id 或参与者的显示名称;名称仅会解析为与已验证账户的一对一私信。此操作无法撤销。 |
list_thread_replies | 列出消息线程中的回复。返回按日期排序的回复(最早的在前)。 |
add_thread_reply | 在消息线程中添加回复。回复正文支持 Markdown 格式。 |
update_thread_reply | 更新线程回复。只能修改正文。 |
delete_thread_reply | 永久删除线程回复。此操作无法撤销。 |
日历
| 工具 | 描述 |
|---|---|
list_events | 列出日历活动。返回按日期排序的活动。支持按日期范围筛选。 |
list_calendars | 列出可写入且未隐藏的日历,这些日历可用作 create_event 或 create_recurring_event 的目标。需要明确选择目标 calendarId 时,请在创建活动前使用此工具。 |
get_event | 获取日历活动的完整详情,包括描述。使用此工具查看活动内容和元数据。 |
create_event | 创建新的日历活动。描述支持 Markdown 格式。可选的 calendarId 用于指定日历;若省略,活动将使用已认证用户的主个人日历。返回创建的活动 ID。 |
update_event | 更新现有日历活动的字段。仅修改提供的字段。描述更新支持 Markdown。 |
delete_event | 永久删除日历活动。此操作无法撤销。 |
list_recurring_events | 列出重复活动定义。返回按修改日期排序的重复活动(最新的在前)。 |
create_recurring_event | 使用 RFC5545 RRULE 规则创建新的重复日历活动。描述支持 Markdown 格式。可选的 calendarId 用于指定日历;若省略,活动将使用已认证用户的主个人日历。返回创建的活动 ID。 |
list_event_instances | 列出重复活动的实例。返回按日期排序的实例。支持按日期范围筛选。使用 includeParticipants=true 可获取完整参与者信息(需要额外查询)。 |
时间跟踪
| 工具 | 描述 |
|---|---|
log_time | 记录在 Huly 问题上花费的时间。记录一条可选带描述的时间条目。时间值以分钟为单位。 |
get_time_report | 获取特定 Huly 问题的时间跟踪报告。显示总时间、预估时间、剩余时间以及所有时间条目。 |
list_time_spend_reports | 列出所有问题的时间条目。支持按项目和日期范围筛选。返回按日期排序的条目(最新的在前)。 |
get_detailed_time_report | 获取项目的详细时间明细。显示按问题和员工分组的总时间。支持按日期范围筛选。 |
list_work_slots | 列出已安排的工作时段。显示关联到待办事项的计划时间块。支持按员工和日期范围筛选。 |
create_work_slot | 创建已安排的工作时段。将时间块关联到待办事项,用于规划。 |
start_timer | 在 Huly 问题上启动客户端计时器。验证问题是否存在,并返回开始时间戳。完成后使用 log_time 记录经过的时间。 |
stop_timer | 停止 Huly 问题上的客户端计时器。返回停止时间戳。根据开始和停止时间戳计算经过的时间,并使用 log_time 记录。 |
dedup_planner_todos | 移除重复的 Planner 待办事项;Huly 服务有时会为同一个问题创建多个副本 |
搜索
| 工具 | 描述 |
|---|---|
fulltext_search | 在所有 Huly 内容中执行全局全文搜索。搜索问题、文档、消息和其他已编入索引的内容。返回按相关性排序的匹配项(最新的在前)。 |
活动
| 工具 | 描述 |
|---|---|
list_activity | 列出 Huly 对象的活动消息。返回按日期排序的活动(最新的在前)。 |
add_reaction | 为活动消息添加表情符号回应。 |
remove_reaction | 移除活动消息上的表情符号回应。 |
list_reactions | 列出活动消息上的回应。 |
save_message | 保存/收藏活动消息,以便稍后查阅。 |
unsave_message | 从已保存/收藏的列表中移除活动消息。 |
list_saved_messages | 列出已保存/收藏的活动消息。 |
list_mentions | 列出活动消息中对当前用户的 @提及。 |
通知
| 工具 | 描述 |
|---|---|
list_notifications | 列出收件箱通知。按修改日期排序(从新到旧)。支持按已读/已归档状态筛选。 |
get_notification | 获取通知的完整详细信息。使用此工具查看通知内容和元数据。 |
mark_notification_read | 将通知标记为已读。 |
mark_all_notifications_read | 将所有未读通知标记为已读。返回已标记通知的数量。 |
archive_notification | 归档通知。已归档的通知不会显示在主收件箱视图中。 |
archive_all_notifications | 归档所有通知。返回已归档通知的数量。 |
delete_notification | 永久删除通知。此操作无法撤销。 |
get_notification_context | 获取实体的通知上下文。返回特定对象的跟踪信息。 |
list_notification_contexts | 列出通知上下文。按最后更新时间排序(从新到旧)。支持按固定状态筛选。 |
pin_notification_context | 固定或取消固定通知上下文。固定的上下文会在收件箱中突出显示。 |
list_notification_settings | 列出通知提供方设置。返回当前通知偏好设置。 |
update_notification_provider_setting | 更新通知提供方设置。启用或禁用特定提供方的通知。 |
get_unread_notification_count | 获取未读通知的数量。 |
工作区
| 工具 | 描述 |
|---|---|
list_workspace_members | 列出当前 Huly 工作区的成员及其角色。返回成员的账号 ID 和角色。 |
update_member_role | 更新工作区成员的角色。需要相应权限。有效角色:READONLYGUEST、DocGuest、GUEST、USER、MAINTAINER、OWNER、ADMIN。 |
get_workspace_info | 获取当前工作区的信息,包括名称、URL、区域和设置。 |
list_workspaces | 列出当前用户可访问的所有工作区。按最近访问时间排序,返回工作区摘要。 |
create_workspace | 创建新的 Huly 工作区。返回工作区 UUID 和 URL。可选指定区域。 |
delete_workspace | 永久删除当前工作区。此操作无法撤销。请极其谨慎地使用。 |
get_user_profile | 获取当前用户的个人资料信息,包括简介、所在地和社交链接。 |
update_user_profile | 更新当前用户的个人资料。支持简介、城市、国家/地区、网站、社交链接和公开可见性。 |
update_guest_settings | 更新工作区访客设置。控制只读访客访问权限和访客注册权限。 |
create_access_link | 创建 Huly 工作区访问链接。默认角色为 GUEST。设置 personalized=false,并提供 notBefore 和过期时间,即可创建可重复使用的匿名访客链接;还可通过 spaces 将访问限制为特定的 Huly 空间 ID。 |
get_regions | 获取创建工作区时可用的区域。返回区域代码和显示名称。 |
关联
| 工具 | 描述 |
|---|---|
list_associations | 列出工作区中的 Huly 关联定义。每个关联都是两个文档类之间的类型化链接(例如,Person ↔ Organization,基数为 1:1 / 1:N / N:N)。可按 classA 或 classB 筛选。 |
create_association | 在两个文档类之间创建新的 Huly 关联。幂等:如果具有相同 (classA, classB, nameA, nameB) 元组的关联已存在,则返回该关联。 |
list_relations | 列出 Huly 关系,即文档之间的具体链接。可按 association(ID)、docA(源文档 ID)或 docB(目标文档 ID)筛选。 |
create_relation | 通过现有的关联链接两个文档。幂等:如果相同的关联已连接 (docA, docB),则返回现有关系。 |
delete_relation | 移除两个文档之间的关系。幂等:如果该关系已不存在,则返回 deleted=false。 |
卡片
| 工具 | 描述 |
|---|---|
list_card_spaces | 列出所有 Huly 卡片空间。返回按名称排序的卡片空间。卡片空间是卡片的容器。 |
list_master_tags | 列出 Huly 卡片空间中可用的主标签(卡片类型)。主标签定义了可在空间中创建的卡片类型/架构。 |
list_cards | 列出 Huly 卡片空间中的卡片。返回按修改日期排序的卡片(最新的排在前面)。支持按类型(主标签)、标题子串和内容搜索筛选。 |
get_card | 获取 Huly 卡片的完整详情,包括 Markdown 内容。可用此工具查看卡片内容和元数据。 |
create_card | 在 Huly 卡片空间中创建新卡片。需要指定主标签(卡片类型)。内容支持 Markdown 格式。返回创建的卡片 ID。 |
update_card | 更新现有 Huly 卡片的字段。仅修改提供的字段。内容更新支持 Markdown。 |
delete_card | 永久删除 Huly 卡片。此操作无法撤销。 |
自定义字段
| 工具 | 描述 |
|---|---|
list_custom_fields | 列出工作区中的自定义字段定义。返回字段的标签、类型和所有者类信息。自定义字段在 Huly UI 中为卡片类型、问题类型或其他类创建。使用 targetClass 筛选特定类的字段。 |
get_custom_field_values | 读取文档中的自定义字段值。传入文档的 ID 和类(来自 list_cards、list_issues 等)。返回在文档中找到的所有自定义字段值及其标签和类型。 |
set_custom_field | 为文档设置自定义字段值。需要提供文档 ID、类、字段 ID(来自 list_custom_fields)和值。系统会自动解析值:将数字字符串解析为数字,将 'true'/'false' 解析为布尔值,字符串则保持原样。 |
标签
| 工具 | 描述 |
|---|---|
list_labels | 列出工作区中的标签定义。标签是全局的(不限定于项目)。返回跟踪器问题的标签,按修改日期排序(最新的排在前面)。 |
create_label | 在工作区中创建新的标签定义。标签是全局的,可附加到任何问题。如果已存在同名标签,则返回现有标签(created=false)。使用 add_issue_label 将标签附加到特定问题。 |
update_label | 更新标签定义。可接受标签 ID 或标题。仅修改提供的字段。 |
delete_label | 永久删除标签定义。可接受标签 ID 或标题。此操作无法撤销。 |
潜在客户
| 工具 | 描述 |
|---|---|
list_funnels | 列出所有 Huly 销售漏斗(潜在客户管道)。返回每个漏斗的稳定 ID 和显示名称,并按名称排序。支持按归档状态筛选。 |
list_leads | 查询漏斗中的 Huly 潜在客户,并可选应用筛选条件。传入 list_funnels 返回的漏斗 ID,或传入漏斗名称以便查找。返回的潜在客户按修改日期排序(最新的在前)。支持按状态、受派人和标题搜索筛选。 |
get_lead | 获取 Huly 潜在客户的完整详情,包括 Markdown 描述、客户名称、漏斗 ID 和漏斗名称,以及状态。潜在客户标识符采用上游 Huly 格式,例如 'LEAD-1'。 |
create_lead | 在 Huly 漏斗中创建潜在客户。customer 是组织名称:如果存在名称匹配的组织,则重复使用;否则会创建一个带有 Customer mixin 的新组织。可选填写 Markdown 描述、初始状态名称和受派人。返回 LEAD-N 标识符、潜在客户 ID 和漏斗 ID。要附加文件,请使用 add_attachment,并将 objectClass 设为 'lead:class:Lead'、objectId 设为返回的 ID,space 设为返回的 funnelId。 |
update_lead | 更新由 LEAD-N 标识的 Huly 潜在客户。仅更新提供的字段:状态(按名称)、标题、Markdown 描述、受派人(电子邮件或姓名;设为 null 可取消指派)。 |
流程
| 工具 | 描述 |
|---|---|
list_processes | 列出工作区中的 Huly 流程定义。每个流程都是附加到卡片类(master tag)的工作流。可选按 masterTag 筛选,以查找特定卡片类型的流程。只读。 |
get_process | 按 ID 或显示名称获取单个 Huly 流程定义。返回名称、描述、主标签以及启动/自动化标志。只读。 |
list_executions | 列出流程执行——针对特定卡片运行的进行中或已完成的工作流。可按 process(ID 或名称)、card(卡片 ID)或 status(active/done/cancelled)筛选。每条执行记录都包含当前工作流状态和错误标志。只读。 |
start_process | 针对卡片启动新的流程执行。按 ID 或显示名称解析流程,并在第一个工作流状态(最低排名)创建一个活跃的执行。随后,Huly 服务的流程引擎会自动触发 OnExecutionStart 触发器,以推进该执行。 |
cancel_execution | 将进行中的流程执行状态设为 'cancelled',以取消该执行。幂等——已取消的执行会返回 cancelled=false。 |
标签类别
| 工具 | 描述 |
|---|---|
list_tag_categories | 列出工作区中的标签/标记类别。类别用于归组标签(例如,'Priority Labels'、'Type Labels')。可选使用 targetClass 筛选(默认为全部)。 |
create_tag_category | 创建新的标签/标记类别。此操作是幂等的:如果已存在 label 和 targetClass 相同的类别,则返回该类别(created=false)。targetClass 默认为 tracker 问题。 |
update_tag_category | 更新标签/标记类别。接受类别 ID 或标签名称。仅修改提供的字段。 |
delete_tag_category | 永久删除标签/标记类别。接受类别 ID 或标签名称。此类别中的标签将成为孤立项(不会被删除)。此操作无法撤销。 |
任务管理
| 工具 | 描述 |
|---|---|
list_project_types | 列出 Huly 跟踪器项目类型/工作流模板。返回 ID、显示名称、描述符、任务类型数量、状态数量,以及该类型是否看起来是默认的 Classic 跟踪器类型。 |
get_project_type | 一次调用即可检查一个 Huly 跟踪器项目类型。接受 projectType 的 ID 或显示名称;省略时使用明确无歧义的 Classic 跟踪器类型。返回任务类型、状态、类别以及任务类型到状态的映射。 |
list_task_types | 列出 Huly 问题/任务类型。可选择按项目类型 ID 或显示名称筛选。返回任务类型标识、父项目类型、种类、问题类别以及可用状态数量。 |
create_task_type | 在项目类型中按规范化名称幂等地添加 Huly 问题/任务类型。除非指定 templateTaskType,否则会从现有模板任务类型复制必需的工作流配置。返回 created、ID、受影响的任务类型 ID,以及工作区级工作流警告。 |
create_issue_status | 在项目类型和任务类型范围内,按规范化名称幂等地添加 Huly 问题工作流状态。category 接受 backlog、todo、active、done 或 canceled;taskType 可以是 ID 或显示名称,省略时会将该状态应用于项目类型中的所有任务类型。 |
测试管理
| 工具 | 描述 |
|---|---|
list_test_projects | 列出测试管理项目。按名称排序返回测试项目。这些项目与跟踪器项目相互独立。 |
list_test_suites | 列出测试项目中的测试套件。接受项目 ID 或名称。可选按父级筛选嵌套套件。 |
get_test_suite | 在测试项目中按 ID 或名称获取单个测试套件。返回套件详情和测试用例数量。 |
create_test_suite | 在测试项目中创建测试套件。幂等:如果存在同名套件,则返回现有套件(created=false)。可选指定父级以进行嵌套。 |
update_test_suite | 更新测试套件。接受套件 ID 或名称。仅修改提供的字段。 |
delete_test_suite | 永久删除测试套件。接受套件 ID 或名称。此操作无法撤销。 |
list_test_cases | 列出测试项目中的测试用例。可选筛选条件:套件(ID 或名称)、受派人(姓名或电子邮件)。 |
get_test_case | 在测试项目中按 ID 或名称获取单个测试用例。 |
create_test_case | 创建并关联到套件的测试用例。需要项目和套件。默认值:type=functional、priority=medium、status=draft。 |
update_test_case | 更新测试用例。接受测试用例 ID 或名称。仅修改提供的字段。将 assignee 设为 null 可取消分配。 |
delete_test_case | 永久删除测试用例。接受测试用例 ID 或名称。此操作无法撤销。 |
list_test_plans | 列出测试管理项目中的测试计划。返回计划名称和 ID。需要项目 ID 或名称。 |
get_test_plan | 获取测试计划详情,包括其条目(测试用例)。接受项目中的计划 ID 或名称。 |
create_test_plan | 在项目中创建测试计划。幂等:如果存在同名计划,则返回现有计划(created=false)。 |
update_test_plan | 更新测试计划的名称或描述。仅修改提供的字段。传入 description=null 可清除描述。 |
delete_test_plan | 永久删除测试计划。不会删除关联的测试运行。此操作无法撤销。 |
add_test_plan_item | 将测试用例添加到测试计划。按 ID 或名称查找测试用例。可选按电子邮件或姓名分配人员。 |
remove_test_plan_item | 按条目 ID 从测试计划中移除测试用例。通过 get_test_plan 获取条目 ID。 |
list_test_runs | 列出测试管理项目中的测试运行。返回运行名称、ID 和截止日期。 |
get_test_run | 获取测试运行详情,包括所有结果。接受项目中的运行 ID 或名称。 |
create_test_run | 在项目中创建测试运行。要根据计划批量创建,请改用 run_test_plan。 |
update_test_run | 更新测试运行的名称、描述或截止日期。仅修改提供的字段。传入 null 可清除可选字段。 |
delete_test_run | 永久删除测试运行。不会删除关联的测试结果。此操作无法撤销。 |
list_test_results | 列出测试运行中的测试结果。返回结果名称、状态和受派人。 |
get_test_result | 获取测试结果详情。接受结果 ID 或名称。 |
create_test_result | 在运行中创建测试结果。按 ID 或名称查找测试用例。状态默认为 'untested'。 |
update_test_result | 更新测试结果的状态、受派人或描述。状态值:untested、blocked、passed、failed。 |
delete_test_result | 永久删除测试结果。此操作无法撤销。 |
run_test_plan | 执行测试计划:创建一个测试运行,并为每个计划条目创建一个测试结果。返回运行 ID 和创建的结果数量。可选为运行命名并设置截止日期。 |
用户状态
| 工具 | 描述 |
|---|---|
list_user_statuses | 列出 Huly 用户在线状态记录:当前在线的用户、其账户 UUID 以及最后一次状态变更的时间戳。可按 online(true/false)或 user(账户 UUID)筛选。此工具为只读;在线状态由服务器根据 websocket 连接状态维护。 |
故障排除
包含特殊字符的密码
如果你的 Huly 密码包含 *、%、! 或 # 等字符,通过 CLI -e 标志传递密码可能会失败,因为 shell 会在这些字符传递给进程之前对其进行解析。
解决方案:直接编辑 MCP 配置文件,而不是使用 claude mcp add -e。在 ~/.claude.json(用户范围)或 .mcp.json(项目范围)中,JSON 原生支持所有特殊字符:
{
"mcpServers": {
"huly": {
"type": "stdio",
"command": "node",
"args": ["path/to/dist/index.cjs"],
"env": {
"HULY_URL": "https://your-huly-instance.com",
"HULY_EMAIL": "[email protected]",
"HULY_PASSWORD": "p@ss*w0rd!#%",
"HULY_WORKSPACE": "your-workspace"
}
}
}
}
或者,使用 HULY_TOKEN 代替邮箱/密码,以完全绕过密码验证(参见环境变量)。
MCP 客户端显示“Failed to reconnect”
更改 MCP 配置后,部分客户端(包括 Claude Code)需要完全重启,而不只是重新连接。请完全退出应用并重新打开。
你可以通过以下方式独立验证连接是否正常:
claude mcp list # Should show "Connected"
自托管 Huly:多次登录失败后账户被锁定
Huly 在 5 次 API 身份验证失败后会锁定密码登录。初始设置时密码配置错误,常会导致此问题。服务重启后,数据库中的锁定状态仍会保留。
症状:MCP 服务返回 PasswordLoginLocked 错误,且 Huly 网页界面显示“由于登录尝试次数过多,密码登录已锁定。请使用 OTP 登录方式解锁账户。”(未配置 SMTP 时,OTP 无法使用。)
修复方法 — 在 CockroachDB 中重置锁定计数器:
# Find your account UUID and check lock status
docker exec -e PGPASSWORD=<your_cockroach_password> <cockroach_container> \
cockroach sql --host=localhost --user=<db_user> --database=defaultdb --insecure \
-e "SELECT uuid, failed_login_attempts FROM global_account.account;"
# Reset the counter
docker exec -e PGPASSWORD=<your_cockroach_password> <cockroach_container> \
cockroach sql --host=localhost --user=<db_user> --database=defaultdb --insecure \
-e "UPDATE global_account.account SET failed_login_attempts = 0 WHERE uuid = '<your_account_uuid>';"
CockroachDB 凭据可在 Huly 的 compose.yml 中找到,也可以通过 docker exec <cockroach_container> env | grep COCKROACH 获取。
Windows 特定说明
- Bash 包装脚本(加载
.env文件)由 Windows 上的 MCP 客户端启动时可能无法可靠运行。建议直接在 MCP 配置 JSON 中设置环境变量。 - 由于凭据管理器问题,通过 SSH 拉取 Docker 镜像在 Windows 上可能会失败。如有需要,请从服务器桌面拉取镜像。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。