ChatGPT, Claude, Cursor, Codex를 위한 칸반 MCP 서버
Weft 창업자 Andrei Finogeev ·
Weft는 호스팅 칸반 보드(Backlog, Todo, Doing, Done, 그리고 선택적인 스프린트)이고, MCP 서버는 https://letsweft.com/api/mcp에 있습니다. 이 URL을 AI 클라이언트에 추가하고 OAuth로 한 번 로그인하면 됩니다. 설치하거나 로컬에서 실행할 것은 없습니다. 그때부터 비서는 보드를 읽고, 카드를 만들고 옮기며, 두 에이전트가 같은 카드를 가져가지 않도록 작업 전에 카드를 맡고, 진행을 보고하고, 당신이 정할 결정은 묻고, 한 일을 적어 카드를 닫습니다. 월 작업 50개와 AI 호출 200회까지 무료입니다.
https://letsweft.com/api/mcpStreamable HTTP · OAuth 또는 개인 액세스 토큰 · 도구 32개
AI 클라이언트에 추가하기
ChatGPT
ChatGPT에서 Weft 열기 — 또는 직접 설정:
- 1ChatGPT 사이드바에서 Plugins를 엽니다 — 또는 Settings → Plugins.
- 2“Weft”를 검색해 목록 페이지를 엽니다.
- 3“Connect”를 클릭하고 Weft가 무엇에 접근하는지 확인합니다.
- 4열린 팝업에서 Weft 계정으로 로그인합니다.
아무 대화에서나 플러그인을 @로 부르세요: “@Weft 내 보드에 뭐가 있어?” — 또는 + 메뉴에서 Weft를 고르세요. 설정을 건너뛰었다면 ChatGPT가 그 자리에서 연결을 제안합니다.
Claude Desktop
- 1Claude Desktop을 열고 Settings → Connectors로 갑니다.
- 2“Add custom connector”를 클릭합니다.
- 3아래의 Weft MCP URL을 붙여넣고 저장합니다.
- 4열린 브라우저 창에서 OAuth를 마칩니다.
새 대화를 열고 “내 Weft 보드에 뭐가 있어?”라고 물어보세요. Claude가 Weft 커넥터로 보드 상태를 가져옵니다.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcp아무 프로젝트에서나 `claude`를 실행하고 “내 보드에 뭐가 있어?”라고 물어보세요. 처음에는 브라우저 창이 열려 OAuth를 마칩니다.
Cursor
Cursor에 추가 — 또는 직접 설정:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Cursor를 열고 Settings → MCP로 갑니다. OAuth를 마치면 “weft” 서버가 초록색 표시와 함께 나타납니다.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"`codex mcp login weft`를 실행해 브라우저에서 로그인한 다음, `codex`를 켜고 “내 보드에 뭐가 있어?”라고 물어보세요. `/mcp`가 연결된 서버와 그 도구들을 보여줍니다.
VS Code
Weft 확장 설치 — 또는 직접 설정:
{
"servers": {
"weft": {
"type": "http",
"url": "https://letsweft.com/api/mcp"
}
}
}채팅을 열고 모드 선택을 Agent로 바꾼 뒤 “보드에 뭐가 있지?”라고 물어보세요. 처음에는 OAuth 창이 열립니다. 「MCP: List Servers」에서 weft가 Running으로 보여야 합니다.
Windsurf
- 1Windsurf를 열고 Settings → Cascade → MCP servers로 갑니다.
- 2“Add server”를 클릭하고 Remote (HTTP)를 고릅니다.
- 3아래의 Weft MCP URL을 붙여넣고 저장합니다.
- 4열린 브라우저 창에서 OAuth를 마칩니다.
Cascade를 열고 “내 보드에 뭐가 있어?”라고 물어보세요. Weft 서버를 쓴 답변에는 그 표시가 붙습니다.
Gemini CLI
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마다 할 수 있는 일은 당신이 정합니다
연결된 비서마다 전체, 쓰기, 읽기 전용 권한을 주고, 클릭 한 번으로 연결을 끊으세요. 삭제된 카드는 바로 사라지지 않고 휴지통으로 갑니다.


도구 32개
모든 도구는 읽기만 하는지, 쓰는지, 무언가를 제거하는지 선언하므로, 클라이언트는 언제 먼저 당신에게 물어야 하는지 압니다.
| 도구 | 하는 일 | 종류 |
|---|---|---|
| search | 작업, 스프린트, 결정, 메모리 노트를 키워드로 검색합니다. 순위가 매겨진 {id, title, url} 결과를 최대 50개 돌려주며, 종류 접두사가 붙은 id를 fetch에 넘깁니다. | 읽기 |
| fetch | 검색 결과 하나의 전체 내용을 가져옵니다. 제목, 텍스트 표현, 출처 url, 구조화된 메타데이터. search가 돌려준 접두사 붙은 id를 받습니다. | 읽기 |
| initialize_board | Weft 보드에 컬럼이 없으면 기본 Backlog, Todo, Doing, Done 컬럼을 만듭니다. AI 에이전트가 작업을 관리하기 전에 한 번 호출하는 설정입니다. 멱등적입니다. | 쓰기 |
| get_board_state | 사용자의 Scrumban 보드를 간추린 브리핑을 돌려줍니다. 컬럼, 진행 중인 스프린트, Doing, 기한이 지난 작업, 최근 완료 항목. 전체 스냅샷보다 약 30배 작습니다. | 읽기 |
| list_columns | 보드의 모든 컬럼을 순서대로 나열합니다. 각 컬럼의 id, 이름, 위치를 알려 주므로 에이전트는 작업을 정확히 어디로 옮길 수 있는지 압니다. | 읽기 |
| list_tasks | 인증된 사용자의 작업을 돌려줍니다. 컬럼, 스프린트, 프로젝트(이름 또는 id), 만든 주체(사람 또는 AI), 담당자(실행자)로 거를 수 있습니다. | 읽기 |
| create_task | 사용자의 보드에 새 작업을 만듭니다. 컬럼을 지정하지 않으면 Backlog에 들어갑니다. 우선순위 기본값은 medium입니다. 사용자가 작업 추가를 요청할 때 씁니다. | 쓰기 |
| bulk_create_tasks | 한 번의 원자적 호출로 작업을 최대 1000개 만듭니다. Linear/Jira/Notion/Trello 내보내기나 3개 이상의 작업 목록을 가져오며, AI 호출 할당량은 한 번만 씁니다. | 쓰기 |
| update_task | 기존 작업의 필드를 부분 수정합니다. 넘긴 필드만 바뀌고 생략한 필드는 유지됩니다. 예외가 하나 있습니다. 에이전트가 requiresReview를 해제하려 하면 거부되고, 그 거부와 함께 수정 전체가 취소됩니다. | 쓰기 |
| move_task | 작업을 다른 컬럼과 위치로 옮깁니다. semantic='doing'인 컬럼으로 옮기면 사이클 타임 측정이 시작되고, semantic='done'으로 옮기면 완료 시각이 기록됩니다. | 쓰기 |
| start_task | AI가 작업을 실행하기 시작하는 순간 호출합니다. 카드가 Doing으로 옮겨져 사용자와 연결된 다른 모든 클라이언트가 진행 중임을 보게 되고, 두 번 가져가지 않습니다. 사이클 타임 측정을 시작하며, 담당자가 없는 작업은 호출한 에이전트가 맡습니다(기존 담당자는 결코 덮어쓰지 않습니다). 컬럼 id는 필요 없습니다. | 쓰기 |
| report_progress | 아직 일하고 있다고 알립니다. 클라이언트가 조용해지면 작업에 대한 맡은 상태가 만료되는데, 이 호출이 그것을 갱신합니다. 하트비트가 없으면 오래 걸리는 작업은 버려진 것으로 간주되어 다른 이에게 제공됩니다. 일부러 그렇게 했습니다. 실행 도중 죽은 에이전트는 아무것도 보고하지 못하므로, 침묵이 보드가 받을 수 있는 유일한 신호입니다. | 쓰기 |
| request_input | 그 사람만 정할 수 있는 것을 묻고, 작업에 대한 맡은 상태를 잃지 않은 채 기다립니다. 사람이 클라이언트 앞에 있으면 거기에 양식이 뜨고 답이 같은 호출 안에서 돌아옵니다. 에이전트는 같은 맥락, 같은 맡은 상태로 이어서 일합니다. 자리에 없으면 호출은 보류 상태로 돌아오고 질문은 그 사람의 대기열에서 기다리며, 답은 에이전트의 다음 start_task나 get_my_work 때 전달됩니다. 되돌릴 수 없는 일과 정말로 애매한 일에 쓰는 것이지 "계속해도 될까요?"용이 아닙니다. 모든 질문은 새 작업을 제한하는 것과 같은 주의력 예산을 씁니다. | 쓰기 |
| submit_answer | 에이전트가 던진 질문에 그 사람이 한 말을 가져오고, 같은 runId와 리스로 작업을 되돌려 줍니다. 그래서 새로 차갑게 시작하지 않고 같은 시도 안에서 이어 갑니다. 사람이 직접 한 행동이 아니라 전달된 것으로 표시됩니다. 에이전트가 옮긴 답과 사람이 직접 한 클릭은 다른 종류의 증거이고, 보드는 둘을 구분해 둡니다. 질문에 이미 Weft 앱에서 답이 나왔다면 오류 대신 그 답을 돌려줍니다. 중요한 것은 에이전트가 올바른 답으로 이어 가는 것입니다. | 쓰기 |
| get_my_work | 보드 전체를 읽고 추측하는 대신 다음에 할 일을 묻습니다. 이 클라이언트에 배정된 작업, 이미 사람을 기다리고 있는 것, 주의력 대기열에 여유가 있는지를 돌려줍니다. 기한이 지난 것과 이번 주 안에 마감되거나 시작되는 것도 알려 주므로, 에이전트는 묻지 않아도 마감을 듣게 됩니다. 대기열이 가득 차 있으면 새 일을 시작하기보다 대기열 정리를 돕는 것이 유용한데, 작업을 고르기 전에 그렇게 알려 줍니다. | 읽기 |
| complete_task | 일이 실제로 끝났을 때 AI가 호출합니다. 카드가 완료 시각과 함께 Done으로 옮겨지고, 선택 항목인 outcome(한 일, 결과가 있는 곳)이 "Outcome (AI, date)" 메모로 카드에 덧붙습니다. 컬럼 id는 필요 없습니다. 당신이 필요하다고 표시된 작업은 Done으로 가지 않습니다. 영수증이 첨부된 채 당신의 대기열로 가고, 에이전트가 다음에 할 일을 말했다면 수락하는 것이 정확히 그 단계를 승인하고 에이전트에게 돌려줍니다. 작업에 검증 계획이 있으면 서버가 바로 여기서 검사를 실행합니다. URL을 가져오고, 인용문을 찾고, 해시를 비교합니다. 차단 검사를 모두 통과한 executable/state_delta 계획은 서버 검증 완료로 닫히고, 차단 검사가 하나라도 실패하면 카드는 Done에 들어가지 않으며 서버가 관찰한 내용을 에이전트에게 보여 줍니다. | 쓰기 |
| record_decision | 도구 하나, 용도 둘, 기록 테이블 하나. (1) 당신을 기다리는 끝난 작업에 대해 대화에서 내린 판정(승인, 되돌려 보내기, 버리기, 나중에)을 전달해 카드를 검토 대기열에서 치웁니다. 이 항목은 당신이 앱에서 직접 한 행동이 아니라 전달된 것으로 저장되며, 그 차이는 일부러 보이게 둡니다. (2) 기억할 만한 독립적인 결정('Supabase 대신 Neon 선택', 배운 교훈)을 검토한 선택지와 다시 볼 조건과 함께 변경 불가한 MADR-lite 기록으로 남깁니다. 기록은 결코 편집되지 않습니다. supersedesId가 있는 새 결정이 이전 결정을 대체하고, 이전 것은 결정 당일에 한 말 그대로 계속 읽을 수 있습니다. 이 기록들이 다음 주에 get_context가 모든 에이전트에게 다시 내주는 내용입니다. | 쓰기 |
| get_context | 워크스페이스의 현재 유효한 결정과 교훈을 토큰 예산에 맞게 최신순으로 담아 줍니다. 에이전트가 사소하지 않은 일을 시작하기 전에 읽어야 할 내용입니다. 문서로 작성한 것이 아니라 기록된 결정에서 도출되므로 낡지 않습니다. 대체된 결정은 대체 결정이 기록되는 순간 빠지고, 모든 줄에 날짜가 붙습니다. 프로젝트나 작업으로 범위를 좁힐 수 있고, 예산에 들어가지 않은 줄은 개수로 알려 주며 몰래 숨기지 않습니다. | 읽기 |
| get_task_history | 작업의 현재 필드만이 아니라 작업에 무슨 일이 있었는지를 보여 줍니다. 세 가지 모드: 'summary'(기본, 500 토큰 이하: 카드, 최신 영수증, 개수), 'decisions'(판정과 그 이유를 포함해 이 작업에 대해 기록된 모든 결정. 나중에 수락되어 카드가 덮어써져도 재작업 이유가 여기 남습니다), 'full'(원본 기록, 이벤트 100개로 제한되며 제한되었다고 알려 줌). 감사 로그는 직접 읽기에 너무 장황하고 작업 행에는 최신 판정만 남기 때문에 있는 도구입니다. | 읽기 |
| trash_task | Weft 보드의 작업을 휴지통으로 옮깁니다. 30일 동안 restore_task로 복구할 수 있고, 그 뒤에는 예약된 작업이 영구 삭제합니다. | 제거 |
| restore_task | 휴지통으로 옮긴 지 30일 안에 작업을 복구합니다. 작업은 원래 있던 보드 위치로 온전히 돌아오므로, 1인 창업자가 실수로 삭제해 일을 잃는 일이 없습니다. | 쓰기 |
| archive_done_tasks | Done 컬럼을 비웁니다. 그 안의 모든 작업이 보드에서 아카이브로 옮겨지며, search/fetch로 여전히 찾을 수 있고 스프린트 이력에도 계속 보이며 삭제되지 않습니다. 스프린트를 완료하면 그 스프린트의 끝난 작업은 자동으로 아카이브되고, 이 도구는 나머지를 처리합니다. 개수 지정 없이 한 번의 호출로 컬럼 전체를 처리하며 MCP에서는 되돌릴 방법이 없습니다(restore_task는 아카이브가 아니라 휴지통에서 복원합니다). 그래서 파괴적 작업으로 표시되어 있으며, 클라이언트는 호출 전에 사용자에게 확인해야 합니다. | 제거 |
| list_projects | 보드의 프로젝트를 나열합니다. 작업이 속할 수 있는 가벼운 맥락(스타트업, 클라이언트, 개인)입니다. includeArchived를 설정하지 않으면 아카이브된 프로젝트는 빠집니다. | 읽기 |
| create_project | 프로젝트 맥락을 만듭니다. 이름은 보드마다 고유하고, 색상 기본값은 순환 팔레트에서 고르며, url은 프로젝트 웹사이트로 그 파비콘이 작업 카드에 표시됩니다. | 쓰기 |
| update_project | 프로젝트 이름, 색상, 웹사이트 url을 바꾸거나 아카이브/아카이브 해제합니다. 아카이브된 프로젝트는 선택 목록에서 사라지지만 작업과의 연결은 유지됩니다. | 쓰기 |
| list_sprints | 사용자의 모든 스프린트(계획됨, 진행 중, 완료됨, 아카이브됨)를 나열합니다. 1인 창업자나 에이전트가 앱을 열지 않고도 스프린트 이력과 현재 상태를 볼 수 있습니다. | 읽기 |
| get_active_sprint | 현재 진행 중인 스프린트를 돌려주며, 진행 중인 스프린트가 없으면 null을 돌려줍니다. 1인 창업자나 에이전트가 앱을 열지 않고 현재 목표를 확인할 수 있습니다. | 읽기 |
| create_sprint | Weft 보드에 "planned" 상태의 새 스프린트를 만들어 목표와 날짜를 정할 준비를 합니다. 일을 시작할 준비가 되면 start_sprint를 따로 쓰세요. | 쓰기 |
| start_sprint | 계획된 스프린트를 진행 중 상태로 바꿉니다. 모든 요금제에서 진행 중인 스프린트는 한 번에 하나입니다. 다른 스프린트가 진행 중이면 호출은 실패하고 그 스프린트를 알려 줍니다. 먼저 그 스프린트를 완료한 뒤 다시 시도하세요. | 쓰기 |
| complete_sprint | 진행 중인 스프린트를 끝냅니다. 끝난 작업은 스프린트 이력으로 아카이브되어 보드의 Done 컬럼에서 빠지지만, 여전히 검색되고 스프린트 페이지에 보입니다. 끝나지 않은 작업은 스프린트에 연결된 채 보드에 남습니다. MCP로는 되돌릴 수 없으므로, 의도가 애매하면 클라이언트가 확인해야 합니다. | 제거 |
| add_task_to_sprint | 기존 작업을 스프린트에 배정해 그 스프린트의 범위와 번다운에 나타나게 합니다. 멱등적이라 두 번 호출해도 추가 효과가 없어 안전하게 재시도할 수 있습니다. | 쓰기 |
| remove_task_from_sprint | 작업을 삭제하지 않고 현재 스프린트에서 분리합니다. 작업은 보드의 해당 컬럼에 그대로 남고, 그 스프린트의 범위와 번다운에서만 빠집니다. | 쓰기 |
자주 묻는 질문
칸반 MCP 서버란 무엇인가요?
칸반 보드를 AI 비서가 호출할 수 있는 도구로 노출하는 MCP(Model Context Protocol) 서버입니다. 컬럼 나열, 카드 읽기, 카드 만들기, Doing이나 Done으로 옮기기 같은 것들입니다. Weft의 서버는 호스팅이라 컴퓨터에서 프로세스를 돌리는 대신 URL을 추가하면 됩니다.
설치하거나 실행해야 할 것이 있나요?
아니요. https://letsweft.com/api/mcp를 AI 클라이언트에 추가하고 OAuth로 로그인하세요. OAuth를 지원하지 않는 클라이언트는 설정 → 액세스 토큰에서 만든 개인 액세스 토큰을 씁니다.
무료인가요?
네, 월 작업 50개와 AI 호출 200회까지 무료입니다. Pro는 좌석당 월 $7, 또는 좌석당 연 $60에 한도를 없앱니다.
ChatGPT Free에서도 작동하나요?
네. Weft는 ChatGPT의 Plugin directory에 있고 Free를 포함한 모든 ChatGPT 요금제에서 작동합니다. ChatGPT에서 MCP URL을 직접 추가하는 것은 Business, Enterprise, Edu 기능이지만, Weft에는 필요하지 않습니다.
두 에이전트가 보드 하나를 함께 쓸 수 있나요?
네, 보드가 바로 그걸 위해 있습니다. 각 에이전트는 작업 전에 start_task로 카드를 맡으므로 같은 카드를 가져가지 않고, 모든 카드에는 AI가 만들었거나 끝냈는지, 사람이 그랬는지가 표시됩니다.
로컬 칸반 MCP 서버와 무엇이 다른가요?
오픈 소스 칸반 MCP 서버는 당신의 컴퓨터에서 돌아가며 보드를 로컬 파일이나 데이터베이스에 저장하므로, 그 컴퓨터의 에이전트만 볼 수 있습니다. Weft는 공유 호스팅 보드입니다. ChatGPT, Claude, Cursor, Codex, 웹 앱, iOS와 Android 앱에서 당신과 팀이 같은 카드를 봅니다.