Planka MCP Server for Claude
Click on "Install 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., "@Planka MCP Server for Claudemove the card 'Fix login bug' from 'In Progress' to 'Done'"
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.
Planka MCP Server for Claude
MCP (Model Context Protocol) server that connects Planka kanban boards to Claude.ai for AI-powered project management.
This server exposes all Planka v2 API operations as MCP tools via the Streamable HTTP transport, making it compatible with Claude.ai custom connectors.
Table of Contents
Features
75+ MCP tools covering every Planka API endpoint
Streamable HTTP transport (
POST /mcp+GET /mcpSSE) for Claude.ai compatibilityDual authentication: API key (recommended) or email/password with auto-refresh on 401
Composite tools: board overview, project overview, cross-project card search, "my cards"
Multi-session support: each Claude conversation gets its own MCP session
Docker ready: pre-built image on
ghcr.io, multi-stage Dockerfile + docker-compose
Prerequisites
Node.js 20+
A running Planka v2.x instance
A dedicated Planka account for Claude (see below)
A publicly accessible domain for the MCP server (e.g.
https://planka-mcp.domain.tld)
Quick Start
1. Create a dedicated Planka account for Claude
We strongly recommend creating a dedicated Planka user account specifically for Claude (e.g. claude@yourdomain.tld), rather than using your personal account. This makes it easy to:
Track exactly which actions Claude performed in the activity log
Revoke Claude's access independently without affecting your own account
Apply specific permissions (admin or member) scoped to Claude's needs
2. Install dependencies
npm install3. Configure
cp .env.example .env
# Edit .env with your Planka URL and Claude's dedicated account credentialsAuthentication options (pick one):
Method | Variables | Notes |
API Key (recommended) |
| Never expires. Generate via |
Email + Password |
| Auto-refreshes JWT on 401 |
4. Expose the server on a public domain
Claude.ai requires the MCP server to be accessible over HTTPS. You need a public domain pointing to this server, for example:
https://planka-mcp.domain.tldConfigure your reverse proxy (Nginx, Traefik, Caddy…) to forward HTTPS traffic to localhost:3001.
5. Build and run
npm run build
npm start6. Verify
curl https://planka-mcp.domain.tld/health
# {"status":"ok","planka_url":"http://...","version":"1.0.0"}7. Add to Claude.ai
Go to Settings > Connectors > Add custom connector
Set the URL to:
https://planka-mcp.domain.tld/mcp⚠️ The URL must include
/mcpat the end — Claude.ai will not find the MCP server without it.Click Add, then Connect and authorize via the OAuth screen
Enable the connector in a conversation via the "+" button > Connectors
Docker
A pre-built image is automatically published to the GitHub Container Registry on every push to main and on every version tag (v*).
ghcr.io/nextheberg/planka-mcp-server-for-claude:latestRun with docker compose (recommended)
The provided docker-compose.yml pulls the pre-built image by default:
# Pull latest image and start
docker compose up -d
# Check logs
docker compose logs -f planka-mcpRun with docker directly
docker run -d \
--name planka-mcp \
--restart unless-stopped \
-p 3001:3001 \
--env-file .env \
ghcr.io/nextheberg/planka-mcp-server-for-claude:latestBuild locally
To build the image from source instead of pulling it:
# Edit docker-compose.yml: comment out `image:` and uncomment `build:`
docker compose up -d --buildOr directly:
docker build -t planka-mcp-server .Security
Even though the MCP server is exposed on a public domain, it is effectively inaccessible to anyone except Claude. Here's why:
OAuth required — without completing the OAuth flow (which opens an interactive popup in your browser), no one can obtain a valid token. This flow cannot be automated without human interaction.
Tokens stored in memory only — issued tokens live exclusively in the container's RAM. A container restart invalidates all existing tokens immediately. No database, no persistent storage exposed.
No token = 401 — any direct request to
/mcpwithout a valid Bearer token is rejected immediately.Tokens are unguessable — format
planka-mcp-token-{uuid}, with UUID v4 providing 2¹²² possible values.
The only realistic attack surface is token interception in transit — mitigated entirely by HTTPS/TLS. The OAuth discovery endpoints (/.well-known/*, /oauth/authorize, /oauth/token) are public but grant no access without completing the interactive flow.
In practice: only Claude — after you have clicked "Authorize" — can use this server.
Cost — Using Claude Haiku
Managing Planka tasks (creating cards, updating lists, searching boards…) does not require a powerful model. These are structured, low-complexity operations that work perfectly with Claude Haiku, Anthropic's fastest and most affordable model.
Using Claude Haiku for Planka operations costs a fraction of Claude Sonnet or Opus — making this connector extremely cost-effective for day-to-day project management automation.
Development
npm run dev # Uses tsx --watch for hot reloadEnvironment Variables
Variable | Required | Default | Description |
| Yes | - | Full URL to Planka (e.g. |
| One of | - | API key for authentication |
| One of | - | Email for password auth |
| One of | - | Password for password auth |
| No |
| Server listen port |
| No |
| Set to |
| No |
| Request timeout in ms |
| No |
| Log level: error, warn, info, debug |
Available MCP Tools (75+)
Auth & System
Tool | Description |
| Get Planka instance info (version, OIDC, limits) |
| Get SMTP configuration (admin) |
| Update SMTP configuration (admin) |
| Test SMTP configuration (admin) |
Users
Tool | Description |
| List all users |
| Create a new user |
| Get user details |
| Update user settings |
| Delete a user |
| Change user email |
| Change user password |
| Change username |
| Generate API key |
Projects
Tool | Description |
| List all projects |
| Create a project |
| Get project with boards and members |
| Update project settings |
| Delete a project |
| Add a project manager |
| Remove a project manager |
| Create base custom field group |
Boards
Tool | Description |
| Create a board |
| Get board with all content |
| Update board settings |
| Delete a board |
| Get board activity log |
| Add board member |
| Update member role |
| Remove board member |
Lists
Tool | Description |
| Create a list |
| Get list with cards |
| Update list (name, color, position, move) |
| Delete a list |
| Sort cards in a list |
| Move all cards to another list |
| Clear all cards from a list |
Cards
Tool | Description |
| List cards with filters |
| Create a card |
| Get card with all details |
| Update card (move, rename, due date, etc.) |
| Delete a card |
| Duplicate a card |
| Mark card notifications read |
| Get card activity log |
Task Lists & Tasks
Tool | Description |
| Create a checklist on a card |
| Get task list with tasks |
| Update task list |
| Delete task list |
| Create a task |
| Update task (complete, assign, rename) |
| Delete a task |
Labels
Tool | Description |
| Create a label |
| Update a label |
| Delete a label |
| Add label to card |
| Remove label from card |
Card Members
Tool | Description |
| Assign user to card |
| Unassign user from card |
Comments
Tool | Description |
| List card comments |
| Add a comment |
| Edit a comment |
| Delete a comment |
Attachments
Tool | Description |
| Add a link attachment |
| Rename attachment |
| Delete attachment |
Custom Fields
Tool | Description |
| Update base field group |
| Delete base field group |
| Create field in base group |
| Create board field group |
| Create card field group |
| Get field group |
| Update field group |
| Delete field group |
| Create field in group |
| Update a custom field |
| Delete a custom field |
| Set field value on card |
| Remove field value from card |
Notifications
Tool | Description |
| List all notifications |
| Get notification details |
| Mark read/unread |
| Mark all as read |
Notification Services
Tool | Description |
| Create board webhook |
| Create user webhook |
| Update notification service |
| Delete notification service |
| Test notification service |
Webhooks
Tool | Description |
| List all webhooks |
| Create a webhook |
| Update a webhook |
| Delete a webhook |
Composite Tools
Tool | Description |
| Full board view: lists + cards + members + labels |
| Project with boards and card counts per list |
| Search cards across all boards in a project |
| Get all cards assigned to a user across all projects |
Usage Examples (natural language in Claude)
"Show me all my projects"
"Create a new project called 'Website Redesign'"
"What cards are assigned to me?"
"Add a card 'Fix login bug' to the 'To Do' list on the Dev board"
"Move all cards from 'In Progress' to 'Done'"
"Search for cards mentioning 'database' in the Backend project"
"Create a checklist on card X with items: design, implement, test"
"Set the due date for card Y to next Friday"
"Add a comment on card Z: 'This is ready for review'"
"Show me the activity log for the main board"
Architecture
src/
index.ts # Express HTTP server (Streamable HTTP transport)
server.ts # MCP server definition + all 75+ tools
planka/
client.ts # HTTP client (auth, auto-refresh, timeout)
types.ts # Full TypeScript type definitions
api/
auth.ts # Access tokens + bootstrap
projects.ts # Projects + managers
boards.ts # Boards + memberships
lists.ts # Lists (CRUD + sort + move + clear)
cards.ts # Cards (CRUD + duplicate + notifications)
task-lists.ts # Task lists
tasks.ts # Tasks
labels.ts # Labels + card labels
card-memberships.ts # Card member assignments
comments.ts # Comments
attachments.ts # Attachments (link type)
custom-fields.ts # Custom field groups + fields + values
users.ts # Users (CRUD + email/password/username/apikey)
notifications.ts # Notifications
notification-services.ts # Notification services
webhooks.ts # Webhooks
config.ts # SMTP configLicense
GPL-3.0 license
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NextHeberg/Planka-MCP-Server-for-Claude'
If you have feedback or need assistance with the MCP directory API, please join our Discord server