A kanban board management server with MCP (Model Context Protocol) support for managing tasks across multiple boards, columns, and cards.
Specter is a PHP-based kanban MCP server with 12 well-defined tools. All tools have explicit descriptions and complete JSON Schema input definitions visible in mcp.php. Tool naming follows verb_noun patterns (list_, add_, delete_, move_, update_, rename_). However, several critical issues limit the score: (1) parameter descriptions are minimal or missing detail about constraints and formats, (2) output schemas are not formally documented in the tool definitions, (3) error handling lacks recovery guidance and doesn't distinguish error types, (4) no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications visible in the provided metadata. The 'add_card' tool exemplifies gaps: it accepts 'due_date' in 'YYYY-MM-DD format' but no validation is documented; priority enum is present (good), but many optional fields lack descriptions. The 'update_card' and 'move_card' tools would benefit from explicit 'idempotentHint' annotation. Response structure is not formally defined, agents must infer what fields are returned. These issues are typical of community MCP servers and prevent a higher score.
Create a new board with default columns.
Add a new card to the kanban board.
Add a new column to the kanban board.
Delete a board by id. Cannot delete the last board.
Delete a card by ticketId or card UUID.
Get full details of a single card by ticketId or card UUID.
List all boards with their ids and labels.
Missing output schema documentation. Tools define inputs but provide no formal specification of return types/fields. Agents cannot reliably predict response structure for chaining.
Parameter descriptions lack constraint details. 'due_date' says 'YYYY-MM-DD format' but no validation guidance. 'column' parameter lacks explanation of valid column IDs. Agents cannot self-correct invalid inputs.
Missing tool annotations despite clear risk levels (DESTRUCTIVE, WRITE, READ_ONLY). delete_board and delete_card should have destructiveHint=true. list_* and get_card should have readOnlyHint=true. Agents cannot distinguish safe from dangerous operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 79 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List all kanban cards (compact summary). Use get_card for full details.
List all kanban columns with their ids and labels.
Move a card to a different column by ticketId or card UUID.
Rename a column by id.
Update fields on an existing card identified by ticketId or card UUID.
Error handling lacks recovery guidance. 'delete_board' returns 'Cannot delete last board' but does not suggest next steps. No distinction between retryable (timeout) vs permanent (not found) vs user-fixable (validation) errors.
Missing idempotency hints on update/move operations. update_card and move_card should declare idempotentHint=true to signal safe retries. Agents cannot safely retry without explicit guidance.
No confirmation pattern for destructive operations. delete_board and delete_card execute immediately; no dry-run or confirmation step. Agents can accidentally delete data without recovery.
Parameter 'ticketId' in get_card, add_card, move_card, update_card, delete_card is described as 'Ticket identifier or card UUID' but no guidance on how to obtain a valid ticketId or what happens if both ticketId and UUID are provided.
Default board_id='first board' is implicit in several tools (list_cards, get_card, add_card, move_card, update_card, list_columns, add_column, rename_column) but not formally documented. Agents may not realize board selection is possible.