MCP server for Planka - enables AI assistants to interact with Planka kanban boards via Model Context Protocol. Supports multi-client connections via SSE.
Overview
An MCP server that enables AI assistants (Claude, VS Code Copilot, etc.) to interact with Planka - a real-time Kanban board application. - or - running and accessible - with appropriate permissions Use host.docker.internal instead of localhost when running Docker. * Authentication is required. Provide either PLANKA_API_KEY, or both PLANKA_USERNAME and PLANKA_PASSWORD. - Set PLANKA_API_KEY. - Set PLANKA_USERNAME and PLANKA_PASSWORD. - If both are set, the server uses PLANKA_API_KEY. - Retries apply to transient failures (408, 429, 5xx) and network request errors. - Delay uses exponential backoff: PLANKA_HTTP_RETRY_BASE_DELAY_MS * 2^attempt. - PLANKA_HTTP_MAX_RETRIES controls additional attempts after the initial request. By default, are enabled for essential Kanban operations: Each tool uses an action parameter. Example: { "action": "list" } or { "action": "get", "id": "123" }
README
Planka MCP Server
An MCP server that enables AI assistants (Claude, VS Code Copilot, etc.) to interact with Planka - a real-time Kanban board application.
Quick Start
Prerequisites
- Node.js 18+ or Docker
- Planka instance running and accessible
- Planka user account with appropriate permissions
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"planka": {
"command": "npx",
"args": ["@chmald/planka-mcp"],
"env": {
"PLANKA_BASE_URL": "http://localhost:3000",
"PLANKA_API_KEY": "your-api-key"
}
}
}
}
VS Code
Add to .vscode/mcp.json:
{
"servers": {
"planka": {
"type": "stdio",
"command": "npx",
"args": ["@chmald/planka-mcp"],
"env": {
"PLANKA_BASE_URL": "http://localhost:3000",
"PLANKA_API_KEY": "your-api-key"
}
}
}
}
Docker
{
"mcpServers": {
"planka": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "PLANKA_BASE_URL=http://host.docker.internal:3000",
"-e", "PLANKA_API_KEY=your-api-key",
"chmald/planka-mcp:latest"
]
}
}
}
Note: Use
host.docker.internalinstead oflocalhostwhen running Docker.
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
PLANKA_BASE_URL |
Yes | http://localhost:3000 |
Your Planka instance URL |
PLANKA_API_KEY |
No* | - | Planka API key sent as X-Api-Key |
PLANKA_USERNAME |
No* | - | Planka username or email |
PLANKA_PASSWORD |
No* | - | Planka password |
MCP_TRANSPORT |
No | stdio |
MCP transport mode: stdio or sse |
MCP_PORT |
No | 3001 |
HTTP port used when MCP_TRANSPORT=sse |
PLANKA_HTTP_MAX_RETRIES |
No | 2 |
Max retry attempts for transient HTTP/network failures per request |
PLANKA_HTTP_RETRY_BASE_DELAY_MS |
No | 250 |
Base retry delay in milliseconds (exponential backoff) |
ENABLE_ALL_TOOLS |
No | false |
Enable all 27 tools |
ENABLE_ADMIN_TOOLS |
No | false |
Enable admin tools |
ENABLE_OPTIONAL_TOOLS |
No | false |
Enable optional tools |
* Authentication is required. Provide either PLANKA_API_KEY, or both PLANKA_USERNAME and PLANKA_PASSWORD.
Authentication Modes
- API key (recommended): Set
PLANKA_API_KEY. - Username/password: Set
PLANKA_USERNAMEandPLANKA_PASSWORD. - If both are set, the server uses
PLANKA_API_KEY.
Retry Behavior
- Retries apply to transient failures (
408,429,5xx) and network request errors. - Delay uses exponential backoff:
PLANKA_HTTP_RETRY_BASE_DELAY_MS * 2^attempt. PLANKA_HTTP_MAX_RETRIEScontrols additional attempts after the initial request.
Tool Categories
By default, 10 core tools are enabled for essential Kanban operations:
| Category | Tools | Description |
|---|---|---|
| Core | 10 | Auth, projects, boards, lists, cards, tasks, comments, labels (always enabled) |
| Optional | 13 | Attachments, custom fields, notifications, etc. |
| Admin | 4 | User management, webhooks, config |
Enable more tools:
"env": {
"ENABLE_ALL_TOOLS": "true"
}
Available Tools
Each tool uses an action parameter. Example: { "action": "list" } or { "action": "get", "id": "123" }
Multi-Client Mode (SSE)
For team deployments where multiple clients share one server:
docker run -d \
--name planka-mcp \
-p 3001:3001 \
-e MCP_TRANSPORT=sse \
-e PLANKA_BASE_URL=http://your-planka-server:3000 \
-e PLANKA_API_KEY=your-api-key \
chmald/planka-mcp:latest
Connect clients to http://localhost:3001/sse.
Troubleshooting
“Authentication failed”
- Verify your API key (or username/password) is correct
- Check that
PLANKA_BASE_URLis accessible
“Connection refused” with Docker
- Use
host.docker.internalinstead oflocalhost - Ensure Planka is running
npx fails
- Ensure Node.js 18+ is installed:
node --version - Try:
npm cache clean --force
Debug logs
npx @chmald/planka-mcp 2>&1 | tee debug.log
Upgrade Notes
Check CHANGELOG.md for full version-by-version details.
Upgrading to 2.0.3
- The
authtool moved from optional tools to core tools and is now always available. - API key authentication is now supported with
PLANKA_API_KEY(X-Api-Key). - If both API key and username/password are configured,
PLANKA_API_KEYis used.
Links
- GitHub Issues - Report bugs
- Planka - The Kanban board application
- CONTRIBUTING.md - Development & publishing guide
- CHANGELOG.md - Versioned API and tooling updates
- SECURITY.md - Security policy
License
MIT - see LICENSE
Install
npx @chmald/planka-mcpConfiguration
{
"mcpServers": {
"planka": {
"command": "npx",
"args": ["@chmald/planka-mcp"],
"env": {
"PLANKA_BASE_URL": "http://localhost:3000",
"PLANKA_API_KEY": "your-api-key"
}
}
}
}