npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@chmald/planka-mcp

v2.0.4

Published

MCP server for Planka - Real-Time Collaborative Kanban Board

Readme

Planka MCP Server

npm version Docker Image Version License: MIT

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.internal instead of localhost when 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_USERNAME and PLANKA_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_RETRIES controls 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" }

| Tool | Actions | |------|---------| | auth | login, logout, acceptTerms, oidcExchange, revokePending, getTerms | | bootstrap | get - Get app data, user info, projects | | projects | list, get, create, update, delete | | boards | get, create, update, delete | | lists | get, create, update, delete | | cards | list, get, create, update, delete | | comments | list, create | | tasks | getList, createList, create, update | | labels | create, update, delete, addToCard, removeFromCard | | cardMembers | add, remove |

| Tool | Actions | |------|---------| | config | get, update, testSmtp | | users | list, create, update, delete, updateEmail, updatePassword, etc. | | webhooks | list, create, update, delete | | projectManagers | add, remove |

| Tool | Actions | |------|---------| | attachments | create, update, delete | | boardMembers | add, update, remove | | customFields | createBaseGroup, createField, setValue, etc. | | notifications | list, get, markRead, markAllRead, markCardRead, createUserService, createBoardService, updateService, deleteService, testService | | actions | boardActions, cardActions | | cardExtras | duplicate | | commentExtras | update, delete | | listExtras | clear, moveCards, sort | | taskExtras | updateList, deleteList, deleteTask | | labelExtras | update, delete, removeFromCard | | cardMemberExtras | remove | | backgroundImages | upload, delete | | userInfo | get |


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_URL is accessible

"Connection refused" with Docker

  • Use host.docker.internal instead of localhost
  • 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 auth tool 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_KEY is used.

Links

License

MIT - see LICENSE