plaky-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@plaky-mcp list all spaces in my workspace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Plaky MCP Server
A Model Context Protocol server that exposes the Plaky project-management REST API to MCP-compatible AI clients (Claude Desktop, Claude Code, Cursor, etc.).
It wraps the full Plaky public API surface — spaces, boards, items/subitems, fields, comments, reactions, files, users and teams — as 26 well-described tools.
Features
Workspace — current user, list/get users (filter by email/status/type), list/get teams
Spaces & boards — list/get spaces, list boards, get board structure (groups, fields, allowed values)
Items — list (with view/parent/expand filters + pagination), get, create item or subitem, delete
Fields — update one field or many at once, by field key or title, with per-type value formats
Comments — list, create (incl. replies), update, delete, and set emoji reactions
Files — list, get, upload (from a local path), rename/describe, delete, download
Clean error reporting (status + API error body), 429 rate-limit awareness, 1-indexed pagination with
hasMore.
Related MCP server: plaky115-mcp
Install
npm install plaky-mcpOr run without installing globally:
npx plaky-mcpYou need a Plaky API key (Plaky → Profile settings → API). It is sent as the
X-API-Key header on every request.
Client configuration
Claude Desktop / Claude Code (claude_desktop_config.json or .mcp.json)
{
"mcpServers": {
"plaky": {
"command": "npx",
"args": ["-y", "plaky-mcp"],
"env": {
"PLAKY_API_KEY": "your-api-key"
}
}
}
}For Claude Code you can also run:
claude mcp add plaky --env PLAKY_API_KEY=your-api-key -- npx -y plaky-mcpCursor
Add to your MCP settings (.cursor/mcp.json or Cursor Settings → MCP):
{
"mcpServers": {
"plaky": {
"command": "npx",
"args": ["-y", "plaky-mcp"],
"env": {
"PLAKY_API_KEY": "your-api-key"
}
}
}
}Development
git clone https://github.com/pavlealeksic/plaky-mcp.git
cd plaky-mcp
npm install
npm run build
export PLAKY_API_KEY="your-api-key"
npm startEnvironment variables
Variable | Required | Description |
| yes | Plaky API key, sent as |
| no | Override the API base URL (default |
Tool reference
All tools are prefixed plaky_. IDs are integers. Typical flow:
plaky_list_spaces → plaky_list_boards → plaky_get_board (to learn field keys
and allowed values) → plaky_list_items / plaky_create_item /
plaky_update_item_fields.
Tool | Description |
| The API key's owner (verify auth). |
| Workspace members and teams. |
| Spaces (optionally expand boards). |
| Boards and board structure. |
| Read items. |
| Create item/subitem; delete item. |
| Change one / many field values. |
| Comments. |
| Set the caller's emoji reactions on a comment. |
| File attachments. |
Field value formats
When setting fields (on create/update), keys are field keys ("status-1") or
titles ("Status"). Values by type:
Type | Example |
String / Rich text |
|
Number |
|
Date |
|
Timeline |
|
Status |
|
Tag |
|
Link |
|
Person |
|
npm run dev # tsx watch on src/index.ts
npm run build # tsc -> dist/Notes
Rate limit: 200 requests / user / minute; exceeding it returns HTTP 429.
License
MIT
Available Tools
26 toolsplaky_create_itemCreate an item or subitemA
Create a new item (row) on a board, or a subitem when parentId is set. Place it in a group via groupId or groupTitle (defaults to the first group). Set initial field values via fields: an object keyed by field key (e.g. "status-1") or field title (e.g. "Status"). Value formats by field type — String/RichText: "text"; Number: 13.4; Date: "2026-01-02T18:10:15.254Z"; Timeline: {start, end}; Status: "To do" or label id "1"; Tag: ["Product","HR"] or ids; Link: "https://..." or {url, displayText}; Person: {users:[{id}|{email}], teams:[{id}|{title}]}. Call plaky_get_board first to discover available fields and allowed values.
Inputs: boardId (required), spaceId (required), title, fields, +3 more.
plaky_create_item_commentCreate item commentB
Add a comment to an item. Set repliesToId to post the comment as a reply to an existing comment.
Inputs: text (required), itemId (required), boardId (required), spaceId (required), +1 more.
plaky_delete_itemDelete an itemA
Permanently delete an item (and its subitems) by id. This cannot be undone.
Inputs: itemId (required), boardId (required), spaceId (required).
plaky_delete_item_commentDelete item commentC
Permanently delete a comment by id.
Inputs: itemId (required), boardId (required), spaceId (required), itemCommentId (required).
plaky_delete_item_fileDelete item fileB
Permanently delete a file attached to an item.
Inputs: itemId (required), boardId (required), spaceId (required), itemFileId (required).
plaky_download_item_fileDownload item fileA
Download a file attached to an item. If the API returns JSON (e.g. a presigned download URL) that is returned directly. If it returns binary content, provide savePath to write it to disk; the tool then returns the saved path and size. Binary content is never streamed into the conversation.
Inputs: itemId (required), boardId (required), spaceId (required), itemFileId (required), +1 more.
plaky_get_boardGet board by idA
Get a single board by id, including its structure: groups, field/column definitions and their configurations (status labels, tag labels, etc.). Read this before creating or updating items so you know the available field keys/titles and allowed values.
Inputs: boardId (required), spaceId (required).
plaky_get_current_userGet current userA
Get the user that owns the API key making the request. Useful for verifying authentication and discovering the caller's user id.
Inputs: no named parameters.
plaky_get_itemGet item by idB
Get a single item by id, including its field values.
Inputs: itemId (required), boardId (required), spaceId (required), expand.
plaky_get_item_fileGet item file detailsA
Get metadata for a single file attached to an item.
Inputs: itemId (required), boardId (required), spaceId (required), itemFileId (required).
plaky_get_spaceGet space by idB
Get a single space by its id.
Inputs: spaceId (required), expand.
plaky_get_teamGet team by idB
Get a single team by its id.
Inputs: teamId (required).
plaky_list_boardsList boards in a spaceA
List the boards contained in a given space. Supports pagination.
Inputs: spaceId (required), page, pageSize.
plaky_list_item_commentsList item commentsB
List all comments on an item, including replies and reaction details.
Inputs: itemId (required), boardId (required), spaceId (required).
plaky_list_item_filesList item filesB
List the files attached to an item.
Inputs: itemId (required), boardId (required), spaceId (required).
plaky_list_itemsList board itemsA
List items (rows) on a board, with optional filtering. Supports pagination; the response includes a hasMore flag indicating whether more pages exist.
Inputs: boardId (required), spaceId (required), page, expand, +4 more.
plaky_list_spacesList spacesB
List spaces in the workspace. Spaces are top-level containers that hold boards. Use expand=["board"] to include full board objects.
Inputs: page, expand, pageSize.
plaky_list_subitemsList subitems of an itemB
List the subitems nested under a given item. Supports pagination.
Inputs: itemId (required), boardId (required), spaceId (required), page, +2 more.
plaky_list_teamsList workspace teamsB
List all teams in the workspace. Supports pagination.
Inputs: page, pageSize.
plaky_list_usersList workspace usersA
List users in the workspace. Optionally filter by emails, status, or membership type. Supports pagination.
Inputs: page, type, emails, status, +1 more.
plaky_set_comment_reactionsSet comment reactionsA
Set the authenticated user's reactions on a comment. This OVERRIDES any existing reactions by the caller; pass an empty array to remove all of them. Each reaction is an emoji's unicode codepoint without the "U+" prefix (case-insensitive) — e.g. "1f44d" (thumbs up), "2705" (check mark), "2764" (heart).
Inputs: itemId (required), boardId (required), spaceId (required), reactions (required), +1 more.
plaky_update_item_commentUpdate item commentB
Edit the text of an existing comment.
Inputs: text (required), itemId (required), boardId (required), spaceId (required), +2 more.
plaky_update_item_fieldUpdate a single item field valueA
Change the value of one field on an item, identified by the field key or title (itemFieldKey). The value format depends on the field type — String/RichText: "text"; Number: 13.4; Date: "2026-01-02T18:10:15.254Z"; Timeline: {start, end}; Status: "To do" or "1"; Tag: ["Product","HR"]; Link: "https://..." or {url, displayText}; Person: {users:[{id}|{email}], teams:[{id}|{title}]}.
Inputs: itemId (required), boardId (required), spaceId (required), itemFieldKey (required), +1 more.
plaky_update_item_fieldsUpdate multiple item field valuesA
Change several field values on an item in one request. fields is an object keyed by field key or title, with values following the same per-type formats as plaky_create_item (e.g. {"Status":"Done", "number-1":42}).
Inputs: fields (required), itemId (required), boardId (required), spaceId (required).
plaky_update_item_fileUpdate item file metadataA
Rename a file or change its description. The original file extension/type is preserved regardless of the name given.
Inputs: name (required), itemId (required), boardId (required), spaceId (required), +2 more.
plaky_upload_item_fileUpload a file to an itemA
Upload a local file and attach it to an item. Provide the absolute path to a file on the machine running this MCP server.
Inputs: itemId (required), boardId (required), spaceId (required), filePath (required), +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 26 tools
Each tool targets a distinct resource-action combination (e.g., create_item vs. create_item_comment, update_item_field vs. update_item_fields). There is no ambiguity between tools; even similar ones like list_items and list_subitems are clearly differentiated by resource.
All tools follow the pattern 'plaky_<verb>_<noun>' in snake_case. Verbs are consistent (create, delete, get, list, update, etc.) and nouns correspond to the resource. No mixing of conventions.
26 tools is on the higher side but still appropriate for a comprehensive project management MCP server covering items, comments, files, boards, spaces, users, and teams. Each tool serves a distinct purpose; the count is justified by the domain's breadth.
The tool surface covers core CRUD operations for items, comments, and files, plus listing for boards, spaces, users, teams, and subitems. Missing operations like creating/updating boards or spaces are minor gaps for a tool focused on item-level management.
Maintenance
Related MCP Connectors
Read boards and items, create items, set field values and add comments in Plaky.
ClickUp MCP — wraps the ClickUp REST API v2 (BYO API key)
Unofficial community ClickUp MCP via personal API token. Not affiliated with ClickUp.
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables interaction with ClickUp workspaces, spaces, folders, lists, tasks, and comments via MCP tools.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for the Plaky project management API. Provides 32 generated and 7 curated tools for spaces, boards, items, comments, and more, with safe defaults and dry-run mutations.MIT
- AlicenseCqualityBmaintenanceEnables AI assistants to manage Planka projects, boards, lists, cards, tasks, labels, comments, stopwatches, and memberships through MCP tools.56Creative Commons Zero v1.0 Universal
- AlicenseNot gradedqualityBmaintenanceEnables natural-language interaction with Favro through MCP, exposing 85 typed tools for searching, resolving names to IDs, and safely mutating data with dry-run support.Apache 2.0