home / mcp / kanboard mcp server

Kanboard MCP Server

Go-based MCP server enabling natural language control of Kanboard projects, tasks, users, and workflows.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "bivex-kanboard-mcp": {
      "command": "/path/to/your/kanboard-mcp",
      "args": [],
      "env": {
        "KANBOARD_API_KEY": "your-kanboard-api-key",
        "KANBOARD_PASSWORD": "your-kanboard-password",
        "KANBOARD_USERNAME": "your-kanboard-username",
        "KANBOARD_API_ENDPOINT": "https://your-kanboard-url/jsonrpc.php"
      }
    }
  }
}

You can connect natural language AI assistants to Kanboard through a Go-based MCP server. This server translates plain-English commands into Kanboard actions, letting you manage projects, tasks, users, and workflows without wrestling with Kanboard’s API directly.

How to use

You run the Kanboard MCP server as a local process or connect to it via an MCP client. In your MCP client, add the server configuration that points to your local server or a remote MCP endpoint. Once connected, you can ask your assistant to create projects, add tasks, assign users, move tasks between columns, set due dates, comment on tasks, and more. The tools are designed to cover project management, task handling, column and swimlane organization, user permissions, and metadata—so you can control Kanboard entirely through natural language.

How to install

Prerequisites: Go 1.21 or higher, a Kanboard instance with API access, and an MCP-compatible client such as Cursor or Claude Desktop.

Step 1: Clone the MCP server repository.

git clone https://github.com/bivex/kanboard-mcp.git
cd kanboard-mcp

Step 2: Build the executable.

# On Windows
build-release.bat

# On Linux/macOS
./build-release.sh

# Manual build
go build -ldflags="-s -w" -o kanboard-mcp .

Step 3: Set up Kanboard credentials as environment variables.

export KANBOARD_API_ENDPOINT="https://your-kanboard-url/jsonrpc.php"
export KANBOARD_API_KEY="your-kanboard-api-key"
export KANBOARD_USERNAME="your-kanboard-username"
export KANBOARD_PASSWORD="your-kanboard-password"

Step 4: Create an MCP client configuration that points to the server.

{
  "mcpServers": {
    "kanboard-mcp-server": {
      "command": "/path/to/your/kanboard-mcp",
      "args": [],
      "env": {
        "KANBOARD_API_ENDPOINT": "https://your-kanboard-url/jsonrpc.php",
        "KANBOARD_API_KEY": "your-kanboard-api-key",
        "KANBOARD_USERNAME": "your-kanboard-username",
        "KANBOARD_PASSWORD": "your-kanboard-password"
      }
    }
  }
}

Configuration

Configure your MCP client to connect to the Kanboard MCP server. The client can run locally and load the above JSON configuration to initialize the connection.

Environment variables used by the server are shown here for reference:

KANBOARD_API_ENDPOINT=https://your-kanboard-url/jsonrpc.php
KANBOARD_API_KEY=your-kanboard-api-key
KANBOARD_USERNAME=your-kanboard-username
KANBOARD_PASSWORD=your-kanboard-password

Usage examples and notes

You can ask the MCP client to create projects, manage tasks, and adjust Kanboard settings. Examples include creating a project, adding tasks, updating task details, assigning users, and retrieving activity for a project or user.

Security and tips

Use a proxy like mcpproxy if needed to improve connectivity and security between the MCP clients and the Kanboard MCP server. Always protect your API credentials and consider using API keys with restricted permissions.

Development and testing

If you are developing custom features, you can build locally, run tests, and iterate with the same configuration structure used for deployment.

Available tools

get_projects

List all Kanboard projects you have access to.

create_project

Create a new Kanboard project with specified name, description, and owner.

get_project_by_id

Fetch project information by its numeric ID.

get_project_by_name

Fetch project information by its name.

get_project_by_identifier

Fetch project information by its identifier.

get_project_by_email

Fetch project information by the project email.

get_all_projects

List all available projects.

update_project

Update a project’s details such as name or description.

remove_project

Delete a project by ID.

enable_project

Enable a project so it becomes active.

disable_project

Disable a project to prevent activity.

enable_project_public_access

Enable public access for a project.

disable_project_public_access

Disable public access for a project.

get_project_activity

Get activity stream for a single project.

get_project_activities

Get activity feed for multiple projects.

get_tasks

List tasks for a project.

create_task

Create a new task within a project.

update_task

Update details for an existing task.

delete_task

Delete a task by ID.

get_task

Get details for a specific task.

get_task_by_reference

Get a task by its external reference.

get_all_tasks

List all tasks in a project.

get_overdue_tasks

Show all overdue tasks.

get_overdue_tasks_by_project

Show overdue tasks for a specific project.

open_task

Set a task status to open.

close_task

Set a task status to closed.

move_task_position

Move a task to a different column/position/swimlane within the same project.

move_task_to_project

Move a task to another project.

duplicate_task_to_project

Duplicate a task into another project.

search_tasks

Search tasks within a project using a query.

assign_task

Assign a task to a user.

set_task_due_date

Set or update a task due date.

create_comment

Create a new comment on a task.

get_task_comments

Get all comments for a task.

get_comment

Get details for a specific comment.

update_comment

Update a comment’s content.

remove_comment

Remove a comment by ID.

get_columns

List all columns in a project.

get_column

Get details for a column.

create_column

Add a new column to a project.

update_column

Update a column’s properties.

change_column_position

Change a column’s position in a project.

delete_column

Remove a column from a project.

get_categories

List all task categories for a project.

get_category

Get details for a category.

create_category

Create a new task category in a project.

update_category

Update a category’s name or color.

delete_category

Remove a category.

get_swimlanes

List all swimlanes of a project.

get_active_swimlanes

List enabled swimlanes for a project.

get_swimlane

Get swimlane details by ID.

get_swimlane_by_id

Get swimlane details by ID.

get_swimlane_by_name

Get swimlane details by name.

change_swimlane_position

Move a swimlane to a new position.

create_swimlane

Add a new swimlane to a project.

update_swimlane

Update properties of a swimlane.

remove_swimlane

Remove a swimlane from a project.

disable_swimlane

Disable a swimlane for a project.

enable_swimlane

Enable a swimlane for a project.

get_board

Get information to render a project board.

get_me

Get information about the currently authenticated user.

get_my_dashboard

Retrieve the dashboard for the connected user.

get_my_activity_stream

Get recent activity for the connected user.

create_my_private_project

Create a private project for the connected user.

get_my_projects_list

List projects the connected user is involved in.

get_my_overdue_tasks

Show overdue tasks for the connected user.

get_my_projects

Get detailed information about all projects for the connected user.

get_external_task_link_types

List all registered external link providers.

get_ext_link_provider_deps

Get dependencies for a given external link provider.

create_external_task_link

Create an external link for a task.

update_external_task_link

Update an external task link.

get_external_task_link_by_id

Get an external task link by ID.

get_all_external_task_links

List all external links attached to a task.

remove_external_task_link

Remove an external link from a task.

create_task_link

Create a link between two tasks.

update_task_link

Update a task link between two tasks.

get_task_link_by_id

Get a task link by ID.

get_all_task_links

List all links related to a task.

remove_task_link

Remove a link between two tasks.

get_all_links

List all possible task relation types.

get_opposite_link_id

Get opposite link ID for a given link.

get_link_by_label

Get a link relation by label.

get_link_by_id

Get details for a link by ID.

create_link

Create a new task relation/link.

update_link

Update a task relation/link.

remove_link

Remove a task relation/link by ID.

create_project_file

Create and upload a new project attachment.

get_all_project_files

List all files attached to a project.

get_project_file

Get file information for a project file.

download_project_file

Download project file contents (base64 encoded).

remove_project_file

Remove a file from a project.

remove_all_project_files

Remove all files from a project.

get_project_metadata

Get all metadata for a project.

get_project_metadata_by_name

Fetch a specific metadata value for a project.

save_project_metadata

Add or update metadata for a project.

remove_project_metadata

Remove a metadata key from a project.

get_project_users

List all users in a project.

get_assignable_users

Get users who can be assigned to a task in a project.

add_project_user

Grant a user access to a project with a role.

add_project_group

Grant a group access to a project with a role.

remove_project_user

Remove a user’s access from a project.

remove_project_group

Remove a group’s access from a project.

change_project_user_role

Change a user’s role within a project.

change_project_group_role

Change a group’s role within a project.

get_project_user_role

Get a user’s role in a project.

create_subtask

Create a new subtask for a task.

get_subtask

Get information for a subtask.

get_all_subtasks

List all subtasks for a task.

update_subtask

Update a subtask’s details.

remove_subtask

Remove a subtask by ID.

has_subtask_timer

Check if a timer is running for a subtask by a user.

set_subtask_start_time

Start a subtask timer for a user.

set_subtask_end_time

Stop a subtask timer for a user.

get_subtask_time_spent

Get time spent on a subtask by a user.

get_all_tags

List all tags.

get_tags_by_project

List all tags for a project.

create_tag

Create a new tag for a project.

update_tag

Rename a tag and update its color.

remove_tag

Remove a tag by ID.

set_task_tags

Assign or update tags for a task.

get_task_tags

Get tags assigned to a task.

create_task_file

Create and upload a file for a project or task.

get_all_task_files

List all files attached to a task.

get_task_file

Get information for a specific task file.

download_task_file

Download a task file’s contents (base64).

remove_task_file

Remove a file from a task or project.

remove_all_task_files

Remove all files from a task or project.

get_task_metadata

Get all metadata related to a task.

get_task_metadata_by_name

Fetch a specific metadata value for a task.

save_task_metadata

Save or update metadata for a task.

remove_task_metadata

Remove task metadata by name.

get_version

Get the current application version.

get_timezone

Get the connected user’s timezone.

get_default_task_colors

List all default task colors.

get_default_task_color

Get the default task color.

get_color_list

List all available task colors.

get_application_roles

List all application roles.

get_project_roles

List all project roles.

get_available_actions

List available automatic actions.

get_available_action_events

List events available for actions.

get_compatible_action_events

List events compatible with a given action.

get_actions

List actions for a project.

create_action

Create a new action for a project.

remove_action

Remove an action by ID.

create_group

Create a new user group.

update_group

Update a user group.

remove_group

Remove a user group.

get_group

Get details for a group.

get_all_groups

List all groups.

get_member_groups

List all groups for a given user.

get_group_members

List all members of a group.

add_group_member

Add a user to a group.

remove_group_member

Remove a user from a group.

is_group_member

Check if a user is a member of a group.

get_users

List all system users.

create_user

Create a new user with credentials.

create_ldap_user

Create a new LDAP-authenticated user.

get_user

Get user information by ID.

get_user_by_name

Get user information by username.

update_user

Update a user’s details including role.

remove_user

Remove a user by ID.

disable_user

Disable a user account.

enable_user

Enable a previously disabled user.

is_active_user

Check if a user is currently active.

assign_user_to_project

Assign a user to a project with a specific role.

create_sprint

Create a new sprint in a project.

get_sprint_by_id

Retrieve a sprint by its ID.

update_sprint

Update an existing sprint.

remove_sprint

Remove a sprint by ID.

get_all_sprints_by_project

Get all sprints for a given project.