适用于 ChatGPT、Claude、Cursor 和 Codex 的看板 MCP 服务器

作者:Andrei Finogeev,Weft 创始人 ·

Weft 是一块托管看板(Backlog、Todo、Doing、Done,冲刺可选),它的 MCP 服务器位于 https://letsweft.com/api/mcp。把这个地址加到你的 AI 客户端,用 OAuth 登录一次即可,本地不用安装或运行任何东西。从此以后,助手会读取看板,创建和移动卡片;开工前先认领卡片,确保两个智能体不会拿同一张;汇报进度;该你决定时来问你;最后写明做了什么,关闭卡片。每月 50 个任务和 200 次 AI 调用以内免费。

MCP 服务器地址
https://letsweft.com/api/mcp

Streamable HTTP · OAuth 或个人访问令牌 · 32 个工具

添加到你的 AI 客户端

ChatGPT

在 ChatGPT 中打开 Weft ——或者手动配置:

  1. 1在 ChatGPT 侧边栏打开 Plugins——或者走 Settings → Plugins。
  2. 2搜索 “Weft”,打开这个条目。
  3. 3点 “Connect”,看清楚 Weft 能访问什么。
  4. 4在弹出的窗口里用你的 Weft 账号登录。

在任意对话里 @ 一下这个插件:“@Weft 我的看板上有什么?”——也可以从 + 菜单里选 Weft。如果你跳过了设置,ChatGPT 会就地提出帮你连上。

Claude Desktop

  1. 1打开 Claude Desktop → Settings → Connectors。
  2. 2点 “Add custom connector”。
  3. 3把下面的 Weft MCP URL 粘进去并保存。
  4. 4在弹出的浏览器窗口里完成 OAuth。

新开一个对话,问:“我的 Weft 看板上有什么?”。Claude 会通过 Weft 连接器取回你的看板状态。

Claude Code

bash
claude mcp add --transport http weft https://letsweft.com/api/mcp

在任意项目里运行 `claude`,然后问:“我的看板上有什么?”。第一次会弹出浏览器窗口完成 OAuth。

Cursor

添加到 Cursor ——或者手动配置:

~/.cursor/mcp.json
{
  "mcpServers": {
    "weft": {
      "url": "https://letsweft.com/api/mcp"
    }
  }
}

打开 Cursor → Settings → MCP。完成 OAuth 之后,“weft” 服务器应该出现,并亮着绿色指示灯。

Codex CLI

~/.codex/config.toml
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"

运行 `codex mcp login weft` 在浏览器里登录,然后启动 `codex` 问一句:“我的看板上有什么?”。`/mcp` 会列出已连接的服务器和它的工具。

VS Code

安装 Weft 扩展 ——或者手动配置:

.vscode/mcp.json
{
  "servers": {
    "weft": {
      "type": "http",
      "url": "https://letsweft.com/api/mcp"
    }
  }
}

打开聊天,把模式选择器切到 Agent,然后问:“我的看板上有什么?”。第一次会弹出浏览器窗口完成 OAuth。「MCP: List Servers」里 weft 应显示为 Running。

Windsurf

  1. 1打开 Windsurf → Settings → Cascade → MCP servers。
  2. 2点 “Add server”,选 Remote (HTTP)。
  3. 3把下面的 Weft MCP URL 粘进去并保存。
  4. 4在弹出的浏览器窗口里完成 OAuth。

打开 Cascade,问:“我的看板上有什么?”。用到了 Weft 服务器的回答,Cascade 会打上标记。

Gemini CLI

bash
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extension

运行 `gemini`,然后问:“我的 weft 看板上有什么?”。首次使用时会打开浏览器完成 OAuth。`gemini extensions list` 里应该能看到 “weft”。

为智能体而做,而不只是为你

先认领,不撞车

智能体开始处理卡片之前,start_task 会给卡片加上租约。第二个来要活的智能体会拿到另一张卡片;如果某张卡片的智能体没了动静,租约到期后卡片会重新空出来。

进度与回执

智能体干活时,report_progress 让认领保持有效;complete_task 关闭卡片时会写明做了什么、没做什么,以及你能点开核对的链接。

问题会等你回答

request_input 把一个带选项的问题放进你的收件箱(网页和手机上都有),而不是让智能体去猜只有你能决定的事。

你的注意力决定节奏

当等你审阅的已完成工作太多时,智能体就不再开新卡片。这就是看板方法里的在制品限制,只不过用在了你身上。

每个 AI 能做什么,由你决定

给每个接入的助手完整、写入或只读权限,点一下就能断开。删除的卡片会进回收站,而不是直接消失。

手机上的 Weft 看板,Doing 列:AI 助手领走的三个任务,每个都标着 AI
助手会领走下一个任务;每张卡片都显示是谁在做。
一个由 AI 创建并已完成的 Weft 任务,带着助手记录的结果:修了什么,以及 40 次测试运行全部通过
助手完成任务时会留下回执:做了什么,以及是怎么核对的。

32 个工具

每个工具都会声明自己是只读取、会写入,还是会删除东西,这样你的客户端就知道什么时候该先问你。

工具作用类型
search在任务、冲刺、决策和记忆笔记中按关键词搜索。返回最多 50 条按相关性排序的 {id, title, url} 结果,其中带类型前缀的 id 可以直接交给 fetch。读取
fetch获取单条搜索结果的完整内容:标题、文本形式、来源 url 和结构化元数据。参数是 search 返回的带前缀的 id。读取
initialize_board如果你的 Weft 看板上还没有列,就创建默认的 Backlog、Todo、Doing 和 Done 四列。这是 AI 智能体管理任务前只需调用一次的初始化步骤。幂等。写入
get_board_state返回用户 Scrumban 看板的精简简报:列、进行中的冲刺、Doing、逾期任务和最近关闭的任务,体积大约只有完整快照的 1/30。读取
list_columns按顺序列出看板上的所有列,包括每列的 id、名称和位置,让智能体确切知道任务可以移到哪里。读取
list_tasks返回已认证用户的任务,可按列、冲刺、项目(名称或 id)、创建者(人还是 AI)或负责人(执行者)筛选。读取
create_task在用户的看板上创建新任务。没指定列时放进 Backlog。优先级默认为中。在用户要求添加任务时使用。写入
bulk_create_tasks一次原子调用最多创建 1000 个任务:导入 Linear/Jira/Notion/Trello 的导出内容,或任何 3 个以上任务的清单,只占用一次 AI 调用额度。写入
update_task修改已有任务的字段。只改你传入的字段,没传的字段保持不变。有一个例外:智能体清除 requiresReview 会被拒绝,而且整个修改都会一起被拒绝。写入
move_task把任务移到另一列和位置。移到 semantic='doing' 的列会开始计算周期时间;移到 semantic='done' 的列会记录完成时间。写入
start_taskAI 一开始执行任务就调用它:卡片移到 Doing,这样用户和其他所有已接入的客户端都能看到它在进行中(也不会重复领走)。开始计算周期时间;未指派的任务由调用它的智能体认领(已有的负责人绝不会被覆盖)。不需要列 id。写入
report_progress告诉看板你还在干活。如果客户端没了动静,对任务的认领就会过期,这个调用会为它续期。没有心跳,长时间运行的任务会被当作已放弃,转给别人。这是有意为之:智能体半路挂掉时什么都报告不了,所以沉默是看板唯一能收到的信号。写入
request_input问对方一件只有他们能决定的事,并在等待期间保留对任务的认领。如果对方正在客户端前,那里会出现一个表单,答案会在同一次调用里返回:智能体在同一个上下文里、带着同一个认领继续干活。如果对方不在,调用会以挂起状态返回,问题在对方的队列里等着;智能体在下一次 start_task 或 get_my_work 时拿到答案。用于不可逆或真正有歧义的事,不要用来问“我可以继续吗?”:每个问题都会消耗同一份注意力预算,而这份预算也限制着新工作。写入
submit_answer把对方对智能体所提问题的回答带回来,并用同一个 runId 和租约把工作交还回去,这样智能体是在同一次尝试中继续,而不是从头冷启动。它会被标记为转述,绝不会被当成对方亲自操作:智能体转达的答案和人亲手点的按钮是不同类型的证据,看板会把它们区分开。如果这个问题已经在 Weft 应用里被回答过,会返回那个答案而不是报错:重要的是智能体按正确的答案继续。写入
get_my_work问下一步该做什么,而不是读完整块看板再去猜。返回指派给这个客户端的任务、已经在等人处理的事项,以及注意力队列是否还有空位。它还会列出逾期的任务,以及本周内到期或开始的任务,让智能体不用问就能知道截止日期。队列满了的时候,有用的做法是帮忙清队列,而不是开始新的工作,它会在挑任务之前就说明这一点。读取
complete_taskAI 在工作真正完成时调用它:卡片移到 Done 并记录完成时间,可选的结果说明(做了什么、成果在哪里)会以“Outcome (AI, date)”笔记的形式附到卡片上。不需要列 id。标记为需要你处理的工作不会进 Done:它会带着回执进入你的队列;如果智能体说明了下一步要做什么,你接受时批准的正是那一步,然后交还给智能体。如果任务带有验证计划,服务器会当场执行检查:抓取 URL、查找引文、比对哈希。executable/state_delta 计划中所有阻断性检查都通过时,任务由服务器验证后关闭;任一阻断性检查失败,卡片就不会进 Done,并把服务器观察到的情况展示给智能体。写入
record_decision一个工具,两种用途,一张记录表。(1) 转达你在对话中对等你处理的已完成工作给出的结论(批准、退回、放弃、以后再说),把卡片从审阅队列中清掉;这条记录会存为转述,而不是你在应用里亲自操作,这种区别是有意保持可见的。(2) 记录一个值得记住的独立决策(“选了 Neon 而不是 Supabase”、一条经验教训),存为不可修改的 MADR-lite 记录,包括权衡过的选项和需要重新考虑的条件。记录从不编辑:带 supersedesId 的新决策会取代旧决策,而旧决策仍然可读,保留它当天的原话。这些记录就是 get_context 下周提供给每个智能体的内容。写入
get_context工作区当前有效的决策和经验,按 token 预算打包,最新的在前,是智能体在开始任何稍复杂的工作前应该读的内容。它从已记录的决策推导出来,而不是写成文档,所以不会过时:一个决策被取代,替代它的决策一记录,它就会立即退出,而且每一行都带日期。可以限定到某个项目或任务来缩小范围;放不进预算的行会被计数,绝不会悄悄隐藏。读取
get_task_history一个任务经历了什么,而不只是它当前的字段。三种模式:'summary'(默认,≤500 token:卡片、最新回执、各项计数),'decisions'(关于它记录的每个决策,包括结论及其理由;即使后来的接受覆盖了卡片,返工的理由也会保留在这里),'full'(原始日志,上限 100 条事件,并会注明已截断)。之所以有这个工具,是因为审计日志太啰嗦,没法直接读,而任务行永远只保存最新的结论。读取
trash_task把任务移到你 Weft 看板的回收站。30 天内可以用 restore_task 恢复,之后由定时任务永久删除。删除
restore_task在移入回收站后 30 天内把任务恢复回来。任务会完整地回到看板上原来的位置,这样独立创业者永远不会因为误删而丢掉工作。写入
archive_done_tasks清空 Done 列:其中每个任务都离开看板进入归档,仍然能通过 search/fetch 找到,也仍然显示在所属冲刺的历史里,绝不会被删除。完成冲刺时会自动归档该冲刺已完成的任务;这个工具处理剩下的。它一次调用处理整列,不显示数量,也无法通过 MCP 撤回(restore_task 只能从回收站恢复,不能从归档恢复),所以被标记为破坏性操作:客户端调用前应先和用户确认。删除
list_projects列出看板上的项目,也就是任务可以归属的轻量上下文(一家创业公司、一个客户、个人事务)。默认不包含已归档的项目,除非设置了 includeArchived。读取
create_project创建一个项目上下文。名称在每块看板内唯一;颜色默认从轮换调色板里选;url 是项目的网站,它的网站图标会显示在任务卡片上。写入
update_project重命名项目,修改颜色或网站 url,或者归档/取消归档。已归档的项目会从选择器里消失;它们的任务仍保留关联。写入
list_sprints列出用户的所有冲刺(计划中、进行中、已完成、已归档),让独立创业者或智能体不打开应用也能回顾冲刺历史和当前状态。读取
get_active_sprint返回当前进行中的冲刺;没有冲刺在进行时返回 null,让独立创业者或智能体不打开应用也能查看当前目标。读取
create_sprint在你的 Weft 看板上创建一个状态为“planned”的新冲刺,之后可以设定目标和日期。准备开工时再单独调用 start_sprint。写入
start_sprint把计划中的冲刺切换为进行中。无论哪个方案,同一时间只能有一个冲刺在进行。如果已有冲刺在进行,调用会失败并说出它的名字;先完成那个冲刺,再重试。写入
complete_sprint结束进行中的冲刺。它已完成的任务会归档到冲刺历史中:离开看板的 Done 列,但仍可搜索,并显示在冲刺页面上。未完成的任务留在看板上,仍关联着这个冲刺。无法通过 MCP 撤销,意图不明确时客户端应先确认。删除
add_task_to_sprint把已有任务分配到某个冲刺,让它出现在该冲刺的范围和燃尽图里。幂等:调用两次没有额外效果,可以放心重试。写入
remove_task_from_sprint把任务从当前冲刺中移出,但不删除它:任务留在看板上原来的列里,只是不再属于那个冲刺,也不计入它的燃尽图。写入

常见问题

什么是看板 MCP 服务器?

一种 MCP(Model Context Protocol)服务器,它把看板以工具的形式提供给 AI 助手调用:列出各列、读取卡片、创建卡片、把卡片移到 Doing 或 Done。Weft 的服务器是托管的,所以你只需添加一个地址,不用在自己电脑上运行进程。

需要安装或运行什么吗?

不需要。把 https://letsweft.com/api/mcp 添加到你的 AI 客户端,用 OAuth 登录即可。没有 OAuth 的客户端可以用 设置 → 访问令牌 里生成的个人访问令牌。

免费吗?

免费,每月 50 个任务和 200 次 AI 调用以内。Pro 取消这些限制,每席位每月 $7,或每席位每年 $60。

ChatGPT 免费版能用吗?

能。Weft 已上架 ChatGPT 的 Plugin directory,所有 ChatGPT 方案都能用,包括免费版。在 ChatGPT 里直接添加 MCP 地址是 Business、Enterprise 和 Edu 的功能,但用 Weft 不需要它。

两个智能体能共用一块看板吗?

能,这正是这块看板的用途。每个智能体在处理卡片前先用 start_task 认领,所以不会拿到同一张卡片;每张卡片也都会显示它是由 AI 还是由人创建或完成的。

它和本地的看板 MCP 服务器有什么不同?

开源的看板 MCP 服务器在你的电脑上运行,把看板存在本地文件或数据库里,所以只有那台电脑上的智能体能看到。Weft 是一块共享的托管看板:同样的卡片出现在 ChatGPT、Claude、Cursor、Codex、网页应用以及 iOS 和 Android 应用里,供你和你的团队使用。

相关内容