Skip to main content

Model Context Protocol server for Kanboard API

Project description

Kanboard MCP Server

A Model Context Protocol (MCP) server that exposes Kanboard API functionality to Large Language Models (LLMs), enabling AI assistants to interact with Kanboard project management system.

Features

This MCP server provides access to 60+ Kanboard API endpoints organized into the following categories:

  • Projects (5 tools): Get all projects, get project by ID/name, project activity
  • Tasks (11 tools): Create, read, update, delete tasks; search tasks; handle overdue tasks
  • Categories (2 tools): Get categories for projects
  • Columns (2 tools): Get board columns information
  • Boards (1 tool): Get board information
  • Comments (5 tools): Create, read, update, delete comments on tasks
  • Users (9 tools): Get user information, current user data, dashboard, projects
  • Links (12 tools): Create and manage task links and link types
  • Subtasks (5 tools): Create, read, update, delete subtasks
  • Tags (4 tools): Manage task tags
  • Files (6 tools): Upload, download, and manage task file attachments

Installation

Prerequisites

  • Python 3.9 or higher
  • Access to a Kanboard instance with API enabled
  • Kanboard API token

Install Dependencies

pip install -e .

Or for development:

pip install -e ".[dev]"

Configuration

Environment Variables

Create a .env file in the project root with the following variables:

# Required
KANBOARD_URL=https://your-kanboard.com/jsonrpc.php
KANBOARD_API_TOKEN=your_api_token_here

# Optional
KANBOARD_USERNAME=jsonrpc
KANBOARD_VERIFY_SSL=true
KANBOARD_TIMEOUT=30
KANBOARD_MAX_RETRIES=3
KANBOARD_RETRY_DELAY=1.0

# MCP Server settings
MCP_SERVER_NAME="Kanboard MCP Server"
MCP_SERVER_VERSION="0.1.0"
DEBUG=false

Getting Your API Token

  1. Log into your Kanboard instance
  2. Go to SettingsAPI
  3. Generate a new API token
  4. Copy the token and use it as KANBOARD_API_TOKEN

Usage

Running the Server

# Using the installed command
kanboard-mcp

# Or using Python module
python -m kanboard_mcp.server

MCP Client Integration

Add the server to your MCP client configuration. For Claude Desktop, add to your claude_desktop_config.json:

{
  "mcpServers": {
    "kanboard": {
      "command": "kanboard-mcp",
      "env": {
        "KANBOARD_URL": "https://your-kanboard.com/jsonrpc.php",
        "KANBOARD_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

Testing the Connection

The server provides built-in tools for testing:

  • test_connection: Test connection to Kanboard
  • get_server_info: Get server information and capabilities
  • get_config_info: Get current configuration (without sensitive data)

API Tools

Projects

  • getAllProjects(): Get all projects
  • getProjectById(project_id): Get project by ID
  • getProjectByName(project_name): Get project by name
  • getProjectActivity(project_id): Get project activity
  • getProjectActivities(project_id): Get project activities

Tasks

  • getAllTasks(project_id, status_id?): Get all tasks for a project
  • getTask(task_id): Get specific task
  • getTaskByReference(project_id, reference): Get task by reference
  • getOverdueTasks(): Get all overdue tasks
  • getOverdueTasksByProject(project_id): Get overdue tasks for project
  • createTask(project_id, title, ...): Create new task
  • updateTask(task_id, ...): Update existing task
  • openTask(task_id): Open task
  • closeTask(task_id): Close task
  • removeTask(task_id): Delete task
  • searchTasks(project_id, query, ...): Search tasks

Comments

  • createComment(task_id, content, user_id?): Create comment
  • getComment(comment_id): Get comment
  • getAllComments(task_id): Get all comments for task
  • updateComment(comment_id, content): Update comment
  • removeComment(comment_id): Delete comment

And many more...

See the individual tool modules in src/kanboard_mcp/tools/ for complete API documentation.

Error Handling

All tools return responses in the format:

{
  "success": true,
  "data": { ... }
}

Or on error:

{
  "success": false,
  "error": "Error message"
}

Development

Project Structure

kanboard-mcp/
├── src/kanboard_mcp/
│   ├── __init__.py
│   ├── server.py           # Main MCP server
│   ├── config.py           # Configuration management
│   ├── client.py           # Kanboard client wrapper
│   └── tools/              # API tool implementations
│       ├── projects.py
│       ├── tasks.py
│       ├── categories.py
│       ├── columns.py
│       ├── boards.py
│       ├── comments.py
│       ├── users.py
│       ├── links.py
│       ├── subtasks.py
│       ├── tags.py
│       └── files.py
├── pyproject.toml
└── README.md

Running Tests

pytest

Code Quality

# Format code
black src/

# Sort imports
isort src/

# Type checking
mypy src/

# Linting
ruff src/

Troubleshooting

Common Issues

  1. Connection Errors: Check your KANBOARD_URL and ensure the API endpoint is correct
  2. Authentication Errors: Verify your KANBOARD_API_TOKEN is valid
  3. SSL Errors: Set KANBOARD_VERIFY_SSL=false for self-signed certificates (not recommended for production)
  4. Timeout Issues: Increase KANBOARD_TIMEOUT value

Claude Desktop Issues

Python Command Not Found (spawn python ENOENT)

If you get this error, Claude Desktop can't find the Python executable. Try these solutions:

  1. Use the full path to the installed entry point (RECOMMENDED):

    {
      "mcpServers": {
        "kanboard": {
          "command": "/path/to/your/python/bin/kanboard-mcp",
          "env": { ... }
        }
      }
    }
    
  2. Use the wrapper script:

    {
      "mcpServers": {
        "kanboard": {
          "command": "/path/to/kanboard-mcp/run_server.sh",
          "env": { ... }
        }
      }
    }
    
  3. Use full Python path:

    {
      "mcpServers": {
        "kanboard": {
          "command": "/usr/local/bin/python3",
          "args": ["-m", "kanboard_mcp.server"],
          "cwd": "/path/to/kanboard-mcp",
          "env": {
            "PYTHONPATH": "/path/to/kanboard-mcp/src",
            ...
          }
        }
      }
    }
    

Finding Your Python Path:

  • Run which python3 or which python in terminal
  • For pyenv users: ~/.pyenv/versions/X.X.X/bin/python
  • For system Python: /usr/local/bin/python3 or /usr/bin/python3

Debug Mode

Enable debug mode for detailed logging:

DEBUG=true kanboard-mcp

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Run code quality checks
  6. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and questions:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kanboard_mcp-0.1.0.tar.gz (61.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kanboard_mcp-0.1.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file kanboard_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: kanboard_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 61.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.17

File hashes

Hashes for kanboard_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6173f648ccf4ae6b9acdd512bcd75008426b83335d0291583c1b81870bcf80ed
MD5 b46afc373caacd2ad959e6cd4329e49f
BLAKE2b-256 ef598c10dd62a5be4c91fc37266a96fc921da82073bea4e08acdc7c328cfb6b9

See more details on using hashes here.

File details

Details for the file kanboard_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kanboard_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c74d74fedb92d533bbc169f222d66256b90ce6e7a3147c00cc5d1768d864add8
MD5 1059108c503026edac328fa50e2b8cbc
BLAKE2b-256 f10d9eddb6b83d16bcac41b851112e3bc7f605c924f6876d04cf6ad0cd73eb22

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page