Decknote
Kanban boards your AI agent can use: add, complete, move and recall tasks with your team.
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 complete_task 中
- LOW在 fetch 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"decknote": {
"url": "https://decknote.app/api/v1/mcp"
}
}
}遠端端點
https://decknote.app/api/v1/mcpstreamable-http它能做什麼
工具清單
工具(17)
🟢list_boards(includeArchived)
List the boards you can access and their lists. Start here: the returned board and list ids are what the other tools need.
輸入結構描述
{
"type": "object",
"properties": {
"includeArchived": {
"type": "boolean",
"description": "Include archived boards. Default false."
}
}
}🟡create_board(title, template, lists)
Create a new board you own. Optional template picks the initial lists and labels (created in your account's language): 'blank' (To do / In progress / Done), 'kanban', 'content' or 'personal'. Returns the board with its list ids, ready for create_task.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"template": {
"type": "string",
"enum": [
"blank",
"kanban",
"content",
"personal"
],
"description": "Initial lists/labels. Default 'blank'."
},
"lists": {
"type": "array",
"items": {
"type": "string"
},
"description": "Your own list titles, in order, instead of the template's (its labels stay)."
}
},
"required": [
"title"
]
}🟡create_list(boardId, title, first)
Add a list (column) to a board — at the end, or first with `first: true`. Returns its id for create_task / move_task.
輸入結構描述
{
"type": "object",
"properties": {
"boardId": {
"type": "string"
},
"title": {
"type": "string"
},
"first": {
"type": "boolean",
"description": "Put it before the other lists. Default false."
}
},
"required": [
"boardId",
"title"
]
}🟢search_tasks(query, boardId, listId, status, dueBefore, ...)
Search your tasks (cards) — the recall tool. Filter by free text (matches title and description), board, list, status and due date. Use this to answer 'what's still open', 'what did I note about X', 'what's due soon'.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text; matches card title and description."
},
"boardId": {
"type": "string"
},
"listId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"open",
"completed",
"all"
],
"description": "Default 'open'."
},
"dueBefore": {
"type": "string",
"description": "ISO 8601; only tasks due before this instant."
},
"limit": {
"type": "number",
"description": "Max results, 1–100. Default 20."
}
}
}🟢get_task(cardId)
Read one task in full: title, description, due date, completion, and which board/list it's in.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
}
},
"required": [
"cardId"
]
}🔴create_task(listId, boardId, title, description, dueDate, ...)
Add a task (card). Provide listId, or boardId to drop it in that board's first list. Title is required; description becomes the card's page and accepts Markdown (headings, bullet/numbered lists, - [ ] task lists, bold/italic/code, links, fenced code).
輸入結構描述
{
"type": "object",
"properties": {
"listId": {
"type": "string"
},
"boardId": {
"type": "string",
"description": "Used if listId is omitted."
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"dueDate": {
"type": "string",
"description": "ISO 8601."
},
"reminders": {
"type": "array",
"items": {
"type": "object",
"description": "Either `at` (ISO 8601 instant), or relative to the due date: `daysBefore` (0 = that day) + `time` (local HH:MM, default 09:00) in `timeZone` (IANA, e.g. America/Argentina/Buenos_Aires).",
"properties": {
"at": {
"type": "string"
},
"daysBefore": {
"type": "integer"
},
"time": {
"type": "string"
},
"timeZone": {
"type": "string"
}
}
},
"description": "Reminders for you (push and email)."
},
"recurrence": {
"type": "string",
"enum": [
"daily",
"weekly",
"biweekly",
"monthly"
],
"description": "Repeat: archiving the task creates the next one, dates and reminders moved (Pro; needs a due date)."
},
"checklist": {
"type": "object",
"description": "A checklist on the card: { title?, items: [{ text, done? }] }.",
"properties": {
"title": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"done": {
"type": "boolean"
}
}
}
}
}
}
},
"required": [
"title"
]
}🔴update_task(cardId, title, description, dueDate, recurrence)
Edit a task's title, description or due date. Description accepts Markdown; note that setting it REPLACES the card's page (use add_comment for incremental notes). Pass dueDate null to clear it.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"dueDate": {
"type": [
"string",
"null"
],
"description": "ISO 8601, or null to clear."
},
"recurrence": {
"type": [
"string",
"null"
],
"enum": [
"daily",
"weekly",
"biweekly",
"monthly",
null
],
"description": "Repeat on archive (Pro), or null to stop repeating."
}
},
"required": [
"cardId"
]
}⚪complete_task(cardId)
Mark a task done.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
}
},
"required": [
"cardId"
]
}⚪reopen_task(cardId)
Reopen a completed task.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
}
},
"required": [
"cardId"
]
}🔴archive_task(cardId)
Archive a task — the cleanup tool. Soft-delete: the card leaves the board but keeps its data and can be restored from the board's Archived panel. Archiving a dated recurring task schedules its next occurrence, same as archiving from the UI.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
}
},
"required": [
"cardId"
]
}🟢move_task(cardId, listId)
Move a task to a different list (e.g. from 'To do' to 'Doing'). The target list must be one you can edit.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"listId": {
"type": "string",
"description": "Target list id."
}
},
"required": [
"cardId",
"listId"
]
}🟡add_comment(cardId, text)
Add a comment to a task — useful for leaving progress notes a human will read.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"cardId",
"text"
]
}🟡add_reminder(cardId, at, daysBefore, time, timeZone)
Remind yourself about a task: a push notification and an email at a chosen moment. Give `at` (ISO instant), or a time relative to the due date (`daysBefore` + local `time` + `timeZone`) that follows the due date if it moves and repeats with recurring cards.
輸入結構描述
{
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"at": {
"type": "string"
},
"daysBefore": {
"type": "integer"
},
"time": {
"type": "string"
},
"timeZone": {
"type": "string"
}
},
"required": [
"cardId"
]
}🟢list_reminders(boardId, limit)
Your pending reminders (soonest first), optionally on one board — with each task's title and due date.
輸入結構描述
{
"type": "object",
"properties": {
"boardId": {
"type": "string"
},
"limit": {
"type": "integer",
"description": "Default 50, max 200."
}
}
}🔴remove_reminder(reminderId)
Delete one of your reminders.
輸入結構描述
{
"type": "object",
"properties": {
"reminderId": {
"type": "string"
}
},
"required": [
"reminderId"
]
}🟢search(query)
Search the cards of every board you can access by text (title and description), open or completed. Returns ids to read in full with fetch.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to look for."
}
},
"required": [
"query"
]
}🟢fetch(id)
Read one card in full by id (from search or search_tasks): title, board and list, due date, description, checklists and comments.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The card id."
}
},
"required": [
"id"
]
}社群
證據