Máy chủ kanban MCP cho ChatGPT, Claude, Cursor và Codex

Tác giả: Andrei Finogeev, nhà sáng lập Weft ·

Weft là một bảng kanban lưu trữ sẵn — Backlog, Todo, Doing, Done, với sprint tùy chọn — và máy chủ MCP của nó nằm ở https://letsweft.com/api/mcp. Thêm URL đó vào client AI của bạn và đăng nhập một lần bằng OAuth; không cần cài đặt hay chạy gì trên máy. Từ đó trở đi, trợ lý đọc bảng, tạo và di chuyển thẻ, nhận một thẻ trước khi làm để hai agent không bao giờ lấy cùng một thẻ, báo tiến độ, hỏi bạn khi quyết định là của bạn, rồi đóng thẻ kèm những gì nó đã làm. Miễn phí cho 50 công việc và 200 lệnh gọi AI mỗi tháng.

URL máy chủ MCP
https://letsweft.com/api/mcp

Streamable HTTP · OAuth, hoặc token truy cập cá nhân · 32 công cụ

Thêm vào client AI của bạn

ChatGPT

Mở Weft trong ChatGPT — hoặc cấu hình thủ công:

  1. 1Mở Plugins trong thanh bên ChatGPT — hoặc Settings → Plugins.
  2. 2Tìm “Weft” và mở trang giới thiệu.
  3. 3Bấm “Connect” và xem lại những gì Weft được phép truy cập.
  4. 4Đăng nhập bằng tài khoản Weft của bạn trong cửa sổ bật lên.

Gắn @ cho plugin trong bất kỳ cuộc chat nào: “@Weft trên bảng của tôi có gì?” — hoặc chọn Weft từ menu +. Nếu bạn bỏ qua bước thiết lập, ChatGPT sẽ mời bạn kết nối ngay tại chỗ.

Claude Desktop

  1. 1Mở Claude Desktop → Settings → Connectors.
  2. 2Bấm “Add custom connector”.
  3. 3Dán URL MCP của Weft bên dưới rồi lưu.
  4. 4Hoàn tất OAuth trong cửa sổ trình duyệt vừa mở.

Mở một cuộc trò chuyện mới và hỏi: “trên bảng Weft của tôi có gì?”. Claude lấy trạng thái bảng của bạn qua connector Weft.

Claude Code

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

Chạy `claude` trong một dự án bất kỳ, rồi hỏi: “trên bảng của tôi có gì?”. Lần đầu tiên, một cửa sổ trình duyệt sẽ mở ra để hoàn tất OAuth.

Cursor

Thêm vào Cursor — hoặc cấu hình thủ công:

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

Mở Cursor → Settings → MCP. Sau khi bạn hoàn tất OAuth, server “weft” sẽ xuất hiện ở đó với đèn báo xanh.

Codex CLI

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

Chạy `codex mcp login weft` để đăng nhập trong trình duyệt, rồi mở `codex` và hỏi: “trên bảng của tôi có gì?”. `/mcp` sẽ liệt kê máy chủ đã kết nối và các công cụ của nó.

VS Code

Cài tiện ích Weft — hoặc cấu hình thủ công:

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

Mở chat, chuyển bộ chọn chế độ sang Agent rồi hỏi: «bảng của tôi đang có gì?». Lần đầu sẽ mở cửa sổ trình duyệt để OAuth. «MCP: List Servers» phải hiện weft ở trạng thái Running.

Windsurf

  1. 1Mở Windsurf → Settings → Cascade → MCP servers.
  2. 2Bấm “Add server” và chọn Remote (HTTP).
  3. 3Dán URL MCP của Weft bên dưới rồi lưu.
  4. 4Hoàn tất OAuth trong cửa sổ trình duyệt vừa mở.

Mở Cascade và hỏi: “trên bảng của tôi có gì?”. Cascade sẽ gắn nhãn cho những câu trả lời đã dùng server Weft.

Gemini CLI

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

Chạy `gemini` và hỏi: “trên bảng weft của tôi có gì?”. Lần dùng đầu tiên, trình duyệt sẽ mở ra để làm OAuth. `gemini extensions list` sẽ hiện “weft”.

Xây cho agent, không chỉ cho bạn

Nhận việc, không đụng độ

start_task đặt một lease lên thẻ trước khi agent làm nó. Agent thứ hai hỏi việc sẽ nhận một thẻ khác, và thẻ có agent đã im lặng sẽ được đưa ra lại khi lease hết hạn.

Tiến độ và biên nhận

report_progress giữ lượt nhận việc còn hiệu lực trong lúc agent làm; complete_task đóng thẻ kèm những gì đã làm, những gì chưa làm, và các liên kết bạn có thể kiểm tra.

Câu hỏi chờ bạn

request_input đặt một câu hỏi kèm các lựa chọn vào Hộp thư đến của bạn — trên web và trên điện thoại — thay vì để agent đoán điều mà chỉ bạn mới quyết được.

Sự chú ý của bạn quyết định nhịp độ

Khi có quá nhiều việc đã xong đang chờ bạn xem xét, agent ngừng bắt đầu thẻ mới. Đó là giới hạn công việc đang làm của kanban, áp dụng cho bạn.

Bạn quyết định mỗi AI được làm gì

Cấp cho mỗi trợ lý đã kết nối quyền đầy đủ, ghi hoặc chỉ đọc, và ngắt kết nối nó bằng một cú nhấp. Thẻ bị xóa sẽ vào Thùng rác, không biến mất ngay lập tức.

Bảng Weft trên điện thoại, cột Doing: ba công việc một trợ lý AI đã nhận, mỗi công việc gắn nhãn AI
Trợ lý nhận công việc tiếp theo; mỗi thẻ cho thấy ai đang làm nó.
Một công việc Weft đã xong do AI tạo, kèm kết quả trợ lý ghi lại: nó đã sửa gì và 40 lượt chạy kiểm thử đều đạt
Khi trợ lý làm xong, nó để lại một biên nhận: nó đã làm gì và kiểm tra ra sao.

32 công cụ

Mỗi công cụ khai báo nó chỉ đọc, ghi, hay xóa thứ gì đó, để client của bạn biết khi nào cần hỏi bạn trước.

Công cụNó làm gìLoại
searchTìm theo từ khóa trên công việc, sprint, quyết định và ghi chú bộ nhớ. Trả về tối đa 50 kết quả {id, title, url} đã xếp hạng, với id có tiền tố loại để đưa vào fetch.Đọc
fetchLấy toàn bộ nội dung của một kết quả tìm kiếm — tiêu đề, phần văn bản, url nguồn và metadata có cấu trúc. Nhận id có tiền tố do search trả về.Đọc
initialize_boardTạo các cột mặc định Backlog, Todo, Doing và Done trên bảng Weft của bạn nếu chưa có — bước thiết lập một lệnh gọi trước khi AI agent quản lý công việc. Idempotent.Ghi
get_board_stateTrả về bản tóm tắt gọn về bảng Scrumban của người dùng: các cột, sprint đang chạy, Doing, công việc quá hạn và các việc vừa đóng, nhỏ hơn khoảng 30 lần so với ảnh chụp đầy đủ.Đọc
list_columnsLiệt kê mọi cột trên bảng theo thứ tự — id, tên và vị trí của từng cột, để agent biết chính xác công việc có thể chuyển tới đâu.Đọc
list_tasksTrả về công việc của người dùng đã xác thực, có thể lọc theo cột, sprint, dự án (tên hoặc id), người tạo (người hay AI) hoặc người được giao (người thực hiện).Đọc
create_taskTạo một công việc mới trên bảng của người dùng. Vào Backlog nếu không đặt cột. Mức ưu tiên mặc định là trung bình. Dùng khi người dùng yêu cầu thêm công việc.Ghi
bulk_create_tasksTạo tối đa 1000 công việc trong một lệnh gọi nguyên tử — nhập bản xuất từ Linear/Jira/Notion/Trello hoặc bất kỳ danh sách từ 3 công việc trở lên, chỉ tốn một lượt trong hạn mức lệnh gọi AI.Ghi
update_taskSửa các trường của một công việc có sẵn. Chỉ các trường bạn truyền vào mới thay đổi; các trường bỏ qua được giữ nguyên — trừ một ngoại lệ: agent không được xóa requiresReview, và việc từ chối đó kéo theo toàn bộ bản sửa.Ghi
move_taskChuyển công việc sang cột và vị trí khác. Chuyển vào cột có semantic='doing' bắt đầu đo cycle time; chuyển vào semantic='done' ghi lại thời điểm hoàn thành.Ghi
start_taskAI gọi công cụ này ngay khi bắt đầu thực hiện một công việc — thẻ chuyển sang Doing để người dùng và mọi client khác đã kết nối thấy nó đang được làm (và không nhận nó hai lần). Bắt đầu đo cycle time; công việc chưa giao sẽ được agent gọi nhận (người được giao sẵn không bao giờ bị thay). Không cần id cột.Ghi
report_progressBáo rằng bạn vẫn đang làm. Lượt nhận một công việc sẽ hết hạn nếu client im lặng, và công cụ này gia hạn nó. Không có nhịp tim, một công việc chạy lâu bị coi là bỏ dở và được đưa cho người khác — có chủ ý, vì một agent chết giữa chừng không báo được gì, nên im lặng là tín hiệu duy nhất bảng có được.Ghi
request_inputHỏi người dùng điều mà chỉ họ mới quyết được, và chờ mà không mất lượt nhận công việc. Nếu họ đang ở client của mình, một biểu mẫu hiện ra ở đó và câu trả lời quay về ngay trong cùng lệnh gọi — agent tiếp tục trong cùng ngữ cảnh, với cùng lượt nhận việc. Nếu họ vắng mặt, lệnh gọi trả về trạng thái tạm hoãn và câu hỏi chờ trong hàng chờ của họ; câu trả lời tới agent ở lần start_task hoặc get_my_work tiếp theo. Dành cho việc không thể đảo ngược và việc thực sự mơ hồ, không phải cho "tôi tiếp tục được không?" — mỗi câu hỏi tiêu cùng một ngân sách chú ý vốn giới hạn việc mới.Ghi
submit_answerMang về điều người dùng đã nói với một câu hỏi agent đặt ra, và trả công việc lại với cùng runId và lease, để nó tiếp tục trong cùng lượt thử thay vì bắt đầu lại từ đầu. Được đánh dấu là chuyển lời, không bao giờ là chính người dùng hành động — câu trả lời do agent mang về và cú nhấp do người thực hiện là hai loại bằng chứng khác nhau, và bảng giữ chúng tách biệt. Nếu câu hỏi đã được trả lời trong ứng dụng Weft, câu trả lời đó được trả về thay vì báo lỗi: điều quan trọng là agent tiếp tục với câu trả lời đúng.Ghi
get_my_workHỏi nên làm gì tiếp thay vì đọc cả bảng rồi đoán. Trả về các công việc giao cho client này, những gì đang chờ người dùng, và hàng chờ chú ý còn chỗ hay không. Nó cũng nêu những gì quá hạn và những gì đến hạn hoặc bắt đầu trong tuần, để agent biết về hạn chót mà không cần hỏi. Khi hàng chờ đầy, việc hữu ích là giúp dọn nó, không phải bắt đầu việc mới — và công cụ này nói điều đó trước khi một công việc được chọn.Đọc
complete_taskAI gọi công cụ này khi công việc thực sự xong — thẻ chuyển sang Done kèm thời điểm hoàn thành, và kết quả tùy chọn (đã làm gì, kết quả nằm ở đâu) được thêm vào thẻ dưới dạng ghi chú "Outcome (AI, date)". Không cần id cột. Công việc được đánh dấu là cần bạn KHÔNG chuyển sang Done: nó vào hàng chờ của bạn kèm biên nhận, và nếu agent đã nói bước tiếp theo nó sẽ làm, việc chấp nhận sẽ phê duyệt đúng bước đó và trả nó lại cho agent. Nếu công việc có kế hoạch kiểm chứng, máy chủ chạy các bước kiểm tra ngay tại đây — tải URL, tìm đoạn trích dẫn, so sánh hash: một kế hoạch executable/state_delta có mọi bước kiểm tra chặn đều đạt sẽ được máy chủ đóng là đã xác minh; một bước kiểm tra chặn thất bại giữ thẻ ngoài Done và cho agent thấy máy chủ đã quan sát được gì.Ghi
record_decisionMột công cụ, hai cách dùng, một bảng ghi chép. (1) Chuyển lời phán quyết bạn đưa ra trong cuộc trò chuyện về việc đã xong đang chờ bạn — chấp nhận, trả lại, bỏ, để sau — gỡ thẻ khỏi hàng chờ xem xét; mục này được lưu là chuyển lời chứ không phải bạn hành động trong ứng dụng, và sự khác biệt đó được cố ý giữ cho thấy rõ. (2) Ghi lại một quyết định độc lập đáng nhớ — 'chọn Neon thay vì Supabase', một bài học rút ra — dưới dạng bản ghi MADR-lite bất biến, kèm các phương án đã cân nhắc và điều kiện để xem lại. Bản ghi không bao giờ bị sửa: một quyết định mới có supersedesId thay thế quyết định cũ, và quyết định cũ vẫn đọc được đúng như nội dung ngày nó được đưa ra. Những bản ghi này là thứ get_context trả lại cho mọi agent vào tuần sau.Ghi
get_contextCác quyết định và bài học đang có hiệu lực của workspace, gói gọn theo ngân sách token, mới nhất trước — thứ agent nên đọc trước khi bắt đầu bất cứ việc gì không đơn giản. Được suy ra từ các quyết định đã ghi chứ không phải viết thành tài liệu, nên nó không thể lỗi thời: một quyết định bị thay thế sẽ rơi ra ngay khi quyết định thay thế được ghi, và mỗi dòng đều có ngày. Giới hạn theo một dự án hoặc một công việc để thu hẹp; các dòng không vừa ngân sách được đếm lại, không bao giờ bị ẩn đi âm thầm.Đọc
get_task_historyĐiều gì đã xảy ra với một công việc, không chỉ các trường hiện tại của nó. Ba chế độ: 'summary' (mặc định, ≤500 token — thẻ, biên nhận mới nhất, các con số), 'decisions' (mọi quyết định đã ghi về nó, kể cả phán quyết và lý do — lý do làm lại vẫn còn ở đây sau khi một lần chấp nhận sau đó ghi đè lên thẻ), 'full' (nhật ký thô, tối đa 100 sự kiện và có nói rõ điều đó). Có công cụ này vì nhật ký kiểm toán quá dài dòng để đọc trực tiếp, còn hàng công việc chỉ giữ phán quyết mới nhất.Đọc
trash_taskChuyển một công việc vào thùng rác trên bảng Weft của bạn. Khôi phục được trong 30 ngày qua restore_task, sau đó một tác vụ theo lịch xóa nó vĩnh viễn.Xóa
restore_taskKhôi phục một công việc từ thùng rác trong vòng 30 ngày kể từ khi xóa. Công việc quay lại bảng ở đúng chỗ cũ, nguyên vẹn — để một nhà sáng lập một mình không bao giờ mất việc vì lỡ tay xóa.Ghi
archive_done_tasksDọn cột Done: mọi công việc trong đó rời bảng vào kho lưu trữ — vẫn tìm thấy bằng search/fetch và vẫn hiện trong lịch sử sprint của nó, không bao giờ bị xóa. Hoàn thành một sprint sẽ tự động lưu trữ các công việc đã xong của sprint đó; công cụ này xử lý phần còn lại. Nó lấy cả cột trong một lệnh gọi, không có số lượng và không có đường quay lại từ phía MCP — restore_task khôi phục từ thùng rác, không phải từ kho lưu trữ — vì vậy nó được đánh dấu là phá hủy: client nên xác nhận với người dùng trước khi gọi.Xóa
list_projectsLiệt kê các dự án của bảng — những ngữ cảnh nhẹ (một startup, một khách hàng, việc cá nhân) mà một công việc có thể thuộc về. Không gồm dự án đã lưu trữ trừ khi đặt includeArchived.Đọc
create_projectTạo một ngữ cảnh dự án. Tên là duy nhất trong mỗi bảng; màu mặc định lấy lần lượt từ một bảng màu; url là trang web của dự án, favicon của nó hiện trên thẻ công việc.Ghi
update_projectĐổi tên dự án, đổi màu hoặc url trang web, hoặc lưu trữ/bỏ lưu trữ nó. Dự án đã lưu trữ biến mất khỏi các bộ chọn; công việc của chúng vẫn giữ liên kết.Ghi
list_sprintsLiệt kê mọi sprint (đã lên kế hoạch, đang chạy, đã hoàn thành, đã lưu trữ) của người dùng, để nhà sáng lập một mình hoặc agent xem lại lịch sử sprint và trạng thái hiện tại mà không cần mở ứng dụng.Đọc
get_active_sprintTrả về sprint đang chạy, hoặc null nếu không có sprint nào — để nhà sáng lập một mình hoặc agent kiểm tra mục tiêu hiện tại mà không cần mở ứng dụng.Đọc
create_sprintTạo một sprint mới ở trạng thái "planned" cho bảng Weft của bạn, sẵn sàng để lên lịch với mục tiêu và ngày tháng. Dùng start_sprint riêng khi sẵn sàng bắt đầu làm.Ghi
start_sprintChuyển một sprint đã lên kế hoạch sang trạng thái đang chạy. Mỗi lúc chỉ một sprint được chạy, trên mọi gói — nếu một sprint khác đang chạy, lệnh gọi thất bại và nêu tên nó; hãy hoàn thành sprint đó trước, rồi thử lại.Ghi
complete_sprintKết thúc sprint đang chạy. Các công việc đã xong của nó được lưu trữ vào lịch sử sprint — rời khỏi cột Done của bảng, vẫn tìm được và hiện trên trang của sprint. Công việc chưa xong ở lại trên bảng, vẫn gắn với sprint. Không thể hoàn tác qua MCP — client nên xác nhận khi ý định chưa rõ ràng.Xóa
add_task_to_sprintGán một công việc có sẵn vào một sprint để nó hiện trong phạm vi và biểu đồ burndown của sprint đó. Idempotent — gọi hai lần không có thêm tác dụng gì, nên thử lại an toàn.Ghi
remove_task_from_sprintTách một công việc khỏi sprint hiện tại mà không xóa nó — công việc vẫn ở trên bảng trong cột của nó, chỉ không còn thuộc phạm vi sprint đó hay biểu đồ burndown của nó.Ghi

Câu hỏi

Máy chủ kanban MCP là gì?

Một máy chủ MCP (Model Context Protocol) đưa một bảng kanban ra dưới dạng các công cụ mà trợ lý AI gọi được: liệt kê cột, đọc thẻ, tạo thẻ, chuyển nó sang Doing hoặc Done. Máy chủ của Weft được lưu trữ sẵn, nên bạn chỉ thêm một URL thay vì chạy một tiến trình trên máy.

Tôi có cần cài đặt hay chạy gì không?

Không. Thêm https://letsweft.com/api/mcp vào client AI của bạn và đăng nhập bằng OAuth. Client không có OAuth dùng token truy cập cá nhân lấy từ Cài đặt → Token truy cập.

Có miễn phí không?

Có, cho 50 công việc và 200 lệnh gọi AI mỗi tháng. Pro bỏ các giới hạn với giá $7 mỗi chỗ một tháng, hoặc $60 mỗi chỗ một năm.

Có dùng được với ChatGPT Free không?

Có. Weft có trong Plugin directory của ChatGPT và chạy trên mọi gói ChatGPT, kể cả Free. Thêm URL MCP trực tiếp trong ChatGPT là tính năng của Business, Enterprise và Edu, nhưng bạn không cần nó để dùng Weft.

Hai agent có dùng chung một bảng được không?

Được — bảng sinh ra để làm việc đó. Mỗi agent nhận một thẻ bằng start_task trước khi làm, nên chúng không lấy cùng một thẻ, và mỗi thẻ cho thấy AI hay con người đã tạo hoặc hoàn thành nó.

Cái này khác gì máy chủ kanban MCP chạy cục bộ?

Các máy chủ kanban MCP mã nguồn mở chạy trên máy của bạn và lưu bảng trong một tệp hoặc cơ sở dữ liệu cục bộ, nên chỉ agent trên máy đó thấy được. Weft là bảng dùng chung, lưu trữ sẵn: cùng các thẻ đó trong ChatGPT, Claude, Cursor, Codex, ứng dụng web và ứng dụng iOS, Android, cho bạn và nhóm của bạn.

Liên quan