Decknote

Kanban boards your AI agent can use: add, complete, move and recall tasks with your team.

我该使用它吗

质量与安全性

A
描述质量
94%
模式完整度
86%
命名质量
96%
投毒风险
100%
权限匹配度
90%
协议合规性
100%

发现(2)

  • LOWTool 'complete_task' description lacks action verb在 complete_task 中
  • LOWTool 'fetch' suggests web access but openWorldHint=false在 fetch 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,044token 数(工具定义)
~681 B典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.60%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本17 个工具