Server MCP kanban untuk ChatGPT, Claude, Cursor, dan Codex
Oleh Andrei Finogeev, pendiri Weft ·
Weft adalah papan kanban yang di-hosting — Backlog, Todo, Doing, Done, dengan sprint opsional — dan server MCP-nya ada di https://letsweft.com/api/mcp. Tambahkan URL itu ke klien AI Anda dan masuk sekali dengan OAuth; tidak ada yang perlu dipasang atau dijalankan secara lokal. Sejak itu asisten membaca papan, membuat dan memindahkan kartu, mengklaim kartu sebelum mengerjakannya agar dua agen tidak pernah mengambil kartu yang sama, melaporkan progres, bertanya kepada Anda saat keputusan ada di tangan Anda, dan menutup kartu beserta apa yang dikerjakannya. Gratis untuk 50 tugas dan 200 panggilan AI per bulan.
https://letsweft.com/api/mcpStreamable HTTP · OAuth, atau token akses pribadi · 32 alat
Tambahkan ke klien AI Anda
ChatGPT
Buka Weft di ChatGPT — atau konfigurasikan secara manual:
- 1Buka Plugins di bilah sisi ChatGPT — atau Settings → Plugins.
- 2Cari “Weft” lalu buka daftarnya.
- 3Klik “Connect” dan periksa apa saja yang bisa diakses Weft.
- 4Masuk dengan akun Weft Anda di popup yang terbuka.
Sebut plugin-nya dengan @ di obrolan mana pun: “@Weft apa yang ada di papan saya?” — atau pilih Weft dari menu +. Kalau Anda melewatkan penyiapannya, ChatGPT menawarkan menyambungkannya langsung di situ.
Claude Desktop
- 1Buka Claude Desktop → Settings → Connectors.
- 2Klik “Add custom connector”.
- 3Tempelkan URL MCP Weft di bawah ini lalu simpan.
- 4Selesaikan OAuth di jendela browser yang terbuka.
Mulai obrolan baru dan tanyakan: “apa yang ada di papan Weft saya?”. Claude mengambil keadaan papan Anda lewat konektor Weft.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcpJalankan `claude` di proyek mana pun, lalu tanyakan: “apa yang ada di papan saya?”. Jendela browser terbuka untuk menyelesaikan OAuth pada kali pertama.
Cursor
Tambahkan ke Cursor — atau konfigurasikan secara manual:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Buka Cursor → Settings → MCP. Server “weft” akan muncul dengan indikator hijau setelah Anda menyelesaikan OAuth.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"Jalankan `codex mcp login weft` untuk masuk lewat browser, lalu buka `codex` dan tanyakan: “apa yang ada di papan saya?”. `/mcp` menampilkan server yang tersambung beserta alatnya.
VS Code
Pasang ekstensi Weft — atau konfigurasikan secara manual:
{
"servers": {
"weft": {
"type": "http",
"url": "https://letsweft.com/api/mcp"
}
}
}Buka obrolan, ubah pemilih mode ke Agent, lalu tanya: «ada apa di papan saya?». Pertama kali, jendela peramban terbuka untuk OAuth. «MCP: List Servers» semestinya menampilkan weft sebagai Running.
Windsurf
- 1Buka Windsurf → Settings → Cascade → MCP servers.
- 2Klik “Add server” lalu pilih Remote (HTTP).
- 3Tempelkan URL MCP Weft di bawah ini lalu simpan.
- 4Selesaikan OAuth di jendela browser yang terbuka.
Buka Cascade dan tanyakan: “apa yang ada di papan saya?”. Cascade menandai jawaban yang memakai server Weft.
Gemini CLI
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extensionJalankan `gemini` dan tanyakan: “apa yang ada di papan weft saya?”. Browser terbuka untuk OAuth pada pemakaian pertama. `gemini extensions list` seharusnya menampilkan “weft”.
Dibuat untuk agen, bukan hanya untuk Anda
Klaim, bukan tabrakan
start_task memasang sewa (lease) pada kartu sebelum agen mengerjakannya. Agen kedua yang meminta pekerjaan mendapat kartu lain, dan kartu yang agennya diam ditawarkan lagi saat sewanya habis.
Progres dan tanda terima
report_progress menjaga klaim tetap hidup selagi agen bekerja; complete_task menutup kartu beserta apa yang dikerjakan, apa yang tidak, dan tautan yang bisa Anda periksa.
Pertanyaan menunggu Anda
request_input menaruh pertanyaan beserta pilihannya di Kotak masuk Anda — di web dan di ponsel — alih-alih membiarkan agen menebak sesuatu yang hanya bisa Anda putuskan.
Perhatian Anda yang menentukan tempo
Saat terlalu banyak pekerjaan selesai yang menunggu tinjauan Anda, agen berhenti memulai kartu baru. Itulah batas work-in-progress ala kanban, diterapkan pada Anda.
Anda menentukan apa yang boleh dilakukan setiap AI
Beri setiap asisten yang terhubung akses penuh, tulis, atau hanya-baca, dan putuskan dengan satu klik. Kartu yang dihapus masuk ke Sampah, tidak langsung lenyap.


32 alat
Setiap alat menyatakan apakah ia hanya membaca, menulis, atau menghapus sesuatu, sehingga klien Anda tahu kapan harus bertanya kepada Anda lebih dulu.
| Alat | Fungsinya | Jenis |
|---|---|---|
| search | Pencarian kata kunci di seluruh tugas, sprint, keputusan, dan catatan memori. Mengembalikan hingga 50 hasil {id, title, url} yang diurutkan, dengan id berawalan jenis yang bisa diteruskan ke fetch. | Baca |
| fetch | Mengambil isi lengkap satu hasil pencarian — judul, representasi teks, url sumber, dan metadata terstruktur. Menerima id berawalan yang dikembalikan oleh search. | Baca |
| initialize_board | Membuat kolom default Backlog, Todo, Doing, dan Done di papan Weft Anda jika belum ada — penyiapan sekali panggil sebelum agen AI mengelola tugas. Idempoten. | Tulis |
| get_board_state | Mengembalikan ringkasan padat tentang papan Scrumban pengguna: kolom, sprint aktif, Doing, tugas yang lewat tenggat, dan yang baru ditutup, sekitar 30x lebih kecil dari snapshot lengkap. | Baca |
| list_columns | Menampilkan semua kolom di papan, berurutan — id, nama, dan posisi masing-masing, sehingga agen tahu persis ke mana tugas bisa dipindahkan. | Baca |
| list_tasks | Mengembalikan tugas milik pengguna yang terautentikasi, bisa difilter menurut kolom, sprint, proyek (nama atau id), pembuat (manusia atau AI), atau penerima tugas (pelaksananya). | Baca |
| create_task | Membuat tugas baru di papan pengguna. Masuk ke Backlog jika kolom tidak ditentukan. Prioritas default-nya medium. Dipakai saat pengguna meminta menambahkan tugas. | Tulis |
| bulk_create_tasks | Membuat hingga 1000 tugas dalam satu panggilan atomik — impor ekspor Linear/Jira/Notion/Trello atau daftar berisi 3+ tugas, dengan hanya memakai satu kuota panggilan AI. | Tulis |
| update_task | Mengubah sebagian field tugas yang sudah ada. Hanya field yang Anda kirim yang diubah; field yang tidak disertakan tetap — dengan satu pengecualian: menghapus requiresReview ditolak untuk agen, dan penolakan itu membatalkan seluruh perubahan. | Tulis |
| move_task | Memindahkan tugas ke kolom dan posisi lain. Memindahkan ke kolom dengan semantic='doing' memulai pelacakan cycle time; memindahkan ke semantic='done' mencatat waktu selesai. | Tulis |
| start_task | AI memanggil ini begitu mulai mengerjakan tugas — kartu pindah ke Doing sehingga pengguna dan setiap klien lain yang terhubung melihatnya sedang dikerjakan (dan tidak mengambilnya dua kali). Memulai pelacakan cycle time; tugas yang belum punya penerima diklaim oleh agen pemanggil (penerima yang sudah ada tidak pernah ditimpa). Tidak perlu id kolom. | Tulis |
| report_progress | Memberi tahu bahwa Anda masih bekerja. Klaim atas tugas kedaluwarsa jika klien diam, dan panggilan ini memperpanjangnya. Tanpa detak jantung, tugas yang berjalan lama dianggap ditinggalkan dan ditawarkan ke pihak lain — sengaja begitu, karena agen yang mati di tengah jalan tidak melaporkan apa pun, jadi diam adalah satu-satunya sinyal yang dimiliki papan. | Tulis |
| request_input | Menanyakan kepada orangnya sesuatu yang hanya bisa ia putuskan, dan menunggu tanpa kehilangan klaim atas tugas. Jika ia sedang berada di kliennya, sebuah formulir muncul di sana dan jawabannya kembali di dalam panggilan yang sama — agen melanjutkan dalam konteks yang sama, dengan klaim yang sama. Jika ia sedang tidak ada, panggilan kembali dengan status parked dan pertanyaannya menunggu di antreannya; jawabannya sampai ke agen pada start_task atau get_my_work berikutnya. Untuk hal yang tak bisa dibatalkan dan yang benar-benar ambigu, bukan untuk "boleh saya lanjut?" — setiap pertanyaan memakai anggaran perhatian yang sama dengan yang membatasi pekerjaan baru. | Tulis |
| submit_answer | Membawa kembali apa yang dikatakan orangnya atas pertanyaan yang diajukan agen, dan mengembalikan pekerjaan dengan runId dan lease yang sama, sehingga pekerjaan berlanjut dalam percobaan yang sama alih-alih mulai dari nol. Ditandai sebagai diteruskan, tidak pernah sebagai tindakan orangnya sendiri — jawaban yang dibawa agen dan klik yang dilakukan manusia adalah jenis bukti yang berbeda, dan papan memisahkannya. Jika pertanyaan sudah dijawab di aplikasi Weft, jawaban itulah yang dikembalikan alih-alih error: yang penting agen melanjutkan dengan jawaban yang benar. | Tulis |
| get_my_work | Menanyakan apa yang harus dikerjakan berikutnya alih-alih membaca seluruh papan dan menebak. Mengembalikan tugas yang ditugaskan ke klien ini, apa yang sudah menunggu manusianya, dan apakah antrean perhatian masih punya ruang. Alat ini juga menyebutkan apa yang lewat tenggat dan apa yang jatuh tempo atau dimulai dalam minggu ini, sehingga agen tahu soal tenggat tanpa harus bertanya. Saat antrean penuh, langkah yang berguna adalah membantu mengosongkannya, bukan memulai hal baru — dan alat ini mengatakannya sebelum tugas dipilih. | Baca |
| complete_task | AI memanggil ini saat pekerjaannya benar-benar selesai — kartu pindah ke Done dengan waktu selesai tercatat, dan hasil opsional (apa yang dikerjakan, di mana hasilnya berada) ditambahkan ke kartu sebagai catatan "Outcome (AI, date)". Tidak perlu id kolom. Pekerjaan yang ditandai perlu Anda TIDAK pindah ke Done: pekerjaan itu masuk ke antrean Anda dengan tanda terima terlampir, dan jika agen menyebutkan apa yang akan dilakukannya berikutnya, menerimanya berarti menyetujui persis langkah itu dan menyerahkannya kembali ke agen. Jika tugas membawa rencana verifikasi, server menjalankan pengecekannya saat itu juga — mengambil URL, mencari kutipan, membandingkan hash: rencana executable/state_delta yang semua pengecekan pemblokirnya lulus akan ditutup sebagai terverifikasi oleh server; pengecekan pemblokir yang gagal menahan kartu di luar Done dan menunjukkan kepada agen apa yang diamati server. | Tulis |
| record_decision | Satu alat, dua kegunaan, satu tabel catatan. (1) Meneruskan putusan yang Anda berikan dalam percakapan tentang pekerjaan selesai yang menunggu Anda — disetujui, kembalikan, buang, nanti — sehingga kartu keluar dari antrean tinjauan; entri disimpan sebagai diteruskan, bukan sebagai tindakan Anda di aplikasi, dan perbedaan itu sengaja tetap terlihat. (2) Mencatat keputusan mandiri yang layak diingat — 'memilih Neon daripada Supabase', sebuah pelajaran — sebagai catatan MADR-lite yang tidak bisa diubah, beserta pilihan yang ditimbang dan kondisi untuk meninjaunya kembali. Catatan tidak pernah diedit: keputusan baru dengan supersedesId menggantikan yang lama, dan yang lama tetap bisa dibaca sebagaimana bunyinya pada hari dibuat. Catatan inilah yang disajikan kembali oleh get_context ke setiap agen minggu depan. | Tulis |
| get_context | Keputusan dan pelajaran yang berlaku di workspace, dikemas sesuai anggaran token, terbaru lebih dulu — yang perlu dibaca agen sebelum memulai apa pun yang tidak sepele. Diturunkan dari keputusan yang tercatat, bukan ditulis sebagai dokumen, jadi tidak bisa basi: keputusan yang digantikan langsung hilang begitu penggantinya dicatat, dan setiap baris membawa tanggalnya. Batasi ke proyek atau tugas untuk mempersempitnya; baris yang tidak muat dalam anggaran dihitung, tidak pernah disembunyikan diam-diam. | Baca |
| get_task_history | Apa yang terjadi pada sebuah tugas, bukan hanya field-nya saat ini. Tiga mode: 'summary' (default, ≤500 token — kartunya, tanda terima terbarunya, jumlah-jumlah), 'decisions' (setiap keputusan yang dicatat tentangnya, termasuk putusan dan alasannya — alasan pengerjaan ulang tetap ada di sini setelah penerimaan berikutnya menimpa kartu), 'full' (jurnal mentah, dibatasi 100 peristiwa dan menyebutkannya). Ada karena log audit terlalu ramai untuk dibaca langsung, dan baris tugas hanya menyimpan putusan terakhir. | Baca |
| trash_task | Memindahkan tugas ke sampah di papan Weft Anda. Bisa dipulihkan selama 30 hari lewat restore_task, setelah itu tugas terjadwal menghapusnya secara permanen. | Menghapus |
| restore_task | Memulihkan tugas dari sampah dalam 30 hari sejak dibuang. Tugas kembali ke papan di tempatnya semula, utuh sepenuhnya — sehingga pendiri tunggal tidak pernah kehilangan pekerjaan karena salah hapus. | Tulis |
| archive_done_tasks | Mengosongkan kolom Done: setiap tugas di dalamnya keluar dari papan ke arsip — tetap ditemukan oleh search/fetch dan tetap tampil di riwayat sprint-nya, tidak pernah dihapus. Menyelesaikan sprint otomatis mengarsipkan tugas selesai milik sprint itu; alat ini menangani sisanya. Alat ini mengambil seluruh kolom dalam satu panggilan, tanpa jumlah dan tanpa jalan kembali dari sisi MCP — restore_task memulihkan dari sampah, bukan dari arsip — itulah sebabnya ia ditandai destruktif: klien sebaiknya meminta konfirmasi pengguna sebelum memanggilnya. | Menghapus |
| list_projects | Menampilkan proyek di papan — konteks ringan (startup, klien, pribadi) yang bisa menjadi tempat sebuah tugas. Proyek yang diarsipkan tidak disertakan kecuali includeArchived diatur. | Baca |
| create_project | Membuat konteks proyek. Nama unik per papan; warna default diambil bergiliran dari palet; url adalah situs web proyek, yang favicon-nya ditampilkan di kartu tugas. | Tulis |
| update_project | Mengganti nama proyek, mengubah warna atau url situs webnya, atau mengarsipkan/membatalkan arsipnya. Proyek yang diarsipkan hilang dari pemilih; tugas-tugasnya tetap terkait. | Tulis |
| list_sprints | Menampilkan semua sprint (direncanakan, aktif, selesai, diarsipkan) milik pengguna, sehingga pendiri tunggal atau agen bisa meninjau riwayat sprint dan status saat ini tanpa membuka aplikasi. | Baca |
| get_active_sprint | Mengembalikan sprint yang sedang aktif, atau null jika tidak ada sprint yang berjalan — sehingga pendiri tunggal atau agen bisa mengecek sasaran saat ini tanpa membuka aplikasi. | Baca |
| create_sprint | Membuat sprint baru berstatus "planned" di papan Weft Anda, siap dijadwalkan dengan sasaran dan tanggal. Gunakan start_sprint secara terpisah saat siap mulai bekerja. | Tulis |
| start_sprint | Mengubah sprint yang direncanakan menjadi aktif. Hanya satu sprint yang bisa aktif dalam satu waktu, di semua paket — jika sprint lain sedang berjalan, panggilan gagal dan menyebutkan namanya; selesaikan sprint itu dulu, lalu coba lagi. | Tulis |
| complete_sprint | Menyelesaikan sprint aktif. Tugas-tugasnya yang selesai diarsipkan ke riwayat sprint — keluar dari kolom Done di papan, tetap bisa dicari dan tampil di halaman sprint. Tugas yang belum selesai tetap di papan, terkait dengan sprint itu. Tidak bisa dibatalkan lewat MCP — klien sebaiknya meminta konfirmasi saat maksudnya ambigu. | Menghapus |
| add_task_to_sprint | Menetapkan tugas yang sudah ada ke sebuah sprint sehingga muncul di cakupan dan burndown sprint itu. Idempoten — memanggil dua kali tidak menimbulkan efek tambahan, jadi aman untuk dicoba ulang. | Tulis |
| remove_task_from_sprint | Melepaskan tugas dari sprint-nya saat ini tanpa menghapusnya — tugas tetap di papan di kolomnya, hanya tidak lagi termasuk dalam cakupan sprint itu atau burndown-nya. | Tulis |
Pertanyaan
Apa itu server MCP kanban?
Server MCP (Model Context Protocol) yang menyajikan papan kanban sebagai alat yang bisa dipanggil asisten AI: menampilkan kolom, membaca kartu, membuat kartu, memindahkannya ke Doing atau Done. Server milik Weft di-hosting, jadi Anda cukup menambahkan URL alih-alih menjalankan proses di komputer Anda.
Apakah saya perlu memasang atau menjalankan sesuatu?
Tidak. Tambahkan https://letsweft.com/api/mcp ke klien AI Anda dan masuk dengan OAuth. Klien tanpa OAuth memakai token akses pribadi dari Pengaturan → Token akses.
Apakah gratis?
Ya, untuk 50 tugas dan 200 panggilan AI per bulan. Pro menghapus batasnya seharga $7 per kursi per bulan, atau $60 per kursi per tahun.
Apakah berfungsi dengan ChatGPT Free?
Ya. Weft ada di Plugin directory ChatGPT dan berfungsi di semua paket ChatGPT, termasuk Free. Menambahkan URL MCP mentah di ChatGPT adalah fitur Business, Enterprise, dan Edu, tetapi Anda tidak memerlukannya untuk Weft.
Bisakah dua agen berbagi satu papan?
Bisa — justru untuk itulah papan ini dibuat. Setiap agen mengklaim kartu dengan start_task sebelum mengerjakannya, sehingga mereka tidak mengambil kartu yang sama, dan setiap kartu menunjukkan apakah AI atau manusia yang membuat atau menyelesaikannya.
Apa bedanya dengan server MCP kanban lokal?
Server MCP kanban open source berjalan di komputer Anda dan menyimpan papan di file atau database lokal, sehingga hanya agen di komputer itu yang melihatnya. Weft adalah papan bersama yang di-hosting: kartu yang sama di ChatGPT, Claude, Cursor, Codex, aplikasi web, serta aplikasi iOS dan Android, untuk Anda dan tim Anda.