关于 Huly MCP
Huly MCP 将 MCP 客户端连接到 Huly Platform 部署,以执行工作区操作。工具暴露方式可配置为原生工具,或精简的发现与调用接口。
主要功能
- 01连接 Huly 实例和工作区
- 02选择原生或代理工具暴露方式
- 03搜索工具并获取其架构
- 04使用 stdio 或 HTTP 传输
- 05通过常驻 stdio 共享后端
适用场景
- 01从 MCP 客户端访问 Huly 工作区操作
- 02在工具列表受限的客户端中发现并调用工具
- 03通过 HTTP MCP 端点连接 Huly
- 04减少兼容客户端间重复运行的后端进程
MCP 相关
此 MCP 服务连接 Huly,并向 MCP 客户端提供其操作。它支持 stdio 和 HTTP 传输,并可配置原生或代理工具界面。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @firfi/huly-mcpHULY_URLReachable self-hosted or replacement hosted Huly API URLHULY_EMAILYour Huly account emailHULY_PASSWORD密钥Your Huly account passwordHULY_WORKSPACEHuly workspace identifierHULY_CONNECTION_TIMEOUTConnection timeout in milliseconds. Omit to use the package default.HULY_TOOL_MODETool exposure mode: auto (default), native, or proxy. Auto keeps exact claude-code native and resolves Codex, Cursor, Windsurf, Copilot, opencode, Claude AI, and unknown clients to proxy mode.PROXY_OUTPUT_STRICTSet true to make active TOOLSETS / TOOLS a hard allow-list for proxy search, schema lookup, and invocation. Defaults to false.TOOLSETSComma-separated native Huly tool categories to expose, such as issues,projects,search. If unset with TOOLS, all native tools are exposed.TOOLSComma-separated exact native Huly tool names to expose in addition to selected TOOLSETS, such as list_documents,create_issue.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Huly MCP
Huly MCP 是一款功能完备的 MCP 服务,可集成 Huly。该服务已发布至 npm,包名为 @firfi/huly-mcp。
它可连接到 Huly Platform 部署,也应兼容 Platform Collective 和 TraceX 分支。Intabia 0.8.33 / 模型 0.8.4 已通过兼容性测试;已知差异记录在 issue #279 中。对这些分支的支持仍属非官方支持。
Huly CLI 替代方案
正在寻找 Huly CLI、适用于终端的 Huly 集成,或可替代运行 MCP 服务的脚本编写与自动化方案?Huly CLI 是功能完备的 Huly 命令行界面,以 @firfi/huly-cli 为包名发布,其 Huly 操作能力与 Huly MCP 完全一致。它将相同的 Huly 操作作为原生、具备架构感知能力的命令提供,并支持人类可读或 JSON 格式的输出、基于文件的输入、上传和下载。
Huly MCP 和 Huly CLI 在同一个 monorepo 中共同维护,并基于同一共享操作注册表构建,因此操作输入、输出、警告和类型化错误保持一致。完整生成的命令参考请参阅 Huly CLI 文档,也可以浏览 CLI 示例、Huly 自动化模式和 Huly MCP 与 CLI 对比。
安装
Node.js 要求
Huly MCP 要求 Node.js 22.19.0 或更高版本。MCP 客户端不提供 Node.js 运行时:node、npx
以及 #!/usr/bin/env node 包可执行文件会从 MCP 客户端运行所在的环境中解析 Node.js。安装前请检查该环境:
node --version
如果 MCP 客户端使用较旧的运行时启动 Huly MCP,Huly MCP 会初始化仅用于诊断的 MCP 界面,而不会加载不兼容的应用程序。其服务说明和 get_huly_startup_diagnostic 工具会报告检测到的可执行文件和所需版本,并将相同的 unsupported Node.js runtime 诊断信息写入 stderr。请升级 Node.js,或将 MCP 服务命令配置为使用兼容的 Node.js 可执行文件的绝对路径,然后重启 MCP 服务。升级运行时前,Huly 操作仍不可用。
标准配置使用 Huly API 令牌,适用于大多数 MCP 客户端:
{
"mcpServers": {
"huly": {
"command": "npx",
"args": ["-y", "@firfi/huly-mcp@latest"],
"env": {
"MCP_TRANSPORT": "stdio-resident",
"HULY_URL": "https://your-huly-instance.example.com",
"HULY_TOKEN": "your-huly-api-token",
"HULY_WORKSPACE": "yourworkspace"
}
}
}
}
如果目标部署支持,请优先使用在 Huly 账户设置中创建的托管 API 令牌。托管令牌仅绑定到一个工作区、设有到期时间,并且可以撤销,而无需更改账户密码。不过,它们仍继承账户在该工作区中的全部权限,因此请使用专用集成账户,并仅授予自动化所需的工作区角色、空间成员资格和数据访问权限。较旧的 Huly 部署可能不提供托管令牌设置;电子邮件/密码身份验证仍可作为兼容性回退方案。
工具暴露默认设置
默认情况下(HULY_TOOL_MODE=auto),Huly MCP 会避免一次性列出 470 个工具,以优化对当前 MCP 客户端的支持。精确匹配的 claude-code 会话会收到原生 Huly 工具。Codex、Cursor、Windsurf、Copilot、OpenCode、Claude AI/Desktop 风格的客户端以及未知客户端会收到一组精简的代理工具:list_tool_categories、search_tools、get_tool_schema 和 invoke_tool。
客户端直接调用时,精确匹配的原生工具名称仍会被分派,但许多客户端只会调用 tools/list 返回的工具。将 HULY_TOOL_MODE=native 设为让所有 Huly 工具都以一等工具的形式显示;或者使用 TOOLSETS / TOOLS 固定常用的原生工具,同时保留代理发现功能。
Codex
npx 会自动下载并缓存 Huly MCP;也可以使用 pnpm dlx @firfi/huly-mcp@latest。Huly 是可选项,因此 Codex 无需它也能启动,但首次下载可能导致第一轮对话无法使用 Huly 工具。运行 /mcp 检查连接。
将以下内容添加到 ~/.codex/config.toml(120 秒的启动时限包含安装时间):
[mcp_servers.huly]
startup_timeout_sec = 120
command = "npx"
args = ["-y", "@firfi/huly-mcp@latest"]
[mcp_servers.huly.env]
MCP_TRANSPORT = "stdio-resident"
HULY_URL = "https://your-huly-instance.example.com"
HULY_TOKEN = "your-huly-api-token"
HULY_WORKSPACE = "yourworkspace"
Claude Code
claude mcp add huly \
-e MCP_TRANSPORT=stdio-resident \
-e HULY_URL=https://your-huly-instance.example.com \
-e HULY_TOKEN=your-huly-api-token \
-e HULY_WORKSPACE=yourworkspace \
-- npx -y @firfi/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
通过命令面板 →“MCP: Add Server”添加,或将以下内容放入 VS Code MCP 配置文件(例如 .vscode/mcp.json)。请勿提交包含真实凭据的工作区配置文件。
{
"servers": {
"huly": {
"command": "npx",
"args": ["-y", "@firfi/huly-mcp@latest"],
"env": {
"MCP_TRANSPORT": "stdio-resident",
"HULY_URL": "https://your-huly-instance.example.com",
"HULY_TOKEN": "your-huly-api-token",
"HULY_WORKSPACE": "yourworkspace"
}
}
}
}
Cursor
将标准配置添加到 ~/.cursor/mcp.json,或通过 Settings → Tools & Integrations → New MCP Server 添加。
Windsurf
将标准配置添加到 Windsurf MCP 配置文件中。
OpenCode
打开全局配置文件(~/.config/opencode/opencode.json),并将以下条目合并到配置中:
{
"mcp": {
"huly": {
"type": "local",
"command": ["npx", "-y", "@firfi/huly-mcp@latest"],
"environment": {
"MCP_TRANSPORT": "stdio-resident",
"HULY_URL": "https://your-huly-instance.example.com",
"HULY_TOKEN": "your-huly-api-token",
"HULY_WORKSPACE": "yourworkspace"
}
}
}
}
Pi
Pi 需要 MCP 适配器。安装后,以 auto 模式使用 Huly MCP,并将四个代理工具
提升到 Pi 的原生工具列表中:
pi install npm:pi-mcp-adapter
请参阅 Pi setup guide,了解用户全局配置、可选的
TOOLSETS/TOOLS 原生工具固定设置以及验证步骤。
更新
@latest 标签会让包运行器获取最新版本。某些 MCP 客户端会持续运行服务进程或保留已解析的安装,因此更新时请重启或重新添加服务:
| 客户端 | 更新方式 |
|---|---|
| Codex | 运行 codex mcp remove huly,然后使用上面的安装命令重新添加。如果密码包含对 shell 有特殊含义的字符,请直接编辑 ~/.codex/config.toml |
| Claude Code | 运行 claude mcp remove huly,然后使用上面的安装命令重新添加 |
| Claude Desktop | 重启应用(它会在启动时运行 npx) |
| VS Code / Cursor | 从命令面板/已配置的客户端重启 MCP 服务,或重新加载窗口 |
| OpenCode | 重启 OpenCode,或在配置更改后开启新会话 |
| Pi | 运行 /mcp reconnect huly;如果已注册的直接工具界面发生变化,再运行 /reload |
| npx(手动) | MCP_TRANSPORT=stdio-resident npx -y @firfi/huly-mcp@latest——-y 标志会自动确认安装提示 |
维护者生产版本发布
使用干净且最新的 master 检出,并采用首选的、经过认证的 Node.js 运行时进行发布:
mise exec [email protected] -- pnpm local-release
即使主机上已启用更新版本的 Node.js,也请使用此准确命令。发布构建仅接受 CI 认证过的确切 Node.js 版本;这一范围有意比软件包的运行时要求更窄。有关发布前检查、重新运行行为和验证,请参阅生产版本发布指南。
共享常驻 stdio
设置示例会明确选择 MCP_TRANSPORT=stdio-resident。MCP 客户端仍使用 stdio,而同一操作系统用户下兼容的客户端会通过轻量级原生桥接共享一个 Node 后端。随附 Linux 和 macOS arm64/x64 二进制文件;无需安装 Rust。应用请求会在 30 秒的常驻启动时限内保持缓冲。启动失败时会启动普通 stdio,并分发一次已缓冲的应用输入。运行中的常驻服务一旦失败,便不会重新连接或重放应用请求。
省略 MCP_TRANSPORT 仍会选择普通 stdio,以保留现有安装的行为。显式设置 MCP_TRANSPORT=stdio,可让每个客户端使用独立后端。更改设置后,请重启 MCP 客户端。
手动常驻后端
实验性的手动常驻后端路径允许独立的 stdio 主机通过私有附加文件,明确选择一个已启动的本地后端。完整认证仍待完成。
HTTP 传输
服务器默认使用 stdio 传输。如需使用 HTTP 传输:
HULY_URL=https://your-huly-instance.example.com \
HULY_TOKEN=your-huly-api-token \
HULY_WORKSPACE=yourworkspace \
MCP_TRANSPORT=http \
npx -y @firfi/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 @firfi/huly-mcp@latest
HTTP MCP 协议支持
两种传输方式均使用 Effect AI 的 MCP 服务和协议适配器实现。服务器配置了已发布的 MCP 2026-07-28 无状态协议以及 MCP 2025-06-18 兼容协议。现代 HTTP 要求每个 POST 只包含一条 JSON-RPC 消息,包含 Accept: application/json, text/event-stream、MCP-Protocol-Version: 2026-07-28、Mcp-Method、特定于方法的 Mcp-Name,以及每个请求的 _meta.io.modelcontextprotocol/* 客户端元数据。旧版 HTTP 支持使用返回的 Mcp-Session-Id 的已初始化会话,也支持使用请求本地绑定的无状态直接调用。Huly 凭据通过环境变量或受支持的 x-huly-* 标头单独配置。
有关实现边界和当前验证记录,请参阅 MCP 传输架构与认证。
对于托管或经隧道传输的 HTTP 部署,可以要求 MCP 端点使用 bearer 令牌:
MCP_TRANSPORT=http \
MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
npx -y @firfi/huly-mcp@latest
此时,HTTP 客户端必须发送:
Authorization: Bearer <MCP_AUTH_TOKEN>
MCP_AUTH_TOKEN 仅保护 MCP HTTP /mcp 端点。它与 HULY_TOKEN 无关,不用于向 Huly 进行身份验证,也不能替代 HULY_EMAIL / HULY_PASSWORD / HULY_TOKEN。仍须通过进程环境变量提供 Huly 凭据;对于托管 URL 部署,也可使用受支持的 x-huly-* 标头。stdio 部署不使用 MCP_AUTH_TOKEN。
共享 CLI 和 stdio 配置档案
使用 huly auth login --profile work 保存配置档案,然后在 stdio MCP 服务的环境中设置 MCP_TRANSPORT=stdio-resident 和 HULY_PROFILE=work。两个进程必须以同一操作系统用户身份运行,并使用同一配置目录。stdio 不会隐式沿用当前 CLI 配置档案。保存的令牌与其实例 URL 和工作区绑定;如有更改,必须重新登录或完整注入环境凭据。请参阅 CLI 配置档案说明。HTTP 配置保持不变。
托管 HTTP 标头配置
对于托管 URL 部署,请将服务进程配置为使用 MCP_TRANSPORT=http。托管层可以通过请求标头转发每个会话的 Huly 凭据,因此一个托管服务无需设置进程级 HULY_* 环境变量,即可为不同的 Huly 工作区提供服务。
支持的 v1 标头:
| 标头 | 必需 | 描述 |
|---|---|---|
x-huly-url | 是 | Huly 实例 URL |
x-huly-workspace | 是 | 工作区标识符 |
x-huly-token | 是 | Huly API 令牌 |
x-huly-connection-timeout | 否 | 连接超时时间,单位为 ms |
如果存在任何受支持的 x-huly-* 标头,则必须提供所有必需标头,并且不支持的 x-huly-* 标头会被拒绝。只有不受支持的 x-huly-* 标头的请求(例如代理跟踪 ID)会使用进程环境配置。缺失的值不会从环境变量中补齐。托管标头配置 v1 不支持电子邮件/密码身份验证。
Smithery 发布架构示例请参阅 docs/SMITHERY_URL_PUBLISH.md。
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
HULY_URL | 是 | 可访问的可自托管或替代托管 Huly 实例 URL |
HULY_TOKEN | 身份验证* | 首选:受支持时使用托管 Huly API 令牌 |
HULY_EMAIL | 身份验证* | 兼容性回退:账户电子邮件 |
HULY_PASSWORD | 身份验证* | 兼容性回退:账户密码 |
HULY_WORKSPACE | 是 | 工作区标识符 |
HULY_CONNECTION_TIMEOUT | 否 | 连接超时时间,单位为 ms。省略时使用软件包默认值。 |
MCP_TRANSPORT | 否 | 传输类型:stdio(软件包默认值)、stdio-resident(设置示例中推荐),或 http |
MCP_PRELOAD_TOOLS | 否 | 在处理请求前加载所有工具处理器。默认为 false;需要检查所有处理器导入的冒烟测试请使用 true。 |
MCP_HTTP_PORT | 否 | HTTP 服务端口(依次回退到 PORT,然后是 3000) |
MCP_HTTP_HOST | 否 | HTTP 服务主机。省略时绑定到软件包默认的环回主机。 |
MCP_AUTH_TOKEN | 否 | HTTP 客户端访问 /mcp 时必需的可选 bearer 令牌。此令牌仅保护 MCP 端点,不是 Huly API 令牌。 |
HULY_TOOL_MODE | 否 | 工具暴露模式:auto(默认)、native 或 proxy。auto 会将精确匹配的 claude-code 保持为 native 模式,并将 Codex、Cursor、Windsurf、Copilot、opencode、Claude AI 和未知客户端解析为 proxy 模式。 |
PROXY_OUTPUT_STRICT | 否 | 代理候选项严格程度:false(默认)会保持代理发现范围较广;true 会将启用的 TOOLSETS / TOOLS 设为代理搜索、架构查询和调用的硬性允许列表。 |
TOOLSETS | 否 | 要暴露的逗号分隔工具类别。如果未设置 TOOLSETS 和 TOOLS,则会暴露所有 native Huly 工具。示例:issues,projects,search |
TOOLS | 否 | 要额外暴露的逗号分隔精确工具名称,以及选定的工具集。示例:list_documents,create_issue |
HULY_MCP_TELEMETRY | 否 | 汇总使用情况分析(PostHog),默认开启。设置为 0 可禁用。设置 DO_NOT_TRACK=1 也会禁用。 |
*身份验证:首选 HULY_TOKEN。只有在 Huly 部署不支持托管 API 令牌,或其他兼容性限制要求使用密码身份验证时,才使用 HULY_EMAIL + HULY_PASSWORD。
启动和初始化
工具发现会读取生成的目录,而不会加载操作处理程序或等待 Huly。处理程序按需按工具组加载;并发调用会共享该组的加载过程。更改工具定义后,请运行 pnpm update-tool-catalog。如果目录已过时,构建将会失败。
对于 stdio,第一个工具列表请求会在后台启动由进程管理的 Huly 连接。需要完整 Huly 模型的调用会等待同一初始化过程。取消等待中的调用不会取消其他调用的初始化。模型初始化失败后,后续调用可以重试。项目列表通过单独的 REST 读取获取,不会等待完整模型。其他操作仍保留完整模型及其现有行为。
默认传输方式仍为 stdio:由 MCP 主机启动的每个进程都拥有自己的连接和模型。HTTP 允许客户端共享同一个运行中的服务。通过请求凭据标头创建的连接仅在需要时初始化模型;CLI 也采用这种按需策略。
内置诊断工具
get_version 返回当前服务版本和最新的 npm 版本。
get_huly_context 会返回当前 MCP 会话的脱敏运行时/配置上下文,且不会连接到 Huly。它会报告软件包版本、传输方式、身份验证模式、已脱敏的 Huly URL 来源/主机/协议、工作区、超时、配置来源、本机工具范围筛选,以及已解析的本机/代理工具公开情况。不会返回令牌、密码、电子邮件值、凭据标头、URL 路径、URL 查询字符串或 URL 凭据。
MCP 资源
对于支持 resources/read 的客户端,服务会以 JSON 上下文形式公开只读 MCP 资源。
| 模板 | 名称 | 说明 | MIME 类型 |
|---|---|---|---|
huly://projects/{project} | huly-project | 按项目标识符读取 Huly 跟踪器项目的完整详情,例如 huly://projects/HULY。 | application/json |
huly://issues/{issue} | huly-issue | 按完整问题标识符读取 Huly 问题的完整详情,例如 huly://issues/HULY-123。 | application/json |
huly://projects/{project}/issues/{issue} | huly-project-issue | 按项目标识符和问题编号读取 Huly 问题的完整详情,例如 huly://projects/HULY/issues/123。 | application/json |
resources/list 会返回具体的活跃项目资源。问题资源基于模板:使用 resources/templates/list 查找支持的问题 URI 模板,然后读取已知的问题 URI。
待办事项
功能待办事项和 SDK 对齐说明见 docs/BACKLOG.md。
可用工具
当解析后的工具公开模式为 proxy 时,客户端会看到内置工具以及这些代理元工具。随后,客户端会通过代理候选目录发现并调用本机 Huly 工具。客户端直接调用准确的本机工具名称时,也会进行分发,但须遵守 PROXY_OUTPUT_STRICT 范围规则;隐藏的本机工具不会通过 tools/list 公告。
代理元工具
| 工具 | 描述 |
|---|---|
list_tool_categories | 列出此代理可用的 Huly 工具类别。需要先了解功能概况,再搜索特定 Huly 工具时,请先使用此工具。 |
search_tools | 按工具名称、类别、描述和参数名称搜索当前代理可见的 Huly 工具目录。返回准确的工具名称,以及必需和可选参数名称,便于后续单次调用 get_tool_schema 或 invoke_tool。 |
get_tool_schema | 返回一个代理可见 Huly 工具的准确输入和输出架构。不确定必需参数名称或结果结构时,请在调用 invoke_tool 前使用此工具。 |
invoke_tool | 使用指定参数,按准确名称调用一个代理可见的 Huly 工具。此工具可以调用读取或写入 Huly 的操作;涉及安全性时,请检查 get_tool_schema 和目标工具的注释。 |
TOOLSETS 类别: projects、issues、comments、milestones、documents、storage、attachments、contacts、channels、calendar、time tracking、search、associations、activity、notifications、workspace、approvals、boards、cards、collaborators、custom-fields、drive、hr、inventory、labels、leads、mail、templates、model-administration、planner、preferences、processes、recruiting、sdk-discovery、security-administration、sequence-administration、spaces、support、tag-categories、tags、task-management、test-management、user-statuses、views、virtual-office、workbench、workflow-statuses
项目
| 工具 | 描述 |
|---|---|
list_project_target_preferences | 列出低级别的项目级跟踪器目标偏好记录。这些 Huly ProjectTargetPreference 记录关联到项目,跟踪器 UI/工作流会使用它们来记住与目标相关的偏好属性。省略项目参数可列出各项目近期的偏好,或传入项目标识符以查看某个项目的偏好。属性是由 SDK 定义的开放式键/值负载。 |
upsert_project_target_preference | 为项目创建或更新低级别的 ProjectTargetPreference 记录。此操作会刷新 usedOn,并按键合并由 SDK 定义的开放式目标偏好属性。用于实现跟踪器 SDK 对等功能或高级管理;常规项目和问题工作流通常不需要此工具。 |
list_projects | 列出所有 Huly 项目。返回按名称排序的项目。支持按归档状态筛选。 |
get_project | 获取 Huly 项目的完整详情,包括其状态。返回项目名称、描述、归档标记、默认状态和所有可用状态。 |
list_statuses | 列出 Huly 项目的所有问题状态,以及工作流类别和默认状态信息。返回状态名称、类别和 isDefault。创建或更新问题前,请使用此工具了解有效状态。 |
create_project | 创建新的 Huly 跟踪器项目。此操作具有幂等性:如果已存在相同标识符的项目,则返回该项目(created=false)。标识符必须为 1–5 个大写字母数字字符,且以字母开头。 |
update_project | 更新 Huly 项目。仅修改提供的字段。将 description 设为 null 可清除描述。 |
delete_project | 永久删除 Huly 项目。此项目中的所有问题、里程碑和组件都将变为孤立项。此操作无法撤销。 |
问题
| 工具 | 描述 |
|---|---|
preview_deletion | 在实际删除 Huly 实体之前,预览删除影响。显示受影响的子实体、关系和警告。支持 issue、项目、组件和里程碑。调用删除操作前可使用此工具了解级联影响。 |
list_external_tracker_targets | 列出映射到 Huly 项目的外部 issue 跟踪器目标。省略 provider 可列出此服务支持的所有 provider,或传入 provider:'github' 以列出已映射的 GitHub 仓库。返回每个目标的 provider、kind、稳定的 Huly ID、确切名称、启用状态,以及已知情况下可采取相应操作的不可用原因。此工具仅用于发现 Huly 配置;不会调用外部 provider,也无法证明同步工作进程正在运行。 |
publish_issue_to_external_tracker | 请求将现有 Huly issue 发布为 Huly 配置的外部跟踪器中的新 issue。使用项目和 issue 的易读标识符(例如 HULY-123)指定 issue;provider 目前仅接受 'github'。可通过稳定的 Huly 目标 ID 或确切名称选择目标;只有在项目恰好映射到一个已启用目标时,才可省略 target。发布为异步操作:pending 表示 Huly 已接受请求,不代表外部 issue 已存在。请求处于 pending 或已发布状态时,重复选择相同目标是安全的;针对相同目标的失败请求会重试,而选择不同目标的请求会被拒绝。使用 get_issue_publication_status 查看完成状态。 |
get_issue_publication_status | 读取 Huly 持久化的外部发布状态;通过项目和易读 issue 标识符指定 issue。返回 not_requested、pending、published 或 failed;pending 包含 ISO 状态变更时间戳和经过的时间,published 包含外部 URL 和正整数 issue 编号。只有在有限等待时间结束后,超时才会显示为 failed;之后持久化的发布状态优先。此工具读取 Huly 状态,不会直接调用外部 provider。 |
list_components | 列出 Huly 项目中的组件。组件按领域/功能组织 issue。返回按修改日期排序的组件(最新的在前)。 |
get_component | 获取 Huly 组件的完整详情。使用此工具查看组件内容和元数据。 |
create_component | 在 Huly 项目中创建组件。组件有助于按领域/功能组织 issue。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。返回创建的组件 ID 和标签。 |
update_component | 更新现有 Huly 组件的字段。仅修改已提供的字段。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
set_issue_component | 设置或清除 Huly issue 的组件。将 component 设为 null 可清除组件。 |
delete_component | 永久删除 Huly 组件。此操作无法撤销。 |
list_issues | 使用可选筛选条件查询 Huly issue。返回按修改日期排序的 issue(最新的在前)。支持按项目、确切的工作流状态名称(status)、Huly SDK task.statusCategory 键(statusCategory: UnStarted、ToDo、Active、Won、Lost)、受派人(电子邮件、Person 显示名称或确切的 Agent UserProfile 标题)、创建者(原始 Person ID、确切的电子邮件或确切的显示名称)、组件、人类可读的附加标签标题(label,精确匹配且不区分大小写)、里程碑(项目范围内的 ID 或不区分大小写的确切标签)、里程碑是否存在(hasMilestone)、父 issue(parentIssue,用于列出特定 issue 的子 issue),以及是否为顶级 issue(isTopLevel,仅返回原生顶级 issue)。创建者、标签和里程碑筛选会在结果数量限制前应用;创建者显示名称有歧义时会返回明确的错误,找不到创建者时则返回空列表。每条结果都会在可解析时,将创建者作为稳定的 Person 引用 { id, name?, email? } 返回,并将指定的里程碑作为 { id, label } 返回。支持按标题子字符串(titleSearch)和描述内容(descriptionSearch)搜索。每条结果都包含确定性的标签摘要,其中包括标题和可用的颜色;没有标签时返回空数组;重复标题会按不区分大小写的方式合并,并优先保留有效颜色;无法使用的不完整附加项会被省略,并附带工具警告。 |
get_issue | 获取 Huly issue 的完整详情,包括 Markdown 描述、在可解析时作为稳定 Person 引用 { id, name?, email? } 返回的创建者、在可解析时以 { id, label } 表示的指定里程碑,以及带标题和可用颜色的确定性附加标签摘要。没有标签时返回空数组;重复标题会按不区分大小写的方式合并,并优先保留有效颜色;无法使用的不完整创建者或标签元数据会被省略,并附带一条范围受限的工具警告。使用此工具查看 issue 内容、评论、分类或完整元数据。identifier 接受项目本地标识符/编号或稳定的 issue ID;issue 移动后,仍可在整个工作区中通过稳定 ID 查找,并返回实际所属项目。提供的项目必须存在。 |
create_issue | 在 Huly 项目中创建 issue。受派人接受电子邮件、Person 显示名称或确切的 Agent UserProfile 标题,并始终存储关联的 Person。省略 parentIssue 可创建原生顶级 issue,指定 parentIssue 可创建子 issue。可选地通过 ID 或显示名称设置 taskType;系统会在目标项目的项目类型中解析,并根据该任务类型的工作流验证状态。使用 list_task_types 或 get_project_type 可查找有效的任务类型和状态。描述支持 Markdown 格式;指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生引用,外部 URL 则保留为普通链接。返回创建的 issue 标识符。 |
update_issue | 更新现有 Huly issue 的字段。受派人接受电子邮件、Person 显示名称或确切的 Agent UserProfile 标题,并始终存储关联的 Person;使用 null 可取消指派。可选地通过 ID 或显示名称设置 taskType;系统会在目标项目的项目类型中解析,仅当状态对新任务类型仍有效时才会保留。使用 list_task_types 或 get_project_type 可查找有效的任务类型和状态。仅修改已提供的字段。描述更新支持 Markdown;指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生引用,外部 URL 则保留为普通链接。 |
add_issue_label | 为 Huly issue 添加标记/标签。如果项目中不存在该标记,则创建它。 |
remove_issue_label | 从 Huly issue 中移除标记/标签。解除标签引用,但不会删除标签定义。 |
delete_issue | 永久删除 Huly issue。此操作无法撤销。 |
move_issue | 在项目内移动 issue 树,同时保留 ID、标识符和属性。issue/parent 接受完整标识符或稳定 ID;project 接受标识符或稳定 ID。目标形式:{project: 'HULY'} 表示项目顶层,{parent: 'HULY-42'} 表示推断父项所属项目,{project: 'HULY', parent: 'HULY-42'} 表示要求两者一致,或 {parent: null} 表示当前项目顶层。跨项目移动支持完整且兼容的树,要求项目类型相同,且实际 kind/status 受支持;在有效时保留组件/里程碑引用,否则按字面唯一名称匹配;不满足条件时会被阻止,并返回候选项,供按任务精确指定 {issueId,field,from,to} 解析,其中 to 是有效的目标 ID 或 null(用于清除)。所有可发现的冲突都会在写入前返回。评论(包括线程/嵌套附件)、issue 附件、标签、时间报告以及经审计的活动/回复/回应都会随移动处理;历史载荷和独立链接保持不变。未知记录类/集合边或发现限制会导致写入前拒绝操作。受限项目会被拒绝;目标为私有项目时,用户必须是其成员。树的发现会遍历附件,且所有任务冲突和解析结果都会在分配编号前检查。用户同意的范围不会扩展至同级项或新发现的子项。若无法在安全限制内完成完整移动,则会在写入前拒绝;成功的映射会包含每个任务。跨项目移动会更改标识符;稳定 ID 和独立引用保持不变。同项目调用(包括无操作)时请勿提供解析结果。工具会在写入前检查层级结构,并在执行后验证;若结果不一致或不确定,则会附带检查指导。绝不会自动重试结果不确定的移动。 |
list_issue_templates | 列出 Huly 项目中的 issue 模板。模板用于定义可重复使用的 issue 配置。返回按修改日期排序的模板(最新的在前)。 |
get_issue_template | 获取 Huly issue 模板的完整详情,包括子模板(子任务模板)。使用此工具查看模板内容、默认值和子模板 ID。 |
create_issue_template | 在 Huly 项目中创建 issue 模板。模板用于定义新 issue 的默认值。模板和子模板的描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。可选地包含子模板(子任务模板);使用此模板创建 issue 时,这些子模板会成为子 issue。返回创建的模板 ID 和标题。 |
create_issue_from_template | 根据模板创建 issue。应用模板默认值,并允许覆盖特定字段。描述覆盖内容支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。如果模板包含子模板(子任务模板),除非将 includeChildren 设为 false,否则会自动创建子 issue。返回创建的 issue 标识符和所创建子项的数量。 |
update_issue_template | 更新现有 Huly issue 模板的字段。仅修改已提供的字段。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_issue_template | 永久删除 Huly issue 模板。此操作无法撤销。 |
add_template_child | 为 issue 模板添加子模板(子任务模板)。该子模板用于定义使用 create_issue_from_template 时所创建子 issue 的默认值。子模板描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。返回子模板 ID。 |
remove_template_child | 根据子 ID 从 issue 模板中移除子模板(子任务模板)。可从 get_issue_template 的响应中获取子 ID。 |
add_issue_relation | 在两个 issue 之间添加关系。关系类型:'blocks'(源 issue 阻止目标 issue——将其添加到目标的 blockedBy),'is-blocked-by'(源 issue 被目标 issue 阻止——将其添加到源的 blockedBy),'relates-to'(双向链接——更新两侧)。targetIssue 接受跨项目标识符,例如 'OTHER-42'。如果关系已存在,则不执行任何操作。 |
remove_issue_relation | 移除两个 issue 之间的关系。行为与 add_issue_relation 相对应:'blocks' 从目标的 blockedBy 中移除,'is-blocked-by' 从源的 blockedBy 中移除,'relates-to' 则从两侧移除。如果关系不存在,则不执行任何操作。 |
list_issue_relations | 列出某个 issue 的所有关系。返回 blockedBy(阻止此 issue 的 issue)、blocks(此 issue 阻止的 issue)、relations(双向 issue 链接)和 documents(包含标题/团队空间信息的关联文档)。 |
link_document_to_issue | 将 Huly 文档关联到 issue。此链接会显示在界面中 issue 的 Relations 面板里。此操作具有幂等性:如果文档已关联,则不执行任何操作。使用 list_issue_relations 查看关联文档。 |
unlink_document_from_issue | 移除 issue 的文档链接。此操作具有幂等性:如果文档未关联,则不执行任何操作。 |
list_related_issue_targets | 列出用于选择相关 issue 默认目标项目的规则。spaceRule 表示某个空间中的相关 issue 默认使用 targetProject。classRule 表示某个对象类的相关 issue 默认使用 targetProject。targetProject 是项目标识符;若无默认目标项目,则为 null。 |
set_related_issue_target | 设置来自某个空间或对象类的相关 issue 的默认目标项目。对于 space,会创建或更新 spaceRule。对于 objectClass,仅更新现有 classRule;此工具不会创建 classRule 目标。将 targetProject 设为项目标识符,或设为 null 以清除默认目标项目。 |
delete_related_issue_space_target | 删除用于选择某个空间中相关 issue 默认目标项目的 spaceRule。此工具仅删除 spaceRule 目标;有意不支持删除 classRule,因为类规则可能由模型提供。 |
评论
| 工具 | 描述 |
|---|---|
list_comments | 列出 Huly 问题中的评论。返回按创建日期排序的评论(从最早到最新)。 |
add_comment | 在 Huly 问题中添加评论。评论正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_comment | 更新 Huly 问题中的现有评论。评论正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_comment | 删除 Huly 问题中的评论。此操作无法撤销。 |
里程碑
| 工具 | 描述 |
|---|---|
list_milestones | 列出 Huly 项目中的里程碑。返回按修改日期排序的里程碑(从最新到最早)。 |
get_milestone | 获取 Huly 里程碑的完整详情。使用此工具查看里程碑内容和元数据。 |
create_milestone | 在 Huly 项目中创建新的里程碑。描述支持 Markdown。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。返回创建的里程碑 ID 和标签。 |
update_milestone | 更新现有 Huly 里程碑的字段。仅修改已提供的字段。描述支持 Markdown。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
set_issue_milestone | 设置或清除 Huly 问题的里程碑。将 milestone 设为 null 可清除里程碑。 |
delete_milestone | 永久删除 Huly 里程碑。此操作无法撤销。 |
文档
| 工具 | 描述 |
|---|---|
list_document_snapshots | 列出一份 Huly 文档的版本历史快照。快照是从文档更改历史中保存的某个时间点副本。通过团队空间加文档标题或 ID 解析文档。返回 snapshotId、documentId、teamspaceId、title、parentDocumentId 和时间戳;不会返回 Markdown 内容。读取内容时,请使用 snapshotId 调用 get_document_snapshot。 |
get_document_snapshot | 获取一份 Huly 文档历史快照(对应某个时间点),并返回 Markdown 内容。通过团队空间加文档标题或 ID 解析文档;通过 snapshotId、精确快照标题或精确 createdOn 时间戳解析快照。如果标题或日期可能重复,优先使用 list_document_snapshots 返回的 snapshotId。不支持恢复。 |
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 中以交互方式呈现)。使用指向当前工作区 Huly 浏览 URL 的 Markdown 链接作为原生引用;get_document 内容中返回的 Huly 浏览链接在往返处理中会保留为原生引用。URL 用于标识对象;链接文本是显示文本;纯问题键保持为文本。外部 URL 保持为普通 Markdown 链接。可选择传入作为文档标题或 ID 的 parent,以创建嵌套子文档;无效的父级会导致失败,而不会静默创建顶层文档。返回已创建文档的 ID,以及指向 Huly Web 应用中文档的 'url' 字段。只有在还需要建立问题与文档的关联时,才使用 link_document_to_issue。 |
edit_document | 编辑现有 Huly 文档。可通过 title 重命名,和/或编辑正文。正文编辑有两种互斥模式:(1)content 替换整个 Markdown 正文;(2)old_text + new_text 执行精确的定向搜索和替换。使用指向当前工作区 Huly 浏览 URL 的 Markdown 链接作为原生引用;get_document 内容中返回的 Huly 浏览链接在往返处理中会保留为原生引用。URL 用于标识对象;链接文本是显示文本;纯问题键保持为文本。外部 URL 保持为普通 Markdown 链接。定向替换时,如果匹配多处且 replace_all 不为 true,则会报错;将 new_text 设为空字符串可删除匹配文本。内容支持原生 Mermaid 图表。返回指向 Huly Web 应用中文档的 'url' 字段。 |
list_inline_comments | 列出 Huly 文档中的行内评论线程。从文档内容中提取作为 ProseMirror 标记嵌入的评论。每条评论都包含高亮文本和线程 ID。设置 includeReplies=true 还会获取包含发送者姓名的线程回复消息。 |
delete_document | 永久删除 Huly 文档。此操作无法撤销。 |
list_document_label_definitions | 按可选的标题子字符串列出普通 Huly 文档可用的标签定义。不公开原始目标类或类别机制。 |
list_document_labels | 列出附加到一份普通 Huly 文档的标签。按名称或 ID 解析团队空间,并按标题或 ID 解析文档;无需提供原始类、空间或集合值。 |
add_document_label | 将标签以幂等方式附加到一份通过团队空间和标题或 ID 解析的普通 Huly 文档。label 接受定义 ID 或精确标题;如果标题不存在,则会先创建文档标签定义;如果存在完全同名的重复标题,则返回候选 ID。 |
remove_document_label | 从一份普通 Huly 文档上移除标签,但不删除可重复使用的标签定义。如果标签存在但未附加,则返回 detached=false;如果存在完全同名的重复标题,则返回候选 ID。 |
存储
| 工具 | 描述 |
|---|---|
upload_file | 将文件上传到 Huly 存储。请提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。返回 blob ID 和 URL。 |
附件
| 工具 | 描述 |
|---|---|
list_attachments | 列出 Huly 对象(问题、文档等)上的附件。返回按修改日期排序的附件(最新的在前)。 |
get_attachment | 获取 Huly 附件的完整详情,包括下载 URL。 |
add_attachment | 向 Huly 对象添加附件。请提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。返回附件 ID 和下载 URL。 |
update_attachment | 更新附件元数据(描述、固定状态)。 |
delete_attachment | 永久删除附件。此操作无法撤销。 |
pin_attachment | 固定或取消固定附件。 |
download_attachment | 获取附件的下载 URL 及文件元数据(名称、类型、大小)。 |
read_attachment_content | 将受支持的图片附件(JPEG、PNG、GIF 或 WebP;最大 4 MiB)作为一个 MCP 图片内容块和仅含元数据的结构化内容返回。可用此工具直接查看屏幕截图或图片。对于非图片、不受支持或超大文件,请调用 download_attachment 获取 URL。 |
add_issue_attachment | 向通过项目和标识符解析出的 Huly 问题添加附件。请提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
add_document_attachment | 向通过团队空间和标题/ID 解析出的 Huly 文档添加附件。请提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
save_attachment | 保存/收藏附件以供日后参考。如果附件已保存,则此操作幂等。 |
unsave_attachment | 从已保存/收藏的附件中移除附件。 |
list_saved_attachments | 列出当前用户已保存/收藏的附件。 |
list_drawings | 列出附加到原始 Huly 父对象的绘图。 |
get_drawing | 按 ID 获取绘图。 |
create_drawing | 在原始 Huly 父对象下创建绘图。 |
update_drawing | 更新绘图内容。传入 null 内容可将其清空。 |
delete_drawing | 删除绘图。此操作无法撤销。 |
联系人
| 工具 | 描述 |
|---|---|
list_employees | 列出员工(即团队成员),按修改日期排序(最新的排在前面)。每条摘要都会提供稳定的 Contact Employee 字段:city、email、role、statuses count、personUuid、position、active 和 modifiedOn。SDK 的 avatarType/avatar/avatarProps 属于提供方/Blob 元数据;附件、评论和频道计数以及社交身份集合均为派生数据;生日/个人资料需要单独的契约;createdOn/createdBy/modifiedBy 以及 class/space 引用属于内部元数据,因此有意不在此投影中提供。 |
set_employee_position | 幂等地设置 contact.mixin.Employee 上员工的正式职位。employee 必须是且只能包含一个定位字段的对象:{id}、{email} 或 {name};组合使用多种定位方式会被拒绝。所选 ID、email 或显示名称必须完全匹配;email/name 匹配到多个结果时会被拒绝。position 字段为必填:传入字符串以设置职位,传入 null/空字符串以清除职位。省略 position 会导致架构解析失败,且不会执行任何变更。此操作更新的是 Contact Employee mixin,而非 HR Staff 记录。 |
invite_employee | 创建或提升员工并发送邀请,或重新发送非活跃员工的邀请。mode=create-or-promote 要求提供精确匹配的 Huly 显示名称和 email;经过检查的单个原子事务会先创建或更新 Person、email SocialIdentity 和 active Employee,再发送邀请。如果权威前置条件已变更,则不会发送邀请,并会提示调用方在新会话中重试。mode=invite-existing 要求使用精确的 email/name 定位,并拒绝 active 或非 Employee 目标。省略 role 会保留 Employee 角色;显式指定其他角色时,会先以原子方式持久化,再重新发送邀请。不返回邀请链接、凭据或令牌;邀请提供方失败时会报告准备工作已完成。 |
list_inactive_employees | 在应用输出分页前列出所有非活跃 Employee。每条结果都会区分账号关联、工作区成员身份和角色、Person 身份以及 Employee active 状态,帮助 Agent 安全地选择重新邀请、停用或移除成员。 |
deactivate_employee | 通过精确 email 或精确显示名称预览或执行员工生命周期变更。action=deactivate 只会设置 Employee.active=false,并保留工作区成员身份;action=kick 随后会从工作区移除关联账号。如果停用后移除工作区成员失败,系统会返回有类型的部分失败信息,列出已完成的变更,并提示安全地预览后重试。默认仅预览。执行时必须设置 execute=true,并提供从预览中复制的一个精确预期关系对象:unlinked、linked-without-membership 或 workspace-member。Person ID、账号 UUID、Employee active 标志、成员身份或工作区角色发生任何变化都会被拒绝。已验证身份的员工不能以自身为目标。 |
list_persons | 列出 Huly 工作区中的所有人员。按修改日期排序返回人员(最新的排在前面)。支持按姓名子串(nameSearch)和 email 子串(emailSearch)搜索。 |
get_person | 获取人员的完整详细信息,包括联系渠道。使用 personId 或 email 来识别人员。 |
create_person | 在 Huly 中创建新人员。返回创建的人员 ID。 |
update_person | 更新现有人员的字段。只修改提供的字段。 |
delete_person | 永久删除 Huly 中的人员。此操作无法撤销。 |
list_contact_channel_providers | 列出人员和组织联系渠道工具支持的联系渠道提供方标签。 |
list_person_channels | 列出某个人员的联系渠道。person 可使用人员 ID、精确 email 地址或精确 Huly 显示名称;名称匹配到多个结果时会失败,应使用 email 或人员 ID 重试。 |
add_person_channel | 幂等地为人员添加联系渠道。person 可使用人员 ID、精确 email 地址或精确 Huly 显示名称。提供方标签应与 list_contact_channel_providers 的结果匹配。如果完全相同的 provider+value 已存在,则返回 added=false 和现有渠道。 |
update_person_channel | 更新人员的一个联系渠道。person 可使用人员 ID、精确 email 或精确显示名称。必须且只能使用一个定位方式标识渠道:channelId,或 provider 加 value。提供 newProvider、newValue 或两者。若要更新为该人员已有的 provider+value,则会因冲突而失败。 |
remove_person_channel | 移除人员的一个联系渠道。person 可使用人员 ID、精确 email 或精确显示名称。必须且只能使用一个定位方式标识渠道:channelId,或 provider 加 value。如果该人员没有与定位信息匹配的渠道,则返回 removed=false。 |
list_organizations | 列出 Huly 工作区中的所有组织。按修改日期排序返回组织(最新的排在前面)。 |
create_organization | 在 Huly 中创建新组织。可选按人员 ID 或 email 添加成员。如果任何指定成员无法解析,则操作失败。返回创建的组织 ID。 |
get_organization | 通过 ID 或唯一的精确名称获取组织的完整详细信息,包括城市、描述、成员数和修改时间戳。如果多个组织名称相同,请使用组织 ID。 |
update_organization | 通过 ID 或唯一的精确名称更新现有组织的字段。只修改提供的字段。描述支持 Markdown,可用于 CRM 备注/收入摘要/背景信息。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。传入 null 可清除城市或描述。如果多个组织名称相同,请使用组织 ID。 |
delete_organization | 通过 ID 或唯一的精确名称永久删除组织。请谨慎使用——此操作无法撤销。可用于将重复组织的数据合并到其他位置后清理重复组织。如果多个组织名称相同,请使用组织 ID。 |
make_organization_customer | 为组织应用 Customer mixin,使其显示在 Huly Leads > Customers 视图中。此操作幂等,对已是客户的组织调用也安全。接受组织 ID 或唯一的精确名称。 |
make_person_customer | 为一个现有人员应用原生 Customer mixin,使其显示在 Huly Leads > Customers 中。通过人员 ID、精确 email 地址或精确显示名称解析;标识符有歧义时会失败,不会创建人员,重复调用具有幂等性。 |
add_organization_channel | 幂等地为通过 ID 或唯一精确名称识别的组织添加联系渠道。提供方标签:email、phone、linkedin、twitter、github、facebook、telegram、homepage、whatsapp、skype、profile、viber。如果完全相同的 provider+value 已存在,则返回 added=false 和现有渠道。 |
list_organization_channels | 列出通过 ID 或唯一精确组织名称识别的组织的联系渠道。返回 channelId、提供方标签、value 和可选的活动元数据。 |
update_organization_channel | 更新通过 ID 或唯一精确名称识别的组织的一个联系渠道。必须且只能使用一个定位方式标识渠道:channelId,或 provider 加 value。提供 newProvider、newValue 或两者。若要更新为该组织已有的 provider+value,则会因冲突而失败。 |
remove_organization_channel | 移除通过 ID 或唯一精确名称识别的组织的一个联系渠道。必须且只能使用一个定位方式标识渠道:channelId,或 provider 加 value。如果该组织没有与定位信息匹配的渠道,则返回 removed=false。 |
add_organization_member | 将人员关联为组织成员。该人员会显示在 Huly 组织的 Members 标签页中。使用人员 ID 或 email 来识别人员。此操作幂等:如果该人员已是成员,则返回 added=false。 |
list_organization_members | 列出组织的所有人员成员。返回每位成员的人员 ID、姓名和主要 email(如有)。如果使用名称而非 ID,该名称必须能唯一识别一个组织。 |
list_person_organizations | 列出某个人员所属的所有组织。提供 personId 或 email。返回每个组织的 ID 和名称。 |
remove_organization_member | 取消人员与组织成员的关联。此操作与 add_organization_member 相反。如果该人员不是成员,则返回 removed: false。如果使用组织名称而非 ID,该名称必须能唯一识别一个组织。 |
merge_people | 预览或执行保留原生引用的人员合并,并明确选择来源人员和保留人员;source 和 survivor 必须分别且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。默认仅预览,并报告身份、渠道、成员关系、评论、附件、其他所有由模型声明的 Person/Contact/Employee 引用、账号合并资格、保留的标量字段,以及与规范化受影响文档 ID、写入路由字段和标量/数组值绑定的精确预检令牌。执行时必须设置 execute=true 并提供当前令牌;写入前会拒绝任何快照漂移,重新连接标量和数组引用而不丢弃数组中的其他成员,并在适用时调用 Huly 的全局 Person 合并。由于 Huly 的原生合并不会级联删除,来源工作区 Person 记录会予以保留。 |
get_person_administration | 检查某个人员的身份和个人资料管理界面;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。返回联系状态、工作区成员身份、头像元数据、生日、社交身份、账号个人资料、渠道活动以及明确的稳定字段支持清单。 |
list_social_identity_providers | 列出此 Huly 工作区中已安装的 SocialIdentity 提供方,并返回原生提供方 ID 和类型。 |
repair_person_social_identities | 仅根据已验证人员的权威账号记录应用 Huly 原生、安全且幂等的 SocialIdentity 修复:重新创建缺失的活跃投影、提升验证状态、在账号合并后重新分配未验证身份,以及传播权威删除;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。另一个已关联账号的人员、已验证的跨人员重新分配、任意活跃类型/value/key 变更、移除仅存在于工作区的身份以及 key 冲突,都将返回 Huly 特定的不支持原因,而不会覆盖现有数据。 |
list_person_comments | 按从早到晚的顺序列出真正关联到某个人员的备注/评论;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
add_person_comment | 为某个人员添加 Markdown 备注/评论;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_person_comment | 幂等地更新属于某个已解析人员的备注/评论;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_person_comment | 仅当备注/评论属于某个已解析人员时才将其永久删除;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
list_person_attachments | 列出真正关联到某个人员的附件;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
add_person_attachment | 从 filePath、fileUrl 或 base64 数据中恰好选择一种来源上传文件并关联到某个人员;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
get_person_attachment | 仅当附件属于某个已解析人员时才获取该附件;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
update_person_attachment | 仅当附件属于某个已解析人员时才更新描述或固定状态;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
delete_person_attachment | 仅当附件属于某个已解析人员时才将其永久删除;person 必须且只能包含一个精确定位字段:{id}、{email} 或 {name};email/name 匹配到多个结果时会因歧义而失败。 |
Channels
| 工具 | 描述 |
|---|---|
list_chat_message_attachments | 列出直接附加到 Huly 聊天消息目标的文件。target.kind 支持 channel_message、dm_message 和 thread_reply;工具会为你解析频道名称和一对一私信参与者的显示名称。 |
get_chat_message_attachment | 获取直接附加到 Huly 频道消息、私信消息或线程回复的单个文件。attachmentId 必须属于已解析的目标。 |
add_chat_message_attachment | 将文件直接附加到 Huly 频道消息、私信消息或线程回复。请提供 filename、contentType,以及且仅需提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
update_chat_message_attachment | 更新直接附加到 Huly 频道消息、私信消息或线程回复的文件描述和/或置顶状态。attachmentId 必须属于已解析的目标。 |
delete_chat_message_attachment | 删除直接附加到 Huly 频道消息、私信消息或线程回复的单个文件。attachmentId 必须属于已解析的目标。 |
list_channel_members | 按频道名称或 ID 列出 Huly 频道成员。返回每位成员的账户 UUID,以及可用时的工作区显示名称。 |
add_channel_members | 将成员幂等地添加到未归档的 Huly 频道。成员可通过账户 UUID、准确的电子邮件地址或准确的人员显示名称指定,并会先解析为 Huly 账户 UUID,然后替换完整的已排序成员数组。 |
remove_channel_members | 从未归档的 Huly 频道中幂等地移除成员。成员可通过账户 UUID、准确的电子邮件地址或准确的人员显示名称指定。如果移除后频道成员数将变为零,或在存在所有者时剩余成员中不再有所有者,则拒绝移除。 |
join_channel | 以已验证账户身份加入未归档的 Huly 频道。如果账户已是成员,则幂等处理。 |
leave_channel | 以已验证账户身份退出未归档的 Huly 频道。如果账户已不在频道中,则幂等处理。如果退出会导致频道为空或不再有任何剩余所有者,则拒绝退出。 |
archive_channel | 按频道名称或 ID 归档 Huly 频道。此操作可通过 unarchive_channel 撤销;如果频道已归档,则幂等处理。 |
unarchive_channel | 按频道名称或 ID 取消归档 Huly 频道。如果频道已处于活跃状态,则幂等处理。 |
create_group_direct_message | 与至少两位其他工作区成员开启群组私信对话。people 数组接受准确的电子邮件地址或准确的显示名称;系统会自动加入已验证账户。按完全相同的已排序成员集合进行幂等处理:如果群组私信已存在,则返回该对话并设置 created: false。若只有另一位成员,请使用 create_direct_message。 |
set_conversation_starred | 为指定的单个对话设置已验证用户的星标状态。提供 channel(频道名称或 ID)或 dm(DM ID,或一对一参与者的显示名称)之一,以及 starred。如有需要,会创建缺失的通知上下文。 |
set_conversation_closed | 为指定的单个对话设置已验证用户的关闭/可见状态。提供 channel 或 dm 之一,以及 closed。关闭对话只会隐藏当前用户的通知上下文;不会退出频道或移除成员。 |
list_pinned_chat_messages | 列出指定的单个 Huly 频道或私信对话中的置顶顶层消息和置顶线程回复。提供 channel(名称或 ID)或 dm(DM ID 或一对一参与者名称),不能同时提供两者。两种消息类型的结果按最新优先排序。 |
set_chat_message_pinned | 幂等地置顶或取消置顶位于指定的单个 Huly 频道或私信对话中的顶层消息或线程回复。提供 channel 或 dm,以及 messageId;该消息必须属于已解析的对话。 |
request_channel_access | 按频道名称或 ID 尝试执行 Huly 私有频道的请求访问工作流。当前的 Chunter SDK/模型没有稳定的访问请求记录或服务器操作,因此此构建版本会返回 supported=false 和稳定的 reasonCode,且不会执行任何修改。 |
translate_chat_message | 尝试将找到的 Huly 频道/DM 消息翻译为 targetLanguage。当前 Huly 翻译功能仅限浏览器端,使用可选的 AI 端点,且只将结果存储在 UI 状态中;此构建版本会返回 supported=false 和稳定的 reasonCode,不会伪造译文。 |
list_channels | 列出所有 Huly 频道。频道按名称排序。支持按归档状态筛选。支持按名称子字符串(nameSearch)和主题子字符串(topicSearch)搜索。 |
get_channel | 获取 Huly 频道的完整详情,包括主题和成员列表。 |
create_channel | 在 Huly 中创建新频道。返回所创建频道的 ID 和名称。 |
update_channel | 更新现有 Huly 频道的字段。仅修改已提供的字段。 |
delete_channel | 永久删除 Huly 频道。此操作无法撤销。若要可撤销地更改频道生命周期状态,请改用 archive_channel 和 unarchive_channel。 |
list_channel_messages | 列出 Huly 频道中的消息。消息按日期排序(最新优先)。 |
list_external_channel_messages | 读取已保存的 Telegram 联系人频道消息,或评估无法安全读取外部提供方数据的原因。对于 provider=telegram,按完全匹配的已存储值或稳定的联系人频道 ID 解析频道,并返回最新的 contentMarkdown、方向、已存储的 Huly sendOn 时间戳和附件数量;如果工作区模型或频道不可用,则返回 supported=false。传入附件的创建是异步的,因此 attachmentCount 可能暂时落后于消息;不会返回附件字节内容。此工具仅能证明 Huly 中存储的记录,不能证明提供方数据是最新的、Telegram 连接处于活动状态,或提供方的投递/读取状态。Gmail 返回 supported=false,因为 Huly 不会公开部署范围的实时 v1/v2 写入器版本,而该版本是区分当前旧版记录与过期数据所必需的。limit 默认值为 50,上限为 200。此工具绝不会发送、回复、删除或修改数据。 |
send_channel_message | 向 Huly 频道发送消息。消息正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_channel_message | 更新频道消息。只能修改正文;正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_channel_message | 永久删除频道消息。此操作无法撤销。 |
list_direct_messages | 列出 Huly 中的私信对话。对话按日期排序(最新优先)。 |
create_direct_message | 与一位工作区成员开启一对一私信对话。person 参数接受电子邮件地址或准确的显示名称(例如 Smith,Bill)。此操作具有幂等性:如果与该参与者的 DM 已存在,则返回该 DM(created: false);否则创建新的 DM(created: true)。返回的 id 可作为 dm 传递给 send_dm_message、list_dm_messages 等工具。 |
list_dm_messages | 列出私信对话中的消息,按最新优先排序。dm 参数接受 DM _id 或参与者显示名称(例如 Kerr,Shannon);名称只会解析为与已验证账户的一对一 DM。 |
send_dm_message | 向私信对话发送消息。dm 参数接受 DM _id 或参与者显示名称;名称只会解析为与已验证账户的一对一 DM。消息正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_dm_message | 更新私信消息。dm 参数接受 DM _id 或参与者显示名称;名称只会解析为与已验证账户的一对一 DM。只能修改正文;正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_dm_message | 永久删除私信消息。dm 参数接受 DM _id 或参与者显示名称;名称只会解析为与已验证账户的一对一 DM。此操作无法撤销。 |
list_thread_replies | 列出消息线程中的回复。回复按日期排序(最早优先)。 |
add_thread_reply | 在消息线程中添加回复。回复正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_thread_reply | 更新线程回复。只能修改正文;正文支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_thread_reply | 永久删除线程回复。此操作无法撤销。 |
Calendar
| 工具 | 描述 |
|---|---|
list_events | 按日期排序列出日历事件;当事件采用原生 Meeting 组合时,同时提供会议室身份信息。支持按日期范围筛选。 |
list_calendars | 列出可写、未隐藏的日历,可将其用作 create_event 或 create_recurring_event 的目标。若创建事件时需要显式选择目标 calendarId,请先使用此工具。 |
list_calendar_settings | 列出已通过身份验证的调用者的 Calendar 设置,包括调用者拥有的隐藏和只读日历。返回每个日历的稳定 ID、名称、类型、隐藏状态、可见性、访问权限和计算得出的主要日历状态。不包含提供方标识符和默认值。对于可写、未隐藏的事件目标,请使用 list_calendars。 |
set_primary_calendar | 通过 calendarId 或无歧义的精确 calendarName 设置已通过身份验证的调用者的个人主日历。目标必须由调用者拥有、可见,且访问权限为 Writer 或 Owner。创建或更新唯一的 PrimaryCalendar 偏好设置,绝不更改提供方默认值。 |
update_calendar_settings | 更新一个由已通过身份验证的调用者拥有的日历的本地可见性和/或隐藏设置。可见性可设为 public、freeBusy 或 private。只有 ExternalCalendar 条目允许更改隐藏状态,且需要 Writer 或 Owner 访问权限;拒绝隐藏内部日历,也拒绝更改由提供方管理的字段。 |
get_event | 获取日历事件的完整详情,包括描述;当事件采用原生 Meeting 组合时,还包括会议室身份信息。 |
create_event | 创建新的日历事件。描述支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。可选的 calendarId 用于指定目标日历;若省略,事件将使用已通过身份验证的用户的个人主日历。可选的 meetingRoom.room 会先解析 ID,再解析无歧义的精确名称;meetingRoom.floor 仅用于消除名称歧义。它会为每个 eventId 同级事件创建原生 Meeting 分配,且不会替换地点。返回创建的事件 ID。 |
update_event | 更新现有日历事件的字段。仅修改提供的字段。描述更新支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。meetingRoom 仅可更改现有的原生 Meeting(不接受普通 Event);先解析会议室 ID,再解析精确名称,并可选择通过楼层消除歧义。此操作会更新每个 eventId 同级事件,且不会替换地点。不支持移除会议室。 |
delete_event | 永久删除日历事件。此操作无法撤销。 |
list_schedules | 列出日历预约链接/可用时间表。可选的 owner 参数接受员工/人员 ID、精确姓名或电子邮件地址。 |
get_schedule | 获取一个日历时间表,包括所有者、可用时间、日历目标、时区;如果是会议时间表,还包括会议室信息。 |
create_schedule | 创建日历时间表。owner 参数接受员工/人员 ID、精确姓名或电子邮件地址;可通过 calendarId 或 calendarName 指定日历。可选的 meetingRoom.room 会先解析 ID,再解析无歧义的精确名称;meetingRoom.floor 仅用于消除名称歧义,并会创建原生 MeetingSchedule 组合。会议室时间表必须由已通过身份验证的调用者拥有。 |
update_schedule | 更新日历时间表。支持更新所有者、标题、描述、时长、间隔、可用时间、timeZone,以及通过 calendarId 或 calendarName 移动日历。meetingRoom 仅可更改由调用者拥有的现有原生 MeetingSchedule;先按 ID 解析,再按精确名称解析,并可选择通过楼层消除歧义。不支持移除会议室。 |
delete_schedule | 通过 scheduleId 删除日历时间表。 |
list_recurring_events | 列出重复事件定义。返回的重复事件按修改日期排序(最新的在前)。 |
create_recurring_event | 使用 RFC5545 RRULE 规则创建新的重复日历事件。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。可选的 calendarId 用于指定目标日历;若省略,事件将使用已通过身份验证的用户的个人主日历。返回创建的事件 ID。 |
list_event_instances | 列出重复事件的实例。返回的实例按日期排序。支持按日期范围筛选。使用 includeParticipants=true 可获取完整的参与者信息(需要额外查询)。 |
时间跟踪
| 工具 | 描述 |
|---|---|
log_time | 记录在 Huly 工单上花费的时间。创建一条时间记录,可选填写描述。单位为小时(Huly 原生单位):0.25 = 15 分钟;8 = 一个工作日。 |
get_time_report | 获取指定 Huly 工单的时间跟踪报告。显示总用时、预估时间、剩余时间和所有时间记录。单位为小时(Huly 原生单位):0.25 = 15 分钟;8 = 一个工作日。 |
list_time_spend_reports | 列出所有工单的时间记录。支持按项目和日期范围筛选。返回的记录按日期排序(最新的在前)。单位为小时(Huly 原生单位):0.25 = 15 分钟;8 = 一个工作日。 |
get_detailed_time_report | 获取项目的详细时间明细。按工单和员工分组显示总用时。支持按日期范围筛选。单位为小时(Huly 原生单位):0.25 = 15 分钟;8 = 一个工作日。 |
list_work_slots | 列出由 schedule_todo、Huly UI 或其他客户端创建的已安排工作时段。显示关联到待办事项的计划时间段。支持按员工和日期范围筛选。 |
start_timer | 在 Huly 工单上启动客户端计时器。验证工单是否存在,并返回开始时间戳。完成后,使用 log_time 记录经过的时间。 |
stop_timer | 停止 Huly 工单上的客户端计时器。返回停止时间戳。根据开始和停止时间戳计算经过的时间,并使用 log_time 记录。 |
搜索
| 工具 | 描述 |
|---|---|
fulltext_search | 在所有 Huly 内容中执行全局全文搜索。搜索工单、文档、消息和其他已编入索引的内容。返回按相关性排序的匹配项(最新的在前)。 |
关联
| 工具 | 描述 |
|---|---|
list_associations | 列出 Huly 关联定义:用于定义哪些文档类可以相互关联的类级类型化链接。在调用 create_relation 前使用此工具,以查询关联 ID、源类、目标类,以及是否支持写入关联。 |
create_association | 在两个非系统类之间幂等地创建一个 Huly 关联定义。使用 sourceClass/targetClass、sourceRole/targetRole 和基数;默认返回已存在的相同关联。 |
delete_association | 仅当没有具体关联引用该定义时,才幂等地删除一个 Huly 关联定义。如果存在关联,必须先使用 delete_relation 清理;删除已不存在的关联会成功并且不执行任何操作。 |
list_relations | 列出某个关联下的具体 Huly 关联实例,可按源文档和目标文档筛选。端点定位符支持 raw、issue、document、card 和精确的漏斗范围 lead 目标。至少需要一个筛选条件,以避免扫描过大的工作区范围。 |
create_relation | 为可写关联,在两个已解析的文档之间幂等地创建一个具体关联。端点定位符支持 raw、issue、document、card 和精确的漏斗范围 lead 目标。此操作会校验关联端点类、方向、重复项处理、仅限自动化的限制和基数。已发布的 Relation 端点没有可变字段;如需替换关联,请先调用 delete_relation,再调用 create_relation。 |
delete_relation | 按关联 ID 或精确的关联/源/目标三元组幂等地删除一个具体关联。三元组端点定位符支持 raw、issue、document、card 和精确的漏斗范围 lead 目标。三元组删除采用与 create_relation 相同的方向语义;如果选择器不唯一,则操作失败。 |
活动
| 工具 | 描述 |
|---|---|
list_activity | 列出 Huly 工单、文档、频道或原始 Huly 对象的活动消息。优先使用友好目标:工单使用项目+工单标识符,文档使用团队空间+文档,频道使用频道。高级调用方也可以直接传入 objectId+objectClass。按日期排序返回活动(最新的在前)。对于确实缺失或为 null 的可选参与者、消息、类和元数据字段,会从每个条目中省略。 |
get_activity_message | 按 ID 获取单条活动消息,并在可用时包含子类元数据。 |
pin_activity_message | 固定或取消固定活动消息。如果固定状态已符合要求,则操作具有幂等性。 |
list_activity_filters | 按显示顺序列出已配置的活动筛选条件。 |
list_activity_references | 列出与原始 Huly 对象关联的活动引用。使用 direction 列出从该对象发出的引用、指向该对象的引用或两者。 |
list_activity_replies | 列出任意活动消息的讨论串回复,不仅限于频道消息。 |
add_activity_reply | 添加 Markdown 回复。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_activity_reply | 更新通用活动回复正文。正文支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_activity_reply | 删除通用活动回复。 |
add_reaction | 为活动消息添加表情回应。 |
remove_reaction | 移除活动消息的表情回应。 |
list_reactions | 列出活动消息的表情回应。 |
save_message | 保存/收藏活动消息以供日后参考。 |
unsave_message | 从已保存/收藏的消息中移除活动消息。 |
list_saved_messages | 列出已保存/收藏的活动消息。 |
list_mentions | 列出活动消息中对当前用户的 @提及。 |
通知
| 工具 | 描述 |
|---|---|
list_notification_providers | 列出模型声明的通知提供方,例如收件箱、推送和声音。使用返回的提供方 ID 更新设置。较旧的 REST 服务可能会返回兼容性元数据,并明确提示工具警告。 |
list_notification_types | 列出模型声明的通知类型。使用返回的类型 ID 更新特定提供方的设置。较旧的 REST 服务可能会返回兼容性元数据,并明确提示工具警告。 |
list_notifications | 列出收件箱通知。按修改日期排序返回通知(最新的在前)。支持按已读/已归档状态筛选。 |
get_notification | 获取通知的完整详情。使用此工具查看通知内容和元数据。 |
mark_notification_read | 将通知标记为已读。幂等:通知已读时也会返回成功。 |
mark_notification_unread | 将通知标记为未读。幂等:通知已未读时也会返回成功。 |
mark_all_notifications_read | 将所有未读通知标记为已读。返回已标记通知的数量。 |
archive_notification | 归档通知。已归档的通知会从主收件箱视图中隐藏。若通知已归档,则此操作为幂等操作。 |
unarchive_notification | 取消归档通知,使其重新显示在活动通知列表中。若通知已处于活动状态,则此操作为幂等操作。 |
archive_all_notifications | 归档所有通知。返回已归档通知的数量。 |
delete_notification | 永久删除通知。此操作无法撤销。 |
get_notification_context | 获取实体的通知上下文。返回特定对象的跟踪信息。 |
list_notification_contexts | 列出通知上下文。按上次更新时间排序返回上下文(最新的在前)。支持按置顶状态筛选,也可包含隐藏的上下文。 |
pin_notification_context | 置顶或取消置顶通知上下文。置顶的上下文会在收件箱中突出显示。若置顶状态已符合要求,则此操作为幂等操作。 |
hide_notification_context | 隐藏或取消隐藏通知上下文。除非 includeHidden 为 true,否则隐藏的上下文不会出现在 list_notification_contexts 中。若隐藏状态已符合要求,则此操作为幂等操作。 |
archive_notification_context | 归档通知上下文中的所有收件箱通知。幂等:没有剩余活动通知时返回数量 0。 |
unarchive_notification_context | 取消归档通知上下文中的所有已归档收件箱通知。幂等:没有剩余已归档通知时返回数量 0。 |
subscribe_to_object_notifications | 通过添加 core 协作者行,为经过身份验证的账户订阅原始 Huly 对象的通知。若已订阅,则此操作为幂等操作。 |
unsubscribe_from_object_notifications | 通过移除协作者行,取消经过身份验证的账户对原始 Huly 对象通知的订阅。若协作者行已不存在,则此操作为幂等操作。 |
list_notification_settings | 列出通知提供方设置。返回当前通知偏好设置。 |
update_notification_provider_setting | 启用或禁用通知提供方设置。如果存在权威模型定义,则会根据这些定义验证 providerId;同时保留兼容的 REST 回退,并明确发出警告。 |
update_notification_type_setting | 为一个提供方启用或禁用一种通知类型。如果存在权威模型定义,则会根据这些定义验证两个 ID;且仅当提供方可配置时才创建类型设置。同时保留兼容的 REST 回退,并明确发出警告。 |
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 工作区访问链接。省略角色时,role=GUEST。设置 personalized=false,并指定 notBefore 和 expiration,可创建可重复使用的匿名访客链接;还可通过 spaces 将访问限制在特定 Huly 空间 ID。 |
get_regions | 获取创建工作区时可用的区域。返回区域代码和显示名称。 |
审批
| 工具 | 描述 |
|---|---|
list_approval_requests | 列出已发布的 @hcengineering/request SDK 包中的通用 Huly 审批 Request 文档。此工具仅用于只读发现:当你知道目标文档时,可按状态、原始 attachedTo 文档 ID 和/或原始 attachedToClass 类 ID 筛选。省略筛选条件可查看各模块中最近的审批请求。 |
get_approval_request | 按原始请求 _id 读取一条通用 Huly 审批 Request 文档。返回人员引用及尽力获取的联系信息,以及不透明的 SDK tx/rejectedTx 载荷以供检查;此只读工具不会公开审批变更操作。 |
add_approval_request | 创建一条关联到任意目标文档的通用 Huly 审批 Request。提供目标文档的原始 attachedTo 和 attachedToClass、以 Person ID 或精确邮箱/姓名标识符指定的申请人员,以及真实的不透明 Huly SDK tx 载荷。省略 space 时会从目标文档解析;collection 默认为 requests。返回新的请求 ID,不会立即执行容易因数据过时而出错的写后读取。 |
add_approval_request_comment | 按请求 _id 向审批 Request 添加纯 Markdown 评论。指向当前工作区 Huly 浏览 URL 且带有 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。此操作不会批准、拒绝或取消请求,也不会创建决策评论混入项。 |
approve_approval_request | 以当前 Huly 用户身份批准一条待处理的审批 Request。当前用户的 Employee/Person 引用必须位于请求的申请人员列表中。可选择在批准前附加 Markdown 决策评论。指向当前工作区 Huly 浏览 URL 且带有 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。如果当前用户已批准该请求,则返回 changed=false。 |
reject_approval_request | 以当前 Huly 用户身份拒绝一条待处理的审批 Request,并附加必需的 Markdown 拒绝决策评论。指向当前工作区 Huly 浏览 URL 且带有 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。如果存在 rejectedTx,Huly 会应用它。 |
cancel_approval_request | 取消由当前 Huly 用户创建的一条待处理审批 Request。这是安全地将请求从工作流中移除的操作;不会公开硬删除功能。 |
看板
| 工具 | 描述 |
|---|---|
list_boards | 列出来自 @hcengineering/board 的 Huly 看板,按名称排序。看板是由 task.Project 支撑的空间;这不是单独的 Huly Card 模块。 |
get_board | 按看板 _id 或完全匹配的看板名称获取一个 Huly 看板。返回看板元数据、项目类型和卡片数量。 |
create_board | 创建 Huly 看板。按完全匹配的启用中看板名称确保幂等;仅当默认看板项目类型不明确时,才通过 _id 或完全匹配的名称传入 projectType。 |
update_board | 更新 Huly 看板的名称、描述或隐私设置。board 接受看板 _id 或完全匹配的看板名称。 |
archive_board | 按看板 _id 或完全匹配的看板名称归档 Huly 看板。此操作会隐藏看板,但不会删除卡片。 |
unarchive_board | 按看板 _id 或完全匹配的看板名称取消归档 Huly 看板。 |
list_board_cards | 列出一个 @hcengineering/board 看板上的卡片。board 接受看板 _id 或完全匹配的看板名称;卡片按最近修改时间从新到旧排序。 |
get_board_card | 获取一张看板卡片。board 接受看板 _id 或完全匹配的看板名称;card 接受卡片 _id、CARD-123、纯数字 123,或限定在该看板内的完全匹配标题。 |
create_board_card | 使用安全默认值创建看板卡片。根据看板项目类型解析 kind/status,递增 CARD 编号序列,并将 Markdown 描述存储为行内 Huly Markup。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_board_card | 更新看板卡片字段:标题、Markdown 描述、状态、负责人、成员、位置、封面、startDate 和 dueDate。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。使用 null 清除可清空字段。 |
archive_board_card | 归档一张看板卡片。card 接受 _id、CARD-123、纯数字或限定在该看板内的完全匹配标题。 |
unarchive_board_card | 取消归档一张看板卡片。card 接受 _id、CARD-123、纯数字或限定在该看板内的完全匹配标题。 |
delete_board_card | 使用 Huly removeCollection 永久删除已归档的看板卡片。启用中的卡片会被拒绝;请先调用 archive_board_card。 |
list_board_labels | 列出看板标签定义。看板标签是用于看板卡片的 @hcengineering/tags TagElement 行,其中 targetClass = @hcengineering/board Card。 |
create_board_label | 为看板卡片创建标签定义。当有一个标签匹配时,按完全匹配的标题确保幂等;不存在默认类别时使用 board.category.Other。 |
update_board_label | 按 TagElement _id 或完全匹配的标题更新看板标签定义。必须提供 title、color、description 或 category 中的至少一项。 |
delete_board_label | 按 TagElement _id 或完全匹配的标题删除一个看板标签定义。此操作会删除标签定义,而非看板卡片。 |
list_board_card_labels | 列出附加到一张看板卡片的标签。按 _id/名称解析看板,并按 _id、CARD-123、纯数字或完全匹配的标题解析卡片。 |
add_board_card_label | 为一张看板卡片添加标签。如果 label 是新标题,则先创建看板卡片标签定义;重复调用具有幂等性。 |
remove_board_card_label | 从一张看板卡片移除标签。当标签存在但未附加到该卡片时,返回 detached=false。 |
list_board_menu_pages | 以只读方式列出看板菜单页面模型文档。可选的 page 筛选条件可以是 MenuPage _id、原始 pageId、main/archive 别名或完全匹配的标签。 |
list_board_saved_views | 以只读方式列出看板已保存的筛选视图。查询 view.class.FilteredView(其中 attachedTo = board.app.Board),并报告专属/共享可见性。 |
get_board_saved_view | 按 FilteredView _id 或完全匹配的名称读取一个看板已保存的筛选视图,范围限定为 attachedTo = board.app.Board。不会执行任何已保存视图写入操作。 |
list_board_viewlets | 以只读方式列出看板卡片视图小部件。查询 view.class.Viewlet(其中 attachTo = board.class.Card),并包含描述符元数据及匹配的 ViewletPreference 配置。 |
get_board_common_preference | 读取附加到 board.app.Board 的 CommonBoardPreference 行。偏好设置行不存在时返回 present=false,且绝不会创建该行。 |
卡片
| 工具 | 描述 |
|---|---|
list_card_comments | 列出实际附属于一张 Huly 卡片的评论,按时间从早到晚排序。通过精确名称或 ID 解析卡片空间,并通过精确标题或 ID 解析卡片。包括此 MCP 服务创建的评论,以及兼容的 Huly UI 卡片评论约定。 |
add_card_comment | 向一张 Huly 卡片添加 Markdown 评论,通过精确名称或 ID 解析卡片空间,并通过精确标题或 ID 解析卡片。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保持为普通链接。 |
update_card_comment | 更新属于已解析 Huly 卡片的一条评论。通过精确名称或 ID 解析卡片空间,并通过精确标题或 ID 解析卡片。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保持为普通链接。 |
delete_card_comment | 永久删除属于已解析 Huly 卡片的一条评论。通过精确名称或 ID 解析卡片空间,并通过精确标题或 ID 解析卡片。此操作无法撤销。 |
list_card_spaces | 列出所有 Huly 卡片空间。返回按名称排序的卡片空间。卡片空间是卡片的容器。 |
list_master_tags | 列出 Huly 卡片空间中可用的主标签(卡片类型)。主标签定义了可在空间中创建的卡片类型/架构。 |
list_cards | 列出 Huly 卡片空间中的卡片。返回按修改日期排序的卡片(从新到旧)。支持按类型(主标签)、标题子字符串和内容搜索进行筛选。 |
get_card | 获取 Huly 卡片的完整详情,包括 Markdown 内容。当 Huly 提供一致的版本号和链标识时,会将它们一并放入一个版本对象中;部分或为空的版本字段会被省略。 |
list_card_versions | 使用任一版本卡片 ID 或精确标题读取一页 Huly 卡片版本历史。返回顺序确定的条目(从最早版本开始)、完整历史记录的权威总数,以及在达到限制而截断页面时返回 hasMore。无版本卡片会返回一个不含版本元数据的条目。此工具不会创建或还原版本。 |
create_card | 在 Huly 卡片空间中创建新卡片。必须指定主标签(卡片类型)。内容支持 Markdown 格式。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保持为普通链接。返回创建的卡片 ID。 |
update_card | 更新现有 Huly 卡片的字段。仅修改提供的字段。内容更新支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和标签的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保持为普通链接。 |
delete_card | 永久删除一张 Huly 卡片。此操作无法撤销。 |
协作者
| 工具 | 描述 |
|---|---|
list_object_collaborators | 列出 Huly 事务、文档或原始对象的通知协作者。优先使用便捷目标:事务使用项目 + issueIdentifier,文档使用团队空间 + 文档。高级调用者可以直接传入 objectId + objectClass。 |
add_object_collaborator | 通过添加核心协作者记录,订阅工作区成员的对象通知。成员可以是账户 UUID、精确的员工/人员姓名或电子邮件地址。如果已订阅,则不会重复添加。 |
remove_object_collaborator | 通过移除协作者记录,取消订阅工作区成员的对象通知。成员可以是账户 UUID、精确的员工/人员姓名或电子邮件地址。如果已取消订阅,则不会重复移除。 |
自定义字段
| 工具 | 描述 |
|---|---|
list_custom_fields | 列出工作区中的自定义字段定义。返回字段的标签、类型和所属类信息。自定义字段在 Huly 界面中创建,可应用于卡片类型、问题类型或其他类。使用 targetClass 可筛选特定类的字段。 |
get_custom_field_values | 读取文档中的自定义字段值。传入文档的 ID 和类(来自 list_cards、list_issues 等)。返回在文档中找到的所有自定义字段值及其标签和类型。 |
set_custom_field | 设置文档中的自定义字段值。需要提供文档 ID、类、字段 ID(来自 list_custom_fields)和值。Huly 写入前会解析值:将数字字符串解析为数字,将 'true'/'false' 解析为布尔值,字符串则保持原样。日期字段仅接受真实的 YYYY-MM-DD 日历日期(UTC 午夜)或规范的非负纪元毫秒字符串,范围为 0 到 8640000000000000。如果日期被拒绝,请移除任何时间、时区后缀、符号、空格、小数或指数,然后使用上述精确格式之一重试。 |
云盘
| 工具 | 说明 |
|---|---|
list_drives | 列出 Huly Drive 空间。省略 includeArchived 时,includeArchived=undefined。当你不知道确切的 Drive ID 或名称时,在执行路径操作前使用此工具。 |
get_drive | 按确切的 Drive ID 或名称获取一个 Huly Drive。如果确切名称存在歧义,错误信息会包含候选 ID,便于下次调用使用 ID。 |
create_drive | 幂等地创建 Huly Drive 空间。如果已存在名称完全相同的活动 Drive,则返回该 Drive,并将 created 设为 false。初始成员和所有者可使用账户 UUID、确切电子邮件地址或确切人员姓名;省略列表时默认使用调用者。 |
update_drive | 更新现有 Drive 的安全元数据:名称、描述、private、archived 或 autoJoin。至少提供一个更新字段。此操作更改的是 Drive 空间,而非其中的文件或文件夹。 |
delete_drive | 永久删除空的 Huly Drive 空间。Drive 必须不包含任何文件或文件夹;非空 Drive 删除失败时会提供子项数量和项目摘要。这是永久删除,不是归档或移至回收站。 |
add_drive_members | 幂等地向现有 Drive 添加成员。成员可使用账户 UUID、确切电子邮件地址或确切人员姓名;这些信息会解析为 Huly 账户 UUID,然后用于替换 Drive 成员列表。 |
remove_drive_members | 幂等地从现有 Drive 移除成员。成员可使用账户 UUID、确切电子邮件地址或确切人员姓名;这些信息会解析为 Huly 账户 UUID,然后用于替换 Drive 成员列表。 |
set_drive_owners | 替换现有 Drive 的所有者。所有者可使用账户 UUID、确切电子邮件地址或确切人员姓名。默认情况下,也会确保每位所有者都是 Drive 成员。传入 owners=[] 可清除所有者。 |
list_drive_items | 列出 Drive 中某个文件夹路径下的子项。路径采用类似 POSIX 的格式,并会规范化为绝对路径;'/' 会列出根目录。若同一父级下存在同名项目,则返回候选 ID,而不会猜测。 |
get_drive_item | 按确切的 itemId 或路径获取一个 Drive 文件夹或文件。只能提供一种定位方式。文件结果在可用时会包含当前版本、大小、MIME 类型和下载 URL。 |
list_drive_file_comments | 列出通过 filePath 或 fileId 定位的 Drive 文件上的评论。只能提供一种定位方式。返回的评论按创建日期升序排列,最早的在前。 |
add_drive_file_comment | 为通过 filePath 或 fileId 定位的 Drive 文件添加 Markdown 评论。只能提供一种定位方式。评论会直接附加到文件上。Markdown 链接若指向当前工作区的 Huly 浏览 URL,且包含 _class、_id 和 label,则会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_drive_file_comment | 更新通过 filePath 或 fileId 定位的 Drive 文件上的评论。只能提供一种定位方式。评论正文未更改时,此操作具有幂等性。Markdown 链接若指向当前工作区的 Huly 浏览 URL,且包含 _class、_id 和 label,则会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_drive_file_comment | 永久删除通过 filePath 或 fileId 定位的 Drive 文件上的评论。只能提供一种定位方式。此操作删除的是评论,而非文件。 |
list_drive_file_activity | 列出通过 filePath 或 fileId 定位的 Drive 文件的活动消息。只能提供一种定位方式。活动按日期降序排列,最新的在前。 |
create_drive_folder | 幂等地创建 Drive 文件夹路径,并像 mkdir -p 一样创建缺失的父文件夹。若完整文件夹路径已存在,则返回 created=false。 |
upload_drive_file | 将文件上传到 Drive 中包含文件名的完整路径。必须且只能提供一个来源:filePath 会在 MCP 服务所在主机上解析,data 是客户端本地的 Base64 内容,fileUrl 则由 MCP 服务获取。默认情况下,createParents=true 会创建缺失的父文件夹并报告这些文件夹。 |
upload_drive_file_version | 为通过文件 ID 或文件路径定位的现有 Drive 文件上传新版本。必须且只能提供一个来源:filePath 会在 MCP 服务所在主机上解析,data 是客户端本地的 Base64 内容,fileUrl 则由 MCP 服务获取。此操作会递增文件版本计数,并将上传的版本设为当前版本。 |
move_drive_item | 将 Drive 项目(即文件或文件夹)移动到同一 Drive 中另一个已存在的文件夹路径,不更改其名称。项目已位于目标文件夹时,此操作具有幂等性。若同级项目名称冲突,或要将文件夹移入自身或其后代文件夹,则会拒绝操作。 |
rename_drive_item | 在当前文件夹中重命名 Drive 项目(即文件或文件夹)。标题未更改时,此操作具有幂等性。若同级项目名称冲突,则会拒绝操作;如需更改文件夹,请使用 move_drive_item。 |
delete_drive_item | 永久删除 Drive 项目(即文件或文件夹)。删除文件时也会删除其版本记录。文件夹必须为空;删除非空文件夹会失败,并提供子项数量和摘要。这是永久删除,不是归档或移至回收站。 |
list_drive_file_versions | 列出通过文件 ID 或文件路径定位的 Drive 文件的版本。会标记当前版本,并包含 blob ID、大小、MIME 类型、lastModified 和下载 URL。 |
restore_drive_file_version | 按版本 ID 或数字版本号恢复现有 Drive 文件的版本。请求的版本已是当前版本时,此操作具有幂等性,且不会递增文件版本计数。 |
Hr
| 工具 | 描述 |
|---|---|
list_departments | 列出 HR 部门,包含精确完整路径、层级、经理、订阅者、团队负责人、直接分配的 Staff、由服务器派生的成员数和稳定计数器。按精确的上级路径/ID 限定范围;recursive=false 时返回直接子部门。 |
get_department | 按精确的斜杠分隔完整路径或部门 ID 获取一个 HR 部门。 |
create_department | 创建顶级或嵌套 HR 部门。上级和人员必须使用精确路径/ID/姓名/邮箱指定,遇到歧义时会拒绝。名称不能包含“/”。Department.members 初始为空,之后始终由服务器派生。 |
update_department | 重命名、移动部门,或替换部门元数据和人员信息。拒绝重名的同级部门、上级循环,以及移动包含由服务器派生成员的子树;移动已有人员分配的子树前,请先清除 Staff.department 分配。newParent=null 表示移至顶层;teamLead=null 表示清除团队负责人。绝不写入 Department.members。 |
delete_department | 默认预览破坏性影响。执行时必须设置 execute=true,并提供与预览结果完全一致的后代数量和已分配 Staff 数量;随后 Huly 会级联删除后代部门,并清除受影响 Staff 的分配。 |
list_staff | 列出 HR Staff 及权威部门分配信息。可选按精确部门路径/ID 限定范围、包含后代,并按 Employee 的 active 状态筛选。 |
assign_staff_department | 通过精确的员工 ID/邮箱/显示名称指定员工,仅写入权威字段 Staff.department。使用 department=null 可清除分配。Huly 服务器触发器会异步处理 Department.members 层级传播。 |
list_hr_request_comments | 列出直接附加到指定精确 HR 请求 ID 的评论,并提供总数和截断元数据。 |
add_hr_request_comment | 向指定精确 HR 请求 ID 直接添加 Markdown 评论。 |
update_hr_request_comment | 更新直接属于指定精确 HR 请求的评论。 |
delete_hr_request_comment | 删除直接属于指定精确 HR 请求的评论。 |
list_hr_request_attachments | 列出直接附加到指定精确 HR 请求 ID 的文件,并提供总数和截断元数据。 |
get_hr_request_attachment | 获取直接属于指定精确 HR 请求的一个文件。 |
add_hr_request_attachment | 向指定精确 HR 请求添加文件。提供 filename、contentType,以及 filePath、fileUrl 或 base64 数据中的且仅其中一项。 |
update_hr_request_attachment | 更新直接属于指定精确 HR 请求的文件描述和/或固定状态。 |
delete_hr_request_attachment | 删除直接属于指定精确 HR 请求的一个文件。 |
list_hr_request_types | 通过稳定 ID 和 Huly 翻译的人类可读标签查询已安装的 HR 请求类型。将 locale 设为受支持的 Huly 区域设置(例如 fr);请求工具可使用任何受支持区域设置的标签,但遇到歧义时会拒绝。此处有意不支持修改请求类型,因为 Huly 会将其安装为 model-space 文档,且未提供稳定的运行时修改契约。 |
list_hr_requests | 列出 HR 请求,可按精确的员工、部门和请求类型筛选。日历日期为包含首尾的 YYYY-MM-DD 值,并以 UTC 偏移量 0 存储。在应用有意设置的输出分页前,系统会先从 Huly 加载所有匹配项;结果包含 total、truncation 和 nextOffset 延续元数据。 |
get_hr_request | 按 list_hr_requests 返回的精确原始请求 ID 获取一个 HR 请求。 |
create_hr_request | 创建与员工关联的 HR 请求,并精确解析员工、部门和请求类型。日期为 YYYY-MM-DD 格式的包含首尾日历日期;描述支持带有 Huly 原生引用的 Markdown。 |
update_hr_request | 按精确请求 ID 更新选定的 HR 请求字段。部门和类型定位符会进行精确解析;未提供的字段保持不变。日期仍为包含首尾的 YYYY-MM-DD 日历日期。 |
delete_hr_request | 删除一个指定的精确 HR 请求。其评论和附件是由 Huly 管理的关联集合,并遵循请求删除生命周期。 |
list_public_holidays | 列出公共假日文档,可按精确部门和包含首尾的日期筛选。includeInherited 会显式添加所有上级部门,绝不会添加后代部门。在应用有意设置的输出分页前,系统会先从 Huly 完整加载结果,并提供 total、truncated 和 nextOffset 元数据。 |
get_public_holiday | 按 list_public_holidays 返回的精确原始 ID 获取一个公共假日文档。 |
create_public_holiday | 为指定精确部门 ID 或完整路径创建一个公共假日。日期为与时区无关的格里高利历日,以 UTC 偏移量 0 的 Huly TzDate 存储;不允许重复的部门/日期组合。 |
update_public_holiday | 更新一个指定精确公共假日 ID 的选定字段。部门路径会进行精确解析;不允许重复的部门/日期组合。未提供的字段保持不变,且不会执行写入后读取查询。 |
delete_public_holiday | 按精确原始 ID 永久删除一个公共假日文档。 |
get_hr_schedule | 返回与包含首尾的 UTC 日历日期范围重叠的所有 HR 请求、所有适用的假日文档,以及每天对应的一个单元格。默认情况下,部门范围包含嵌套部门;假日继承默认从每个范围内的部门向上遍历。不设结果上限;complete=true 表示已完成全部游标分页。 |
get_hr_table | 返回包含首尾的 UTC 日历日期范围内的完整员工表。基本工作日为周一至周五,减去适用的继承假日;负值请求类型消耗非假日工作日,正值类型增加日历日单位,零值类型不增加任何单位。不设结果上限。 |
get_hr_summary_report | 返回包含首尾的 UTC 日期范围内,按精确部门和请求类型分组的完整请求总数。请求会截取至该范围内;日历日包含周末,工作日不包含周末及适用的继承假日;带符号单位遵循 Huly 请求类型的取值。不设结果上限。 |
Inventory
| 工具 | 描述 |
|---|---|
list_inventory_product_attachments | 列出直接附加到通过产品 ID 或精确名称解析的库存产品上的文件。传入类别以区分重名产品。 |
get_inventory_product_attachment | 获取直接附加到库存产品上的一个文件。attachmentId 必须属于已解析的产品。 |
add_inventory_product_attachment | 向通过产品 ID 或精确名称解析的库存产品添加文件。请准确提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
update_inventory_product_attachment | 更新直接附加到库存产品上的文件的描述和/或置顶状态。attachmentId 必须属于已解析的产品。 |
delete_inventory_product_attachment | 永久删除直接附加到库存产品上的文件。attachmentId 必须属于已解析的产品。 |
list_inventory_product_photos | 列出直接附加到通过产品 ID 或精确名称解析的库存产品上的照片。传入类别以区分重名产品。 |
get_inventory_product_photo | 获取直接附加到库存产品上的一张照片。photoId 必须属于已解析的产品。 |
add_inventory_product_photo | 使用 Huly 的产品照片集合向库存产品添加照片。请准确提供一个来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
update_inventory_product_photo | 更新直接附加到库存产品上的照片的描述和/或置顶状态。photoId 必须属于已解析的产品。 |
delete_inventory_product_photo | 永久删除直接附加到库存产品上的照片。photoId 必须属于已解析的产品。 |
list_inventory_product_comments | 列出直接附加到通过产品 ID 或精确名称解析的库存产品上的评论。按时间从早到晚返回评论。 |
add_inventory_product_comment | 向通过产品 ID 或精确名称解析的库存产品直接添加 Markdown 评论。传入类别以区分重名产品。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。 |
update_inventory_product_comment | 更新直接附加到库存产品上的评论。commentId 必须属于已解析的产品。指向当前工作区 Huly 浏览 URL,且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和指向其他工作区的浏览 URL 则保留为普通链接。 |
delete_inventory_product_comment | 永久删除直接附加到库存产品上的评论。commentId 必须属于已解析的产品。 |
list_inventory_product_activity | 列出通过产品 ID 或精确名称解析的库存产品的活动消息。这是只读的审计/活动历史记录,按时间从新到旧排列。 |
list_inventory_categories | 按名称排序列出库存类别。省略 parentCategory 可搜索所有类别;传入父类别 ID、精确名称或 root 可列出其直接子类别。query 会按名称进行不区分大小写的筛选。 |
get_inventory_category | 按 ID 或精确名称获取一个库存类别。如果不同父类别下存在同名类别,请传入 parentCategory 或使用类别 ID。 |
create_inventory_category | 创建库存类别。默认将 parentCategory 设为 Inventory 根类别。同一父类别下不允许创建同名类别。 |
update_inventory_category | 重命名和/或移动库存类别。category 接受 ID 或精确名称;名称可能重复时,请传入 parentCategory。目标父类别下不允许重名,也不允许移动到自身或后代类别下。 |
delete_inventory_category | 按 ID 或精确名称删除空的库存类别。若类别仍包含子类别或产品,则拒绝删除;此操作不会级联删除。 |
list_inventory_products | 按名称排序列出库存产品。可选按类别 ID/精确名称限定范围,并通过 query 筛选产品名称。 |
get_inventory_product | 按 ID 或精确产品名称获取一个库存产品。如果产品名称重复,请传入类别或使用产品 ID。 |
create_inventory_product | 在通过 ID 或精确名称解析的类别中创建库存产品。同一类别下不允许创建同名产品。 |
update_inventory_product | 重命名和/或移动库存产品。product 接受 ID 或精确名称;名称可能重复时,请传入 category。目标类别下不允许重名。 |
delete_inventory_product | 按 ID 或精确名称删除库存产品。若产品包含变体、照片、附件或评论,则拒绝删除;此操作不会级联删除。 |
list_inventory_variants | 按名称排序列出库存变体/SKU。可选按产品 ID/精确名称限定范围;可通过类别区分重名产品。query 会筛选变体名称和 SKU。 |
get_inventory_variant | 按 ID、精确变体名称或精确 SKU 获取一个库存变体。如果名称/SKU 重复,请传入产品或使用变体 ID。 |
create_inventory_variant | 在通过 ID 或精确名称解析的产品下创建库存变体/SKU。同一产品下不允许创建同名变体或重复 SKU。 |
update_inventory_variant | 重命名库存变体和/或更改其 SKU。variant 接受 ID、精确名称或精确 SKU;必要时请传入产品。同一产品下不允许名称或 SKU 重复。 |
delete_inventory_variant | 按 ID、精确变体名称或精确 SKU 删除一个库存变体/SKU。此操作不会删除其所属产品。 |
标签
| 工具 | 描述 |
|---|---|
list_labels | 列出工作区中的标签定义。标签是全局的(不限定于特定项目)。返回问题跟踪器中的标签,并按修改日期排序(最新的在前)。 |
create_label | 在工作区中创建新的标签定义。标签是全局的,可附加到任何问题。如果已存在同名标签,则返回该标签(created=false)。使用 add_issue_label 将标签附加到特定问题。 |
update_label | 更新标签定义。接受标签 ID 或标题。仅修改提供的字段。 |
delete_label | 永久删除标签定义。接受标签 ID 或标题。此操作无法撤销。 |
潜在客户
| 工具 | 描述 |
|---|---|
list_lead_comments | 列出一个线索上的原生评论,该线索通过精确的销售漏斗 ID/名称和 LEAD- 确定。返回 Markdown,并保留原生 Huly 引用。 |
add_lead_comment | 向一个精确的线索添加 Markdown 评论。当前工作区的 Huly 链接会以原生引用形式存储。 |
update_lead_comment | 更新属于一个精确线索的评论;拒绝更新附加在其他位置的评论。保留 Markdown 原生引用。 |
delete_lead_comment | 仅当评论属于目标线索时才删除。 |
list_lead_attachments | 列出属于一个精确线索的原生附件引用。 |
add_lead_attachment | 上传本地路径、URL 或 base64 负载,并将原生文件引用附加到一个精确线索。 |
get_lead_attachment | 仅当附件属于一个精确线索时,获取其元数据和下载 URL。 |
update_lead_attachment | 仅当附件属于一个精确线索时,更新其描述或固定状态。 |
delete_lead_attachment | 仅当附件属于一个精确线索时才删除。原生 Blob 引用仍由 Huly 存储清理机制管理。 |
list_lead_label_definitions | 列出目标类为 Lead 的可复用原生标签定义,不包含原始类 ID。返回符合条件的总数,并指出受限页面是否被截断。 |
list_lead_labels | 列出附加到一个精确线索的原生 TagReference 标签关系。 |
add_lead_label | 为一个精确线索幂等地附加标签关系。接受定义 ID 或精确标题;若标题不存在,则创建 Lead 标签定义。 |
update_lead_label | 更新一个精确线索与指定标签的所有匹配 TagReference 关系上已发布的可选权重。 |
remove_lead_label | 幂等地移除一个精确线索上所有匹配的 TagReference 关系,但不删除可复用的标签定义。 |
list_funnels | 列出所有 Huly 销售漏斗(线索管道)。返回每个漏斗的稳定 ID 和显示名称,并按名称排序。支持按归档状态筛选。 |
get_funnel | 按稳定的 _id 或精确名称获取一个漏斗。拒绝有歧义的名称。返回完整的稳定 Funnel/Project 投影、经过验证的 Lead 工作流、内容计数、删除影响,以及对不受支持字段的明确分类。 |
create_funnel | 在验证 Funnel 项目类型、Lead 任务类型、工作流状态、成员资格和负责人后,创建原生 Huly 漏斗。完整描述支持 Markdown,并保留当前工作区的原生引用。仅当已存在一个名称完全匹配的漏斗时,创建操作才是幂等的;结果会明确说明该漏斗是否已归档,并拒绝有歧义的名称。 |
update_funnel | 按稳定的 _id 或无歧义的精确名称确定漏斗并更新。变更前会验证现有的 Funnel 项目类型/工作流和成员资格。传入 null 可清除 description 或 fullDescription;保留 Markdown 原生引用。 |
archive_funnel | 归档漏斗,但不删除。返回线索/评论/附件影响,以便调用方评估被隐藏的原生内容。已归档的漏斗会幂等地不执行任何操作。 |
delete_funnel | 仅在精确的漏斗已归档且为空时永久删除。先调用 get_funnel 或 archive_funnel,然后将已观察到的影响计数作为 expectedLeads、expectedComments 和 expectedAttachments 传入。如果预检快照之后任一计数发生变化,删除就会失败。 |
list_leads | 使用可选筛选条件查询某个漏斗中的 Huly 线索。传入 list_funnels 返回的漏斗 ID,或为方便查询传入漏斗名称。返回按修改日期排序的线索(最新的在前)。支持按状态、受理人和标题搜索筛选。 |
get_lead | 获取一个精确的、限定在指定漏斗内的 Huly 线索,包括 Markdown 描述、客户身份/类型、工作流任务类型和状态、排序/完成信息、原生集合计数、操作者时间戳、漏斗身份,以及对缺乏稳定已发布语义的字段所做的明确分类。线索标识符使用 LEAD-。 |
create_lead | 在活跃漏斗中为现有个人或组织创建一个原生 Huly 线索。按 ID 或精确名称确定漏斗;明确指定客户为个人或组织;可选地选择员工受理人、经规范化后精确匹配的工作流状态(去除首尾空格、不区分大小写,并忽略空格、连字符和下划线),以及 Markdown 描述。必要时自动应用 Customer mixin,保留原生 Huly 引用,并同时返回 leadId 和 LEAD-。此工具绝不会内联创建个人或组织。 |
update_lead | 按漏斗 ID 或精确名称以及 LEAD- 标识符更新原生 Huly 线索。支持的字段包括标题、Markdown 描述、经规范化后精确匹配的工作流状态(去除首尾空格、不区分大小写,并忽略空格、连字符和下划线)、员工受理人、开始日期、截止日期以及 Customer mixin 描述。未提供的字段保持不变;明确传入 null 可清除描述、受理人、日期或客户描述。现有个人会按精确条件解析,有歧义的标识符会导致失败。 |
move_lead | 在验证两个原生 Funnel 项目类型和 Lead 工作流后,将原生 Huly 线索移至另一个活跃漏斗。传入经规范化后精确匹配的目标状态(去除首尾空格、不区分大小写,并忽略空格、连字符和下划线),或省略状态以映射当前状态名称;不兼容或有歧义的映射会失败,且不会写入任何内容。 |
delete_lead | 默认预览原生线索删除影响。预览会读取权威的评论、附件和标签关系计数。若要永久删除,请传入 execute=true,并同时传入预览返回的精确计数;如果影响发生变化,删除就会失败。 |
邮件
| 工具 | 描述 |
|---|---|
list_mail_threads | 一次调用即可发现只读的 Huly 邮件线程元数据:外层频道标题、由人工解析的空间、时间戳,以及每个频道中最多 10 条最新子主题摘要。此工具不会返回消息正文或附件,也不会发送、回复、修改内容,或报告邮箱/投递能力。channelTitle 可能类似于复制接收方的电子邮件,但这并不能证明存在通信对象或已配置邮箱。省略筛选条件即可列出最近的频道;也可按精确的空间名称/ID 或不区分大小写的频道标题子字符串进行筛选。空线程也是受支持的结果。 |
模板
| 工具 | 描述 |
|---|---|
list_message_template_categories | 列出全局 Huly 消息模板类别。类别用于对工作区中的可复用消息模板进行分组。返回类别 ID、名称、描述、已归档/私有标记和时间戳。 |
list_message_templates | 列出全局 Huly 消息模板。可选择按类别 ID 或精确类别名称筛选,并按子字符串搜索模板标题。返回每个模板的 ID、标题、类别摘要、时间戳,以及从美元符号-大括号标记中解析出的 placeholderFieldIds。将 placeholderFieldIds 与 list_message_template_fields.id 匹配,以获取标签和资源 ID。 |
get_message_template | 按模板 ID 或精确标题检索一个全局 Huly 消息模板。如果标题不唯一,请传入类别 ID 或精确类别名称作为类别。返回转换为 Markdown 的完整消息,以及从美元符号-大括号标记中解析出的 placeholderFieldIds。将 placeholderFieldIds 与 list_message_template_fields.id 匹配,以获取标签和资源 ID。 |
render_message_template | 按模板 ID 或精确标题渲染一个全局 Huly 消息模板。仅为 placeholderFieldIds 中匹配的美元符号-大括号占位符字段 ID 替换调用方提供的值;不会执行 Huly TemplateField 提供方资源。未解析的占位符会保留在 renderedMessage 中,并在 unresolvedFieldIds 中报告。 |
list_message_template_fields | 列出 Huly 消息模板字段/占位符,但不会执行提供方资源或渲染模板。可选择按字段类别 ID 或精确的原始标签字符串筛选,并按子字符串搜索原始字段标签。返回字段 ID、标签、类别摘要和提供方资源 ID。 |
模型管理
| 工具 | 描述 |
|---|---|
create_huly_enum | 创建包含有序选项值的 Huly 模型枚举。仅当有序值匹配时,名称完全相同(不区分大小写)的枚举才具有幂等性;否则调用会返回冲突。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
update_huly_enum | 更新通过精确 ID 或名称解析的 Huly 模型枚举。重命名和添加选项是安全的;只要有任何属性引用该枚举,就会拒绝删除选项。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
delete_huly_enum | 永久删除通过精确 ID 或名称解析的 Huly 模型枚举。只要有任何属性引用该枚举,就会拒绝删除。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
create_huly_attribute | 在通过精确 ID、尾部名称或标签解析的类上创建自定义 Huly 属性/特性。支持字符串、数字、布尔值、日期、标记、枚举和引用类型;枚举和引用目标也可通过名称解析。仅当定义匹配时,现有同名属性才具有幂等性;否则调用会返回冲突。新记录的 isCustom 始终为 true。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
update_huly_attribute | 更新通过 ID 或精确名称解析的 Huly 属性的标签、索引、仅限自动化状态或隐藏状态。传入类 ID/名称以消除歧义。内置属性仅允许更新隐藏状态;所有其他内置属性修改均受保护,且无法在此处更改属性键/类型。隐藏/取消隐藏使用 Huly 设置所采用的 SDK 行为。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
delete_huly_attribute | 永久删除通过 ID 或精确名称解析的未使用自定义 Huly 属性。传入类 ID/名称以消除歧义。内置属性以及任何所属类文档中存在的属性均受保护。这会更改工作区模型元数据。必须设置 confirm=true,以防 Agent 意外修改模型。 |
规划器
| 工具 | 描述 |
|---|---|
list_todo_label_definitions | 按可选的标题子字符串,列出 Huly Planner ToDo 可用的标签定义。不公开原始目标类或类别机制。 |
list_todo_labels | 列出附加到一个 Planner ToDo 的标签。可通过原始 ID 或与 get_todo 相同、面向用户的 issue、标题、负责人和完成状态定位条件解析 ToDo。 |
add_todo_label | 为通过原始 ID 或面向用户的定位条件解析出的 Planner ToDo 添加标签;重复调用不会产生额外效果。label 接受定义 ID 或完全匹配的标题;若标题不存在,会先创建 ToDo 标签定义;若有多个完全匹配的标题,则返回候选 ID。 |
remove_todo_label | 从一个 Planner ToDo 移除标签,但不删除可重复使用的标签定义。如果标签存在但未附加,则返回 detached=false;若有多个完全匹配的标题,则返回候选 ID。 |
list_todos | 列出 Huly Planner ToDo。输入为空时,按规划器顺序最多返回 50 个 ToDo,包含所有完成状态。使用负责人、issue、文档、标题、截止日期、优先级、可见性或完成状态筛选条件缩小结果范围。issue 和文档筛选条件不能同时使用。 |
get_todo | 通过原始 todoId,或面向用户的定位条件(例如 issue + 标题 + 负责人,或 attachedTo.type=document 加上 teamspace/文档 + 标题)获取一个 Planner ToDo。返回稳定的 ToDo 字段、负责人、附件上下文、描述、标签数量和工作时段数量。 |
create_todo | 创建 Planner ToDo。省略 attachedTo 可创建个人 ToDo;传入 attachedTo.type=issue,并提供项目和标识符,可创建 issue 行动项;传入 attachedTo.type=document,并提供 teamspace 和文档名称或 ID,可创建文档行动项。文档 ToDo 默认是私有的。省略 owner 时使用已通过身份验证的用户。描述支持 Markdown。指向当前工作区 Huly 浏览 URL(含 _class、_id 和 label)的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保持为普通链接。 |
update_todo | 通过面向用户的定位条件或原始 todoId 更新 Planner ToDo。面向用户的定位条件可指定 issue 或文档附件。支持更新标题、Markdown 描述、负责人、截止日期(包括设为 null 以清除)、优先级和可见性。指向当前工作区 Huly 浏览 URL(含 _class、_id 和 label)的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保持为普通链接。 |
complete_todo | 通过原始 todoId 或面向用户的定位条件(包括文档附件定位条件)完成 Planner ToDo,方法是设置 doneOn。如果 ToDo 附加到 issue,Huly 可能会裁剪未来的工作时段并运行 issue 自动化。 |
reopen_todo | 通过原始 todoId 或面向用户的定位条件(包括文档附件定位条件)重新打开已完成的 Planner ToDo,方法是清除 doneOn。面向用户的定位条件默认会搜索已完成的 ToDo;原始 todoId 定位条件则针对该精确 ToDo。 |
delete_todo | 通过原始 todoId 或面向用户的定位条件(包括文档附件定位条件)删除 Planner ToDo。此操作具有破坏性;删除最后一个未完成的 issue ToDo 可能触发 Huly 经典 issue 状态自动化,而文档 ToDo 不会更改 issue 计数器。 |
schedule_todo | 通过原始 todoId 或面向用户的定位条件(包括文档附件定位条件)安排 Planner ToDo。会在已通过身份验证的用户个人日历中创建一个对 Planner 可见的阻塞性工作时段,该时段由其主要社交身份所有,并将该用户列为参与者。如果身份、员工或可写日历等前置条件不可用,会返回可采取行动的错误。 |
unschedule_todo | 移除 ToDo 工作时段。传入 workSlotId 可移除单个时段;或传入原始 ToDo ID/面向用户的定位条件(包括文档附件定位条件),并设置 scope=all 或 scope=future,还可选传入 from。 |
偏好设置
| 工具 | 描述 |
|---|---|
list_space_preferences | 列出底层 Huly SpacePreference 记录。这些通用偏好设置行附加到空间,且已发布的 SDK 仅公开附加的空间链接,因此此工具用于只读发现。省略 space 可列出所有空间中的近期记录;也可传入空间 _id/确切名称,并可选按 class/type 缩小范围,以检查某个空间。 |
get_space_preference | 读取附加到某个空间的底层 Huly SpacePreference 记录。接受空间 _id 或确切名称,并可选按 class/type 缩小范围。如果空间存在但没有通用 SpacePreference 行,则返回 present=false;对于可写的偏好设置载荷,请使用模块专用的偏好设置工具。 |
流程
| 工具 | 描述 |
|---|---|
list_processes | 列出只读的 Huly Process 工作流定义。可按工作流所附加到的主标签/卡片类型进行筛选。返回流程 ID、名称、附加的卡片类型、自动化标记以及状态/转换数量。 |
get_process | 按流程 ID 或确切显示名称获取某个 Huly Process 工作流定义。如果名称有歧义,工具会返回带候选 ID 的类型化错误,而不会猜测。 |
list_process_executions | 列出只读的 Huly Process 工作流执行记录。支持按流程 ID/名称、卡片/文档 ID/标题和状态筛选。记录会在可用时补充流程名称、卡片标题和当前状态标题。 |
start_process | 在卡片/文档上启动新的活跃 Huly Process 工作流执行。接受流程 ID 或确切流程名称,以及卡片/文档 ID 或确切标题;名称或标题有歧义时会返回包含候选 ID 的错误。此操作不是幂等的:每次成功调用都会创建一次新执行,除非该流程禁止同一张卡片上存在并行的活跃执行,此时会在类型化错误中返回现有活跃执行 ID。 |
cancel_execution | 按执行 ID 幂等地取消某个 Huly Process 执行。活跃执行会标记为已取消;已取消的执行会以 cancelled=false 成功返回;已完成的执行会失败,且不会更改历史记录。 |
招聘
| 工具 | 描述 |
|---|---|
list_recruiting_applicant_matches | 列出只读的 Recruiting 申请者匹配结果。这些 ApplicantMatch 字段由 Huly 生成;此工具只读取它们。可按候选人、完成状态、职位/摘要查询和数量限制进行筛选。 |
get_recruiting_applicant_match | 根据原始申请者匹配项 _id 获取一条只读的 Recruiting 申请者匹配结果。返回候选人、完成状态、生成的职位文本、摘要、回复 Markdown 和时间戳。 |
list_recruiting_reviews | 将 Recruiting 评审/面试列为稳定引用。可按候选人、申请、日期范围、标题/评定/地点查询和数量限制进行筛选。评审定位符使用原始 _id、RVE-、数字或确切标题。 |
get_recruiting_review | 根据原始 _id、RVE-、纯数字或确切标题获取一条 Recruiting 评审。可选的候选人/申请用于消除歧义。返回日程、Markdown 描述、评定、参与者引用、公司、申请和意见数。 |
create_recruiting_review | 像 Huly UI 一样创建 Recruiting 评审/面试:递增 RVE 序列,将其附加到候选人评审集合,将 Markdown 描述存储为 Huly 标记,并将 dueDate 默认设为 date 后 30 分钟;如有需要,还会为人员启用招聘功能。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_recruiting_review | 更新一条 Recruiting 评审。review 接受原始 _id、RVE-、数字或确切标题;candidate/applicationContext 仅用于消除歧义。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。传入 null 可清除 description、verdict、application、company 或 location。 |
delete_recruiting_review | 使用 Huly removeCollection 删除一条 Recruiting 评审。review 接受原始 _id、RVE-、数字或确切标题;candidate/application 可用于消除歧义。 |
list_recruiting_opinions | 列出一条评审的 Recruiting 意见。review 接受原始 _id、RVE-、纯数字或确切标题。意见引用包含 OPE-、父评审引用和意见值。 |
get_recruiting_opinion | 根据原始 _id、OPE- 或纯数字获取一条 Recruiting 意见。传入 review 可消除歧义。返回值、Markdown 描述、评论/附件数量、父评审引用和时间戳。 |
create_recruiting_opinion | 为一条评审创建 Recruiting 意见。递增 OPE 序列,将其附加到评审意见集合,并将 Markdown 描述存储为 Huly 标记。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_recruiting_opinion | 更新一条 Recruiting 意见的值和/或 Markdown 描述。opinion 接受原始 _id、OPE- 或数字;review 可用于消除歧义。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。传入 null 可清除 description。 |
delete_recruiting_opinion | 使用 Huly removeCollection 删除一条 Recruiting 意见。opinion 接受原始 _id、OPE- 或数字;review 可用于消除歧义。 |
list_recruiting_comments | 列出直接附加到 Recruiting 职位、候选人、申请者、评审或意见目标的评论。目标定位符会解析友好的 Recruiting 标识符,并返回解析后的目标引用。 |
add_recruiting_comment | 向通过共享目标定位符解析的 Recruiting 职位、候选人、申请者、评审或意见目标直接添加 Markdown 评论。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_recruiting_comment | 更新一条直接附加到 Recruiting 职位、候选人、申请者、评审或意见的评论。commentId 必须属于解析后的目标。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
delete_recruiting_comment | 删除一条直接附加到 Recruiting 职位、候选人、申请者、评审或意见的评论。commentId 必须属于解析后的目标。 |
list_recruiting_attachments | 列出直接附加到 Recruiting 职位、候选人、申请者或意见目标的文件。除非模型公开相应集合,否则不支持评审附件。 |
get_recruiting_attachment | 获取一个直接附加到 Recruiting 职位、候选人、申请者或意见的文件。attachmentId 必须属于解析后的目标。 |
add_recruiting_attachment | 将文件附加到 Recruiting 职位、候选人、申请者或意见目标。提供 filename、contentType 和且仅提供一种来源:filePath 在 MCP 服务主机上解析,data 是客户端本地的 base64 内容,fileUrl 则由 MCP 服务获取。 |
update_recruiting_attachment | 更新一个直接附加到 Recruiting 职位、候选人、申请者或意见的文件的描述和/或置顶状态。attachmentId 必须属于解析后的目标。 |
delete_recruiting_attachment | 删除一个直接附加到 Recruiting 职位、候选人、申请者或意见的文件。attachmentId 必须属于解析后的目标。 |
list_recruiting_activity | 列出只读的活动消息,目标为通过友好的 Recruiting 标识符解析的 Recruiting 职位、候选人、申请者或评审。不支持意见。 |
list_recruiting_related_issues | 列出其 Huly 相关问题条目(Issue.relations)指向 Recruiting 职位、候选人或申请者目标的跟踪器问题。 |
add_recruiting_related_issue | 将跟踪器问题的 Huly 相关问题条目(Issue.relations)幂等地添加到 Recruiting 职位、候选人或申请者目标。 |
remove_recruiting_related_issue | 从跟踪器问题到 Recruiting 职位、候选人或申请者目标的 Huly 相关问题条目(Issue.relations)幂等地移除。 |
list_recruiting_vacancy_types | 列出 Huly Recruiting 职位工作流类型。在 create_recruiting_vacancy 中使用返回的类型 ID 或确切类型名称。未指定时,创建职位默认使用 Huly 的 Default 职位类型。 |
list_recruiting_vacancy_statuses | 列出一个职位的申请者工作流状态。vacancy 接受原始 _id、VCN-、纯数字或确切名称。状态从职位的 ProjectType 中读取;它们是工作区数据,而非硬编码名称。 |
list_recruiting_vacancies | 将 Recruiting 职位列为稳定引用。支持 includeArchived、名称查询、类型 ID/名称、公司组织 ID/名称和数量限制。职位引用同时包含原始 id 和派生的 VCN- 标识符。 |
get_recruiting_vacancy | 根据原始 _id、VCN-、纯数字或确切名称获取一条 Recruiting 职位。返回描述、类型、公司、地点、到期日期、隐私设置、归档状态和现有数量统计。 |
create_recruiting_vacancy | 像 Huly UI 一样创建 Recruiting 职位:递增职位序列,将 fullDescription 存储为基于 Markdown 的协作标记,将成员/所有者默认设为当前账号,并创建职位类型数据混入 {}。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。 |
update_recruiting_vacancy | 更新可变的 Recruiting 职位字段。vacancy 接受原始 _id、VCN-、纯数字或确切名称。至少提供一个字段。fullDescription 支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。传入 null 可清除 fullDescription、company、location 或 dueTo。 |
archive_recruiting_vacancy | 根据原始 _id、VCN-、纯数字或确切名称归档一条 Recruiting 职位。 |
unarchive_recruiting_vacancy | 根据原始 _id、VCN-、纯数字或确切名称取消归档一条 Recruiting 职位。 |
list_recruiting_candidates | 列出已具有 Recruiting Candidate 混入的人员。使用 set_recruiting_candidate_profile、add_recruiting_candidate_skill 或 create_recruiting_applicant,为现有人员启用招聘功能。 |
get_recruiting_candidate | 根据人员 _id、电子邮件地址或确切显示名称获取一位 Recruiting 候选人。返回个人资料字段、技能、申请/评审数量,以及可用时的主要电子邮件地址。 |
set_recruiting_candidate_profile | 在现有人员上创建或更新 Recruiting Candidate 个人资料混入。对于新候选人,请先调用 create_person,然后使用返回的 Person ID(或确切电子邮件地址/名称)调用此工具。candidate 接受人员 _id、电子邮件地址或确切显示名称。至少提供 title、source、onsite、remote 中的一项。 |
list_recruiting_candidate_custom_fields | 列出适用于现有 Recruiting Candidate 的自定义字段定义。candidate 接受人员 _id、确切电子邮件地址或确切显示名称。由 undefined 或 undefined 所有的字段会连同 ID、标签、类型和所有者元数据一起返回。此读取操作不会启用招聘;对于新人员,请先调用 create_person,然后调用 set_recruiting_candidate_profile。 |
get_recruiting_candidate_custom_field_values | 读取现有 Recruiting Candidate 的所有适用自定义字段值,包括当前未设置的定义。candidate 接受人员 _id、确切电子邮件地址或确切显示名称。候选人和人员所有的字段会附带其 Huly 类型元数据;此读取操作不会启用招聘。对于新人员,请先调用 create_person,然后调用 set_recruiting_candidate_profile。 |
set_recruiting_candidate_custom_field | 根据 list_recruiting_candidate_custom_fields 返回的字段 ID,为现有 Recruiting Candidate 设置一个自定义字段。candidate 接受人员 _id、确切电子邮件地址或确切显示名称。只有由 undefined 或 undefined 所有的 isCustom 字段可写入;数组、引用和未知字段会被拒绝。值使用文档规定的字段类型 wire 格式(数字使用数字字符串,布尔值使用 true/false,日期使用 YYYY-MM-DD 或规范的 epoch 毫秒值)。此写入操作不会启用招聘;对于新人员,请先调用 create_person,然后调用 set_recruiting_candidate_profile。 |
list_recruiting_skills | 列出 Recruiting 技能标签定义。技能是作用域为 targetClass recruit:mixin:Candidate 的 Huly 标签;请将返回的标题或 ID 与候选人技能工具配合使用。 |
list_recruiting_candidate_skills | 根据人员 _id、电子邮件地址或确切名称,列出附加到一位 Recruiting 候选人的技能标签引用。 |
add_recruiting_candidate_skill | 为一位候选人附加一项技能。candidate 接受人员 _id、电子邮件地址或确切名称。skill 接受标题或标签 ID;缺少的技能标题会自动创建。可选的 category/color 仅适用于新建的技能标签。 |
remove_recruiting_candidate_skill | 根据技能标题或标签 ID,从一位候选人移除一项 Recruiting 技能。技能不存在时,此操作仍然幂等。 |
list_recruiting_applicants | 列出 Recruiting 申请者。可按职位、候选人和状态筛选。vacancy 接受原始 _id/VCN-number/number/name;candidate 接受人员 _id/email/确切名称。 |
get_recruiting_applicant | 根据原始 _id、APP- 或纯数字获取一位 Recruiting 申请者。如果 APP 编号可能有歧义,请传入 vacancy 和/或 candidate。 |
create_recruiting_applicant | 创建一位关联一个职位和一位候选人的申请者。拒绝重复的职位/候选人组合,递增 APP 序列,从该职位工作流中解析状态,并在需要时为人员启用招聘功能。 |
update_recruiting_applicant | 更新申请者的状态、受理人、startDate 和/或 dueDate。applicant 接受原始 _id、APP- 或数字;vacancy/candidate 仅用于消除歧义。传入 null 可清除 assignee、startDate 或 dueDate。 |
delete_recruiting_applicant | 使用 Huly removeCollection 删除一位申请者。applicant 接受原始 _id、APP- 或数字;vacancy/candidate 可用于消除 APP 编号的歧义。 |
Sdk-Discovery
| 工具 | 描述 |
|---|---|
list_huly_classes | 发现此工作区中可见的 Huly 模型类、接口和混入 ID。当你需要准确的类 ID 而不是猜测时,在处理原始对象、通用关联、自定义字段或基于模型的任务前使用此工具。 |
get_huly_class | 按准确 ID 读取一个 Huly 类、接口或混入,并返回其继承链和模型属性。当你需要了解此类的字段、引用目标、枚举 ID,或适用于该类的专用 MCP 工具类别提示时,使用此工具。 |
list_huly_attributes | 发现整个工作区或某个类/混入直接包含的 Huly 模型属性。返回属性 ID、所属类、标签、类型系列、引用目标、枚举 ID 和自定义字段标记。 |
list_huly_enums | 发现 Huly 枚举模型文档及其有效值。在写入或解读枚举字段前,使用 get_huly_class 或 list_huly_attributes 获取枚举 ID,再检查允许的枚举值。 |
list_huly_plugin_configurations | 列出只读的 Huly 插件配置记录,这些记录来自 core.class.PluginConfiguration。返回插件 ID、标签、启用/测试版标记和事务计数,让大模型无需修改配置即可查看已安装的模型插件门控。 |
list_huly_domain_index_configurations | 列出只读的 Huly 域索引配置记录,这些记录来自 core.class.DomainIndexConfiguration。返回各个域,以及 disabled、skip 和 enabled-index 摘要,同时将 SDK 开放的索引/筛选器/配置负载保留为带类型的元数据。 |
list_huly_sequences | 列出只读的 Huly 序列计数器,这些计数器来自 core.class.Sequence 和 core.class.CustomSequence。返回序列 ID、关联的类 ID、当前非负整数值,以及可用时的自定义前缀。 |
describe_huly_space_type_capabilities | 在一次只读调用中,按 ID 或准确名称描述一个 Huly SpaceType。返回描述符元数据、基类/目标类、角色、角色权限、默认成员、autoJoin 和存储的角色分配结构。 |
安全管理
| 工具 | 描述 |
|---|---|
create_huly_permission | 创建一个基础 Huly 权限,并设置清晰易懂的标签,以及可选的类/事务约束。类可以使用精确的类 ID、尾部名称或标签。只有完整定义匹配时,精确标签才具有幂等性。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
update_huly_permission | 更新通过精确 ID 或精确标签解析的自定义 Huly 权限。命名空间限定的内置权限受到保护。未被引用的自定义权限可以更改标签/描述;如果权限正被角色或 SpaceType 描述符引用,则拒绝更改语义。将可选约束设为 Null 可清除这些约束。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
delete_huly_permission | 永久删除通过精确 ID 或精确标签解析的自定义 Huly 权限。命名空间限定的内置权限受到保护;如果权限正被引用,则明确拒绝删除。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
create_space_role | 使用 SpaceType ID 或精确名称,以及权限 ID 或精确标签值,创建 Huly 角色定义。此调用会同时创建附加的角色和必需的类型化空间分配属性;如果第二次写入失败,则会进行补偿。工作区范围的权限仅限用于稳定的全空间 SpaceType。只有权限集匹配时,完全相同的现有角色名称才具有幂等性。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
set_space_role_permissions | 替换一个现有角色定义的权限集。SpaceType 可使用 ID 或精确名称;角色可使用该 SpaceType 范围内的 ID 或精确名称;每项权限可使用 ID 或精确标签。传入 permissions=[] 可清除该角色的权限。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
get_class_collaborator_metadata | 获取通过类 ID、尾部名称或标签解析的 Huly 类的直接核心 ClassCollaborators 元数据。如果该类继承默认值或没有直接记录,则返回 configured=false。 |
set_class_collaborator_metadata | 为通过类 ID、尾部名称或标签解析的类创建或替换直接核心 ClassCollaborators 元数据。fieldSelection 支持所有类似人员的字段、不包含任何字段,或经过类及其祖先验证的精确属性名称。安全传播标志会显式规范化。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
delete_class_collaborator_metadata | 永久删除通过 ID、尾部名称或标签解析的类的直接核心 ClassCollaborators 元数据记录。不会选择或删除继承的元数据。此操作会更改工作区访问控制元数据。必须设置 confirm=true,以防 Agent 意外修改安全配置。 |
序列管理
| 工具 | 描述 |
|---|---|
create_huly_sequence | 为通过精确 ID、末尾名称或标签解析的类,创建值为 0 的标准 Sequence 或带前缀的 CustomSequence。重试会返回匹配的现有定义,且绝不会重置或递增其计数器;类型或前缀不同则会返回冲突。这会更改工作区的序列定义。必须设置 confirm=true,以免 Agent 意外修改序列元数据。 |
update_huly_custom_sequence | 仅设置通过精确序列 ID 或关联的类 ID/名称解析的 CustomSequence 的前缀。比较并设置保护机制不会更改计数器,并会拒绝并发更改;标准 Sequence 记录受保护。这会更改工作区的序列定义。必须设置 confirm=true,以免 Agent 意外修改序列元数据。 |
delete_huly_sequence | 永久删除通过精确序列 ID 或关联的类 ID/名称解析且从未使用过的 Sequence 或 CustomSequence。expectedCurrentValue 必须为 0,且它是原子比较并删除保护机制,因此活动中的计数器或已递增的计数器无法删除;被引用的 CustomSequence 记录受保护。这会更改工作区的序列定义。必须设置 confirm=true,以免 Agent 意外修改序列元数据。 |
空间
| 工具 | 描述 |
|---|---|
list_spaces | 列出各模块中的通用 Huly 空间。省略 includeArchived 时,includeArchived=undefined。返回原始空间 id、类、类型、隐私设置、归档状态、自动加入状态、成员数和所有者数,供模块专用工具复用结果。 |
get_space | 根据原始空间 _id 或精确空间名称获取一个通用 Huly 空间。查找时优先尝试 _id,然后尝试精确名称。如果名称匹配多个空间,可传入 class 和/或 type 进行筛选;歧义错误会列出匹配项的 id/class/type。 |
list_space_types | 列出已配置的 Huly SpaceType 记录。返回描述符 id、基类、目标类、默认成员、自动加入状态和角色数,以便发现类型化空间配置。 |
get_space_type | 根据原始 SpaceType _id 或精确名称获取一个 Huly SpaceType,包括描述符元数据、角色定义、角色权限 id/标签和可用权限。 |
list_space_permissions | 列出核心 Huly Permission 记录,以便发现空间/工作区访问控制。可按 scope、objectClass 或搜索文本筛选。此工具为只读工具,不会分配权限。 |
create_space | 根据 SpaceType _id 或精确名称创建通用 Huly 类型化空间。此调用会解析成员、所有者和角色定位符;应用 SpaceType 默认成员;并创建角色分配。出于安全考虑,仅支持 SDK 描述符基类恰好为 core:class:TypedSpace 的非系统类型。专用项目、团队空间、云盘、漏斗、职位空缺等类似类型会返回类型化错误,指引调用者使用相应的专用工具。默认值:private=false、autoJoin=false、restricted=false、owners=[calling account]。 |
get_global_space_admins | 从所有空间类型化空间上的稳定核心 Admin 角色获取整个工作区范围的 Huly 空间管理员。返回账户 UUID,无需原始空间、角色或 mixin 引用。 |
set_global_space_admins | 替换整个工作区范围的 Huly 空间管理员列表。管理员可使用账户 UUID、精确邮箱或精确人员显示名称;传入 admins=[] 可清空该角色。此工具会在内部解析稳定的核心所有空间和 Admin 角色。 |
update_space | 更新现有 Huly 空间的安全通用元数据:名称、描述、隐私设置、归档状态和自动加入状态。不会创建/删除空间,也不会修改模块专用的必填字段。 |
add_space_members | 幂等地向现有 Huly 空间添加成员。成员可使用账户 UUID、精确邮箱或精确人员显示名称;这些值会先解析为 Huly 账户 UUID,再用于替换完整的成员数组。 |
remove_space_members | 幂等地从现有 Huly 空间移除成员。成员可使用账户 UUID、精确邮箱或精确人员显示名称;这些值会先解析为 Huly 账户 UUID,再用于替换完整的成员数组。 |
set_space_owners | 替换现有 Huly 空间的所有者。所有者可使用账户 UUID、精确邮箱或精确人员显示名称。默认情况下,也会确保所有者是成员。 |
set_space_role_members | 替换分配到类型化 Huly 空间中某一角色的成员,同时保留其他所有角色分配。角色可使用原始角色 _id 或该空间的 SpaceType 中的精确角色名称。成员可使用账户 UUID、精确邮箱或精确人员显示名称;传入 members=[] 可清空此角色。 |
add_space_role_members | 幂等地向类型化 Huly 空间中的某一角色添加成员,同时保留其他所有角色分配。角色可使用原始角色 _id 或该空间的 SpaceType 中的精确角色名称。成员可使用账户 UUID、精确邮箱或精确人员显示名称。 |
remove_space_role_members | 幂等地从类型化 Huly 空间中的某一角色移除成员,同时保留其他所有角色分配。角色可使用原始角色 _id 或该空间的 SpaceType 中的精确角色名称。成员可使用账户 UUID、精确邮箱或精确人员显示名称。 |
支持
| 工具 | 描述 |
|---|---|
get_support_status | 通过一次只读调用,发现 Huly 支持小组件的模型/设置,以及已认证账户的私有存储状态行。如果任一必需的工作区分类器不可用,则返回 supported=false;否则,如果不存在 SupportSystem,则设置状态为缺失;如果恰好存在一个,则为已配置;如果存在多个,则返回所有候选项并标记为不明确,而不会以非确定性方式选择。providerConversationId 是不透明值;storedHasUnreadMessages 仅是持久化的备用值,不保证反映服务端的最新状态。格式错误的私有行会被跳过,并向 Agent 发出警告,且绝不包含服务端 ID。Huly 不会公开支持消息正文、参与者、附件、对话记录、实时未读数量、送达/已读状态,也不提供安全的发送/回复/小组件控制 API;此工具绝不会加载可执行的小组件工厂或修改数据。 |
标签类别
| 工具 | 描述 |
|---|---|
list_tag_categories | 列出工作区中的标签/标记类别。类别用于分组标记(例如“优先级标签”“类型标签”)。省略 targetClass 可包含所有类别。 |
create_tag_category | 创建新的标签/标记类别。具有相同 label 和 targetClass 的类别已存在时,操作幂等:返回现有类别(created=false)。targetClass 默认为跟踪器问题。 |
update_tag_category | 更新标签/标记类别。接受类别 ID 或标签名称。仅修改已提供的字段。 |
delete_tag_category | 永久删除标签/标记类别。接受类别 ID 或标签名称。此类别中的标签将变成孤立标签(不会被删除)。此操作无法撤销。 |
标签
| 工具 | 描述 |
|---|---|
list_tags | 列出一个 SDK target class 的通用 Huly 标签定义。对于问题标签、文档标签、Planner ToDo 标签、看板标签和招聘技能,请优先使用模块工具;对于其他由标签支持的领域或类别管理,请将此工具用作原始 SDK 备用方案。 |
create_tag | 为一个 targetClass 创建通用 Huly 标签定义。按 targetClass + title 实现幂等。附加到受支持的对象时,请优先使用模块标签或技能工具;定义管理和不受支持的由标签支持的领域请使用此原始备用方案。 |
update_tag | 更新通用 Huly 标签定义。tag 参数接受标签 ID 或精确标题,并在 targetClass 范围内解析。 |
delete_tag | 按 ID 或精确标题删除通用 Huly 标签定义,并在 targetClass 范围内解析。此操作会删除标签定义,而不仅是某个对象的标签引用。 |
list_attached_tags | 列出附加到一个原始对象集合的通用 Huly TagReference 行。对于问题、文档、Planner ToDo、看板卡片和招聘候选人,请优先使用模块工具;此 SDK 备用方案需要 objectId、objectClass、space 和 collection。 |
attach_tag | 将通用 Huly 标签附加到一个原始对象集合。对于受支持的问题、文档、Planner、看板和招聘对象,请优先使用模块工具;此 SDK 备用方案需要 targetClass 以及 objectId/objectClass/space/collection;对于相同对象、集合和标签,此操作幂等。 |
detach_tag | 从一个原始对象集合中移除通用 Huly 标签。对于受支持的问题、文档、Planner、看板和招聘对象,请优先使用模块工具;此 SDK 备用方案需要 targetClass 和 objectId/objectClass/space/collection。 |
任务管理
| 工具 | 描述 |
|---|---|
list_project_types | 列出 Huly 跟踪器项目类型/工作流模板。返回 ID、显示名称、描述符、任务类型数量、状态数量,以及该类型是否似乎是默认的 Classic 跟踪器类型。 |
get_project_type | 一次调用即可检查一个 Huly 跟踪器项目类型。接受作为 ID 或显示名称的 projectType;省略时使用明确无歧义的 Classic 跟踪器类型。返回任务类型、状态、类别以及任务类型到状态的映射。 |
list_task_types | 列出 Huly 问题/任务类型。可选择按 projectType ID 或显示名称筛选。返回任务类型标识、所属项目类型、类别、问题类以及可用状态数量。 |
create_task_type | 根据规范化名称,以幂等方式将 Huly 问题/任务类型添加到项目类型。除非指定 templateTaskType,否则会从现有模板任务类型复制必需的工作流配置。返回 created、ID、受影响的任务类型 ID,以及工作区级别的工作流警告。 |
create_issue_status | 在项目类型和任务类型范围内,根据规范化名称,以幂等方式添加 Huly 问题工作流状态。category 接受 Huly SDK task.statusCategory 键:UnStarted、ToDo、Active、Won、Lost;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 | 创建并关联到套件的测试用例。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。必须指定项目和套件。默认值:type=functional、priority=medium、status=draft。 |
update_test_case | 更新测试用例。接受测试用例 ID 或名称。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。仅修改提供的字段。将受派人设为 null 可取消分配。 |
delete_test_case | 永久删除测试用例。接受测试用例 ID 或名称。此操作无法撤销。 |
list_test_plans | 列出测试管理项目中的测试计划。返回计划名称和 ID。必须指定项目 ID 或名称。 |
get_test_plan | 获取测试计划详情,包括其条目(测试用例)。接受项目中的计划 ID 或名称。 |
create_test_plan | 在项目中创建测试计划。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。具有幂等性:如果存在同名计划,则返回现有计划(created=false)。 |
update_test_plan | 更新测试计划的名称或描述。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。仅修改提供的字段。传入 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 | 在项目中创建测试运行。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。要根据计划批量创建,请改用 run_test_plan。 |
update_test_run | 更新测试运行的名称、描述或截止日期。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。仅修改提供的字段。传入 null 可清除可选字段。 |
delete_test_run | 永久删除测试运行。此操作不会删除关联的测试结果。无法撤销。 |
list_test_results | 列出测试运行中的测试结果。返回结果名称、状态和受派人。 |
get_test_result | 获取测试结果详情。接受结果 ID 或名称。 |
create_test_result | 在运行中创建测试结果。按 ID 或名称解析测试用例。状态默认为 'untested'。 |
update_test_result | 更新测试结果的状态、受派人或描述。描述支持 Markdown。指向当前工作区 Huly 浏览 URL 且包含 _class、_id 和 label 的 Markdown 链接会转换为原生 Huly 引用;外部 URL 和其他工作区的浏览 URL 则保留为普通链接。状态值:untested、blocked、passed、failed。 |
delete_test_result | 永久删除测试结果。无法撤销。 |
run_test_plan | 执行测试计划:创建一个测试运行,并为每个计划条目创建一个测试结果。返回运行 ID 和创建的结果数量。可选指定运行名称和截止日期。 |
用户状态
| 工具 | 描述 |
|---|---|
list_user_statuses | 列出 Huly 用户在线状态记录。返回账户 UUID、在线状态和最后修改时间戳。使用此工具检查当前有哪些用户已连接;在线状态由 Huly 服务会话维护。可按在线状态或账户 UUID 筛选。 |
视图
| 工具 | 描述 |
|---|---|
list_filtered_views | 列出来自 @hcengineering/view 的已保存筛选视图。使用 attachedTo 按原始应用/资源字符串(例如 board:app:Board)限定范围;省略 attachedTo 可发现各模块中的已保存视图。根据当前账户的 users 成员关系报告个人/共享可见性。 |
get_filtered_view | 按 FilteredView _id 或准确名称获取一个已保存筛选视图。如果多个模块中可能存在相同的准确名称,请传入 attachedTo(例如 board:app:Board)。只读;不会执行任何已保存视图写入操作。 |
list_viewlets | 列出来自 @hcengineering/view 模型元数据的视图组件。使用 attachTo 以及 Huly 类 ID(例如 board:class:Card),按渲染的文档类限定范围;需要类 ID 时,请使用 list_huly_classes。可选的视图组件定位符接受 Viewlet _id、准确标题、准确变体或描述符 _id;描述符 ID 可能返回多个视图组件。包含描述符元数据和匹配的 ViewletPreference 配置。 |
虚拟办公室
| 工具 | 描述 |
|---|---|
list_office_floors | 列出虚拟办公室楼层。 |
get_office_floor | 按 floorId 获取一个虚拟办公室楼层。 |
create_office_floor | 创建一个名称非空的持久虚拟办公室 Floor。会立即返回生成的 floorId。故意不提供楼层重命名和删除功能。 |
list_office_rooms | 列出虚拟办公室房间,包括访问模式、类型、楼层、平面图位置/尺寸、语言以及录制/转录默认设置。 |
get_office_room | 按 roomId 获取一个虚拟办公室房间;可读取时包含描述。 |
create_office_room | 在通过准确 ID 或无歧义的准确名称确定的 Floor 上,创建一个持久的视频、音频、接待室或个人办公室。视频/音频/接待室需要填写非空名称;办公室使用 Huly 原生的空名称,且 person=null。Huly 类、访问权限、语言、2x1 空闲平面图位置以及录制/转录默认设置均由内部推导;视频房间继承工作区 OfficeSettings,其他类型的两个标志默认均为 false。此操作不会创建参与者,也不会开始录制/转录。 |
update_office_room | 按 roomId 更新一个持久 Room 或 Office。仅接受名称、Markdown 描述、访问权限、startWithTranscription 和 startWithRecording。个人办公室不允许开放访问;Huly 受保护的 Reception 不能重命名。楼层、几何信息、人员分配、语言、ACL、占用状态和活跃提供方状态均保持不变。默认标志只影响后续会话,不会开始或停止录制/转录。 |
list_offices | 列出个人办公室房间及其已分配人员(可读取时)。 |
get_office | 按 roomId 获取一个个人办公室房间;可读取时包含已分配人员和描述。 |
list_active_room_info | 列出临时的活跃房间占用摘要。 |
list_active_room_participants | 列出临时的活跃虚拟办公室参与者及其位置,可按 roomId 筛选。 |
list_meeting_minutes | 按可选的附件目标和创建时间范围列出会议笔记/转录记录(minutes)。 |
get_meeting_minutes | 按 meetingMinutesId 获取一条会议笔记/转录记录(minutes);可读取时包含描述。 |
list_device_preferences | 列出可读取的虚拟办公室媒体设备偏好设置。 |
list_office_defaults | 列出房间级别的语言、默认录制和默认转录设置。 |
工作台
| 工具 | 描述 |
|---|---|
list_workbench_applications | 按精确 URL 别名或不区分大小写的别名子串,列出只读的 Huly 工作台应用模型声明。返回未经翻译的 labelId 值、静态模型标志、经过身份验证的账户在调用者范围内的 hiddenByPreference 状态,以及摘要形式的声明式空间/特殊/分组导航;不会执行组件、资源回调或查询构建器。没有稳定 ID 的旧版空间导航条目会被省略,并显示 Agent 可见的警告。应用存在并不能证明插件、集成提供方、工作进程、API、角色、权限或浏览器中的实际可见性已启用。个人标签页、浏览器当前状态、微件、微件标签页/偏好设置以及所有工作台变更均不受支持,因为它们属于私有或浏览器本地数据,且缺乏可靠的、适用于人工操作的 Agent 工作流。 |
工作流状态
| 工具 | 描述 |
|---|---|
list_workflow_statuses | 列出工作区模型中的通用 Huly 工作流 Status 记录。可按状态属性 ID/精确名称和类别 ID/精确标签进行筛选。返回已解析的属性和类别关系。若要查询某个 Tracker 项目的工单状态,请改用 list_statuses。 |
get_workflow_status | 按 ID 或不区分大小写的精确名称获取一条通用 Huly 工作流 Status。若多个状态属性中存在同名项,请传入 ofAttribute;对于有歧义的名称,工具会拒绝处理并返回匹配的 ID。 |
create_workflow_status | 为按 ID 或精确名称解析出的属性创建通用 Huly 工作流 Status。可选地按 ID 或精确标签解析共享类别;若标签有歧义,请传入类别 ID。如果该属性中已存在规范化名称相同的项,则幂等地返回该项,并将 created 设为 false。Tracker 项目类型的关联仍由 create_issue_status 负责。 |
update_workflow_status | 按 ID 或精确名称更新通用工作流 Status。使用 currentOfAttribute 消除目标歧义。category、color 和 description 可设为 null 以清除对应值。若 StatusCategory 将该状态用作默认项,则拒绝重命名;请先更新该默认项。仅当该状态未被引用且两个属性使用相同的具体 Status 类时,才允许移动属性。类别可在多个属性之间共享。 |
delete_workflow_status | 按 ID 或精确名称永久删除未被引用的通用工作流 Status。如果有任何 StatusCategory 默认项、ProjectType、TaskType 或任务记录引用该状态,则拒绝删除。此工具不会重写 Tracker 工作流数组;请先使用 Tracker 专用工作流工具移除这些引用。 |
list_status_categories | 列出通用 Huly StatusCategory 记录,可按状态属性 ID 或精确名称筛选。返回每个类别解析后的属性、默认状态,以及引用该类别的状态数量。 |
get_status_category | 按 ID 或不区分大小写的精确标签获取一条通用 Huly StatusCategory。若多个状态属性中存在同名项,请传入 ofAttribute;对于有歧义的标签,工具会拒绝处理并返回匹配的 ID。 |
create_status_category | 为按 ID 或精确名称解析出的属性创建通用 Huly StatusCategory。defaultStatus 会在同一属性中解析,以保留类别与默认项之间的关系。如果已存在规范化标签相同的项,则幂等地返回该项,并将 created 设为 false。 |
update_status_category | 按 ID 或精确标签更新通用 StatusCategory。更新后的默认状态必须属于更新后的属性。由于 Huly 类别可以共享,其他属性中的状态仍可继续引用该类别。 |
delete_status_category | 按 ID 或精确标签永久删除未被引用的通用 StatusCategory。如果有任何 Status 引用该类别,则拒绝删除,以避免产生悬空关系。 |
从源代码构建
已发布的软件包包含原生驻留桥接程序;Rust 是构建依赖项。 从源代码构建需要 Node.js、pnpm、Rustup、Python 3 和 Bash。请一次性准备好指定版本的 Rust 工具链、Zig 链接器和交叉编译 SDK:
pnpm setup:native
pnpm build
pnpm test:native
构建工具会保存在特定于平台的用户缓存中,位于检出目录和已发布软件包之外。 桥接程序是一个单一的 Rust I/O 循环;MCP 协议处理、授权和取消操作仍由共享的 Node 后端处理。
故障排除
使用含特殊字符的密码回退方案
如果你的 Huly 密码包含 *、%、! 或 # 等字符,通过 -e 或 --env 等 CLI 环境标志传入密码可能会失败,因为 shell 会在这些字符传递到进程之前对其进行解释。
解决方案:直接编辑 MCP 配置文件,而不是通过 shell 传递密码:
- Codex:
~/.codex/config.toml - Claude Code:
~/.claude.json(用户范围)或.mcp.json(项目范围) - Claude Desktop:安装部分所列位置中的
claude_desktop_config.json - VS Code 和 Cursor:使用安装部分所列的客户端配置位置;避免提交包含真实凭据的工作区文件
- Windsurf:直接编辑 Windsurf MCP 配置文件
- OpenCode:
~/.config/opencode/opencode.json
对于 Claude JSON 配置,上述对 shell 敏感的字符可以直接写入。JSON 保留字符(如 " 和 \)仍需按常规进行 JSON 转义:
{
"mcpServers": {
"huly": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@firfi/huly-mcp@latest"],
"env": {
"MCP_TRANSPORT": "stdio-resident",
"HULY_URL": "https://your-huly-instance.com",
"HULY_EMAIL": "[email protected]",
"HULY_PASSWORD": "p@ss*w0rd!#%",
"HULY_WORKSPACE": "your-workspace"
}
}
}
}
如果部署支持托管 API 令牌,请优先使用 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。