mcpField
T
trello-use

trello-use

github.com/atlassian生产力73421 次安装1 天前更新
代码仓库

关于 trello-use

trello-use 是指导 Agent 使用 Trello MCP 工具的技能,面向需要读取或修改 Trello 数据的任务。它强调 ARI 标识、时区换算、分页和预览字段限制,帮助避免常见调用错误。

主要功能

  1. 01说明各类 Trello 操作的调用规则
  2. 02指导获取并使用 ARI 标识
  3. 03处理本地时间与 UTC 转换
  4. 04说明分页及嵌套预览限制

适用场景

  1. 01按用户时区创建或更新到期卡片
  2. 02准确读取看板中的完整列表或卡片
  3. 03按指定顺序创建列表或检查项

MCP 相关

该技能指导 Agent 使用 Trello MCP 工具,包括读取和写入操作;内容涵盖工具参数、标识格式及数据读取规则。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/atlassian/trello-mcp-server --skill trello-use

安装后在 Claude Code 中输入/trello-use确认已加载。

详细介绍

Trello MCP 服务 — 使用技能

Trello MCP 工具通过操作进行分派(action: "..." 用于选择操作),并严格校验参数:所选操作不会用到的字段会被拒绝,而不是忽略。

1. 先识别当前用户

调用 trelloReadMember,并传入 action: "get_me",以获取已验证用户的个人资料,包括 prefs.timezone。在请求任何卡片、Inbox 和搜索的相对时间(“今天”“本周”)之前,都要先执行此操作;尤其是在用户以本地时间或相对时间(例如“明天下午 1 点”)提供 due 日期/时间时,在调用 trelloWriteCard/trelloWriteInbox 的 create 或 update 之前,先解析 prefs.timezone,转换为 UTC,再将转换后的时间作为 due 传入。(Planner 事件使用不同的时区来源,见 §3。)

2. ARI ID 格式(重要 — 传入任何 ID 前请阅读)

每个类型为 ID 的参数(cardId、boardId、listId、workspaceId、checklistId、itemId、labelId、plannerCalendarId、providerAccountId)都是 ARI,而不是原始 Trello 对象 ID。大多数 ARI 都限定于工作区,并遵循以下格式:

ari:cloud:trello::<entity>/workspace/<workspaceObjectId>/<entityObjectId>

以下最后四行所列的例外不限定于工作区:action、member 和 planner calendar 不含工作区段,第三方帐户则属于不同的 ARI 命名空间。

实体格式
boardari:cloud:trello::board/workspace/<workspaceObjectId>/<boardObjectId>
cardari:cloud:trello::card/workspace/<workspaceObjectId>/<cardObjectId>
listari:cloud:trello::list/workspace/<workspaceObjectId>/<listObjectId>
checklistari:cloud:trello::checklist/workspace/<workspaceObjectId>/<checklistObjectId>
check itemari:cloud:trello::check-item/workspace/<workspaceObjectId>/<itemObjectId>
labelari:cloud:trello::label/workspace/<workspaceObjectId>/<labelObjectId>
workspaceari:cloud:trello::workspace/<workspaceObjectId>
actionari:cloud:trello::action/<actionObjectId>(不含工作区段)
memberari:cloud:trello::user/<memberObjectId>(不含工作区段)
planner calendarari:cloud:trello::planner-calendar/<calendarObjectId>(不含工作区段)
third-party accountari:third-party:<provider>::account/<providerAccountId>(例如 Google)

规则:

  • 始终先通过读取工具获取 ARI,切勿自行构造或猜测。 trelloWriteCard、trelloWriteChecklist、trelloWriteInbox 和 trelloWritePlanner 都会拒绝其 ID 参数中的 Trello URL/短链接(“请勿传入 Trello URL 或短链接;请先使用 trelloReadCard/trelloReadInbox 获取 ARI”)。
  • 两个读取工具的 get 操作也接受普通 Trello URL,以提供便利:trelloReadBoard(get)接受 board URL(https://trello.com/b/<shortLink>/...),trelloReadCard(get)接受 card URL(.../c/<shortLink>/...),此外也接受 ARI。其他所有工具以及所有写入工具都只接受 ARI。

3. 日期始终使用 UTC ISO 8601

due(trelloWriteCard、trelloWriteInbox)以及 start/end(trelloWritePlanner)均使用 UTC ISO 8601 格式("2026-06-01T17:00:00.000Z")。对于本地时间或相对时间,请按以下方式转换:

  • 卡片和 Inbox:trelloReadMember(get_me)→ prefs.timezone
  • Planner 事件:trelloReadPlanner(get)→ primaryCalendar.timezone
  • 未提供时间 → 默认为本地时间 09:00。

trelloSearch 的截止日期限定符(due:)遵循相同的 UTC 边界规则——请先解析 prefs.timezone。

4. 收件箱不是 Trello 看板

收件箱是一个个人快速记录界面,拥有专用工具:trelloReadInbox / trelloWriteInbox。不要尝试通过 trelloReadBoard/trelloWriteBoard 访问它,而应使用收件箱专用工具。trelloWriteInbox 的 create 不接受 pos——新建的收件箱卡片始终置顶。

5. 按顺序创建

创建多个必须保持特定顺序的项目时——列表、卡片、卡片上的检查清单,或检查清单中的检查项——请将 pos 设为不同的连续整数(1, 2, 3, …),并按照预期顺序排列。排序范围按父级划分:卡片按列表排序,列表按看板排序,检查清单按卡片排序,检查项按检查清单排序。不同的值可以固定顺序,不受哪个调用先完成的影响,因此可以并行创建。pos 在支持该字段的地方也接受 "top"/"bottom"。

示例——在新看板上创建 3 个列表,顺序很重要(To Do → In Progress → Done):

[
  {
    "tool": "trelloWriteList",
    "action": "create",
    "boardId": "ari:cloud:trello::board/workspace/<workspaceObjectId>/<boardObjectId>",
    "name": "To Do",
    "pos": 1
  },
  {
    "tool": "trelloWriteList",
    "action": "create",
    "boardId": "ari:cloud:trello::board/workspace/<workspaceObjectId>/<boardObjectId>",
    "name": "In Progress",
    "pos": 2
  },
  {
    "tool": "trelloWriteList",
    "action": "create",
    "boardId": "ari:cloud:trello::board/workspace/<workspaceObjectId>/<boardObjectId>",
    "name": "Done",
    "pos": 3
  }
]

这 3 个列表都可以并行创建——pos 的范围是整个看板,不同的值(1/2/3)可以固定顺序,不受哪个调用先完成的影响。

示例——在一个列表中创建 3 张卡片,顺序很重要(Step 1 → Step 2 → Step 3):

[
  {
    "tool": "trelloWriteCard",
    "action": "create",
    "listId": "ari:cloud:trello::list/workspace/<workspaceObjectId>/<listObjectId>",
    "name": "Step 1",
    "pos": 1
  },
  {
    "tool": "trelloWriteCard",
    "action": "create",
    "listId": "ari:cloud:trello::list/workspace/<workspaceObjectId>/<listObjectId>",
    "name": "Step 2",
    "pos": 2
  },
  {
    "tool": "trelloWriteCard",
    "action": "create",
    "listId": "ari:cloud:trello::list/workspace/<workspaceObjectId>/<listObjectId>",
    "name": "Step 3",
    "pos": 3
  }
]

此处的 pos 作用范围仅限该列表——在另一个列表中创建 pos: 1 的卡片,与此列表的 pos: 1 相互独立。

**反例——顺序不重要:**直接创建项目,不设置 pos(或设置为 "bottom")。用户没有要求特定顺序时,不要擅自编造连续编号——这会引入未经要求的精确顺序。

6. 分页

用于列出集合的读取工具采用游标分页(输入 cursor,输出 pageInfo.endCursor/nextCursor 和 hasNextPage/hasMore)。当 hasNextPage/hasMore 为 true 时,继续分页,不要假设第一页就是全部结果——尤其是在 trelloReadBoard 的 list/list_by_workspace 中按 visibility 筛选时,这一点很重要(筛选由服务端逐页执行,而非在分页前对全部结果进行筛选)。

7. 嵌入字段是预览

嵌套子对象的字段——看板上的 lists、卡片上的 labels/comments、列表上的 cards——在 get 和 list_* 响应中都只是有限预览。<field>HasMore: true 表示内容已截断:listsHasMore、labelsHasMore、checklistsHasMore、commentsHasMore。

要获取数量、所有 X、筛选结果,或回答「这就是全部了吗?」,都需要获取所有子项。使用匹配的操作获取数据,并翻页直到响应显示没有下一页(§6),然后根据这些页面作答。

需要完整获取的子项使用
看板上的列表trelloReadList list_by_board
列表中的卡片trelloReadCard list_by_list
卡片上的检查清单及其条目trelloReadChecklist list_by_card
看板上的标签trelloReadBoard list_labels
卡片上的评论trelloReadCard list_comments — 受限:如果公布的操作中没有此操作,则无法获取评论;请明确说明
卡片自身的标签或成员不存在限定于卡片的操作——预览就是上限,因此应说明数据不完整

示例——「这个看板有多少个列表?」 trelloReadBoard get 返回了 lists,且 listsHasMore: true。从该响应中获取看板 ARI,并传入列表操作;沿游标翻到最后一页,然后统计收集到的列表:

{
  "tool": "trelloReadList",
  "action": "list_by_board",
  "boardId": "ari:cloud:trello::board/workspace/<workspaceObjectId>/<boardObjectId>",
  "cursor": "<endCursor/nextCursor from the previous page>"
}

评论

支持 Markdown