# @omnicoreos/planka-mcp

A Planka 2.x MCP server with verified writes and an optional agent workflow

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.3.0
- **Author:** planka-mcp contributors
- **License:** MIT
- **npm:** @omnicoreos/planka-mcp
- **Source:** https://github.com/omnicoreos/planka-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-06T23:50:49.040Z
- **Version scanned:** 0.3.0
- **CVEs:** none found by OSV at scan time

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `boardId` — Board to work on. Optional: omit it when PLANKA_DEFAULT_BOARD_ID is configured, or let the summary resolve it.
- `planka-open-session` — Read the board the cheap way and report where it stands: columns, counts, what moved recently, what is waiting on a human.
- `since` — ISO date to measure recent movement from (defaults to the last 24 hours).
- `planka-close-card` — Record a closing comment with real evidence, move the card, and prove both landed.
- `cardId` — Card to close.
- `listId` — Column to move the card to. Optional: without it, propose the destination and ask before moving.
- `planka-board-triage` — Walk the columns that are waiting on a person and turn each card into one concrete question or next step.
- `lists` — Comma-separated names of the columns to walk. Defaults to whatever the summary shows as waiting on a human.
- `workflow-readme` — The optional board workflow: columns, labels, who moves what, and the director/worker split. Read it before running cards in parallel.
- `workflow-board-template` — The columns and labels the workflow expects, ready to create on a fresh board.
- `skill-orchestrator` — Director role: select cards, dispatch one worker per card, audit evidence, merge. Same text the plugin installs as a skill.
- `skill-close-card` — Closing a card honestly: required evidence, the closing comment template, and which transition each role owns.
- `planka-2x-gotchas` — How Planka 2.x actually behaves: HTML-with-200 on unknown GETs, 404 that means 403, fixed page sizes, archive lists. Read this when a call answers something tha
- `label-colors` — Every color planka_create_label and planka_update_label accept, as JSON. Generated from the schema, so it can never drift from what the server validates.
- `planka_card_history` — One card's activity log as human lines (who, when, what). Planka logs only creation, moves,
- `planka_board_activity` — What moved on a board, grouped by card — the call to make when resuming a session.
- `planka_add_attachment` — Upload a local file (screenshot, log, doc) onto a card.
- `planka_get_attachments` — Attachments on a card: id, name, mimeType, size, download URL.
- `planka_view_attachment` — An attachment's content: images come back viewable, text inline, anything else as metadata only.
- `planka_delete_attachment` — Delete an attachment. Confirmed by re-reading the card's attachments.
- `planka_duplicate_card` — Copy a card with its tasks, labels and members (attachments are not copied). Lands in the
- `planka_archive_card` — Archive a card (Planka's hidden archive column) or bring it back with restoreToListId.
- `planka_move_list_cards` — Move EVERY card of one column into another. Counts both columns before and after; verified
- `planka_create_card` — Create a card in a list, optionally with a checklist of tasks.
- `planka_get_card` — One card as a digest: name, column, labels, members, checklist counts, attachment and comment counts, and the first 200 chars of the description.
- `planka_update_card` — Update a card's name, description, due date or completion. Null clears a field.
- `planka_move_card` — Move a card to another list, board or position — the workflow transition.
- `planka_delete_card` — Permanently delete a card with its tasks, comments and attachments. Cannot be undone; confirmed by re-reading.
- `planka_create_comment` — Comment on a card: status updates, notes, agent activity logs. Verified by re-reading the card's comments.
- `planka_add_comment` — DEPRECATED: use planka_create_comment. Kept so existing callers keep working; it forwards every argument unchanged.
- `planka_get_comments` — Read a card's comments, oldest first. Planka serves them 50 at a time: this returns `limit` of them (default 20) plus hasMore and nextBeforeId to continue.
- `planka_update_comment` — Rewrite a comment, by ID from planka_get_comments. Only the agent user's own comments. Verified by re-reading the card's comments.
- `planka_delete_comment` — Delete a comment, by ID from planka_get_comments. Only the agent user's own comments. Confirmed by re-reading the card's comments.
- `planka_manage_comment` — DEPRECATED: use planka_update_comment / planka_delete_comment (and planka_create_comment to write one). Kept so existing callers keep working; it only routes `a
- `planka_create_label` — Create a label on a board. Verified against the board's labels after writing.
- `planka_update_label` — Rename a label or change its color, by label ID from planka_board_summary. Verified against the board.
- `planka_delete_label` — Delete a label from a board. DESTRUCTIVE: it disappears from every card that carried it. Confirmed by re-reading the board.
- `planka_manage_labels` — DEPRECATED: use planka_create_label / planka_update_label / planka_delete_label. Kept so existing callers keep working; it only routes `action` to those tools.
- `planka_set_card_labels` — Add or remove labels on a card, by label ID — never by name. IDs come from planka_board_summary.
- `planka_create_list` — Create a list (column) on a board. Verified against the board after writing.

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"planka\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@omnicoreos/planka-mcp\"\n      ],\n      \"env\": {\n        \"PLANKA_API_KEY\": \"<YOUR_PLANKA_API_KEY>\",\n        \"PLANKA_AGENT_PASSWORD\": \"<YOUR_PLANKA_AGENT_PASSWORD>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `PLANKA_API_KEY` — Planka API Key (optional)
- `PLANKA_AGENT_PASSWORD` — Planka Agent Password (optional)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 2 credentials (0 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Extensive blast radius — deletes data; holds an api key.
- Floor 59, ceiling 59 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40omnicoreos%2Fplanka-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40omnicoreos%2Fplanka-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40omnicoreos%2Fplanka-mcp
- HTML page: https://forgeregistry.com/registry/%40omnicoreos%2Fplanka-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
