Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoPino log level: trace, debug, info, warn, error, fatalinfo
KANBOARD_URLNoBase URL of your Kanboard instance, e.g. https://kanboard.example.com
KANBOARD_USERNAMENoYour Kanboard login username (required in personal mode)
KANBOARD_API_TOKENNoAPI token (personal or application, depending on auth mode)
KANBOARD_AUTH_MODENopersonal (acts as a Kanboard user) or app (service identity)personal
KANBOARD_TIMEOUT_MSNoPer-request HTTP timeout in milliseconds15000

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
add_project_userA

Add a user to a Kanboard project with the given role. Role defaults to 'project-member' if not specified. Use list_project_users to find user ids and list_projects to find project ids.

attach_file_to_taskA

Upload a file to a Kanboard task as an attachment. Provide either file_path (local file) or content_base64 (inline base64 content) — not both. project_id is resolved automatically from the task (no need to provide it). Maximum file size: 5 MB (5,242,880 bytes) — larger files return VALIDATION_ERROR before any HTTP request is made. Returns { file_id } on success.

create_columnA

Add a column to a Kanboard project board. Project resolved from explicit project_id/project_identifier or .kanboard.yaml. Returns { column_id } on success.

create_commentA

Create a comment on a Kanboard task. The comment author is automatically set to the authenticated user (via getMe() cache). Do NOT pass user_id — it is injected server-side. Returns { comment_id } on success.

create_projectA

Create a new Kanboard project. Requires a name (1–255 chars). Optionally provide a description, short identifier, owner user id, start_date / end_date (ISO 8601 string or epoch seconds), and email. Returns { project_id } on success.

create_subtaskA

Create a subtask under an existing Kanboard task. Returns { subtask_id } on success. Status: 0 = todo (default), 1 = in progress, 2 = done.

create_swimlaneA

Add a swimlane to a Kanboard project. Project resolved from explicit project_id/project_identifier or .kanboard.yaml. Returns { swimlane_id } on success.

create_taskA

Create a new task in a Kanboard project. Project is resolved from explicit project_id or project_identifier, or from .kanboard.yaml. Optional fields (column_id, owner_id, category_id, swimlane_id) fall back to .kanboard.yaml defaults when not provided. Returns { task_id } on success.

create_tasks_batchA

Bulk-create tasks in a Kanboard project using a single JSON-RPC batch request. Accepts 1–100 tasks per call. Non-atomic: partial failure is possible — check failed[] for per-task errors. Optional fields (column_id, owner_id, category_id, swimlane_id) fall back to .kanboard.yaml defaults when not provided. Returns { created: [...], failed: [...] } — never throws on partial failure.

delete_columnA

Permanently delete a Kanboard column. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, column_id } on success.

delete_commentA

Permanently delete a Kanboard comment. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, comment_id } on success.

delete_projectA

Permanently delete a Kanboard project (and all its tasks, columns, swimlanes). DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, project_id } on success.

delete_subtaskA

Permanently delete a Kanboard subtask. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, subtask_id } on success.

delete_swimlaneA

Permanently delete a Kanboard swimlane. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, swimlane_id } on success.

delete_taskA

Permanently delete a Kanboard task. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, task_id } on success.

delete_task_fileA

Permanently delete a file attachment from a Kanboard task. DESTRUCTIVE — requires explicit confirm: true. Returns { ok: true, file_id } on success.

get_projectA

Retrieve a single Kanboard project. Provide exactly one of: project_id (number), project_identifier (short string like 'PRJ'), or project_name (full name). Returns the full project object. Returns NOT_FOUND when no match exists.

get_taskA

Retrieve a single Kanboard task by its numeric id. Returns the full task entity including status, dates, column, swimlane, and metadata. Returns NOT_FOUND when the task does not exist.

list_categoriesA

List all categories for a Kanboard project. Provide project_id or project_identifier, or configure .kanboard.yaml in your project root. Returns an array of category objects with id, name, and color_id.

list_columnsA

List all columns (board stages) for a Kanboard project. Provide project_id or project_identifier, or configure .kanboard.yaml in your project root. Returns an array of column objects with id, title, position, and task_limit.

list_my_tasksA

List open tasks assigned to the currently authenticated user in the resolved project. Requires a project_id (explicit or from .kanboard.yaml). Uses Kanboard search query: assignee:me status:open. In app mode (jsonrpc user) returns tasks assigned to the jsonrpc system user.

list_overdue_tasksA

List overdue tasks with configurable scope. scope="mine" (default): overdue tasks for the authenticated user. scope="all": all overdue tasks across all projects (admin token required). scope="project": overdue tasks for a specific project (pass project_id or use .kanboard.yaml). Note: getOverdueTasksByUser is not supported by the Kanboard JSON-RPC API. Returns an empty array when nothing is overdue.

list_projectsA

Returns the projects where the authenticated user is a member. Does not list projects in the Kanboard instance that the user has no access to. Returns an array of project objects with id, name, identifier, and status.

list_subtasksA

List all subtasks for a given Kanboard task. Returns an array of subtask objects including id, title, status, user_id, time_estimated, and time_spent fields.

list_swimlanesA

List active swimlanes for a Kanboard project. Provide project_id or project_identifier, or configure .kanboard.yaml in your project root. Returns an array of swimlane objects with id, name, description, position, and is_active.

list_tasksA

List tasks in a Kanboard project. Returns active tasks by default (status_id=1). Pass status_id=0 to list closed/inactive tasks. Project is resolved from explicit project_id or project_identifier, or from .kanboard.yaml.

list_project_usersA

List the members of a Kanboard project (user_id + username pairs). Provide project_id or project_identifier, or configure .kanboard.yaml in your project root. Works for any user who can see the project — does not require admin permissions. Use the returned user_ids to assign tasks (create_task owner_id), add comments, etc.

move_columnA

Reorder a column on the Kanboard project board. Provide column_id and the new 1-based position (required — no default). Returns { ok: true, column_id, position } on success.

move_swimlaneA

Reorder a swimlane within a Kanboard project. Provide swimlane_id and the new 1-based position (required — no default). Returns { ok: true, swimlane_id, position } on success.

move_task_positionA

Move a Kanboard task to a different column, position, or swimlane. Provide exactly one of column_id or column_name (column_name is resolved case-insensitively). If swimlane_id is omitted, it is resolved from .kanboard.yaml or the first active swimlane. Project is resolved from explicit project_id or project_identifier, or from .kanboard.yaml. Returns { ok: true } on success.

remove_project_userA

Unlink a user from a Kanboard project (does not delete the user). DESTRUCTIVE on the project-user relationship — requires explicit confirm: true. Returns { ok: true, project_id, user_id } on success.

update_columnA

Update an existing Kanboard column (partial update). At least one field besides 'column_id' must be provided — otherwise VALIDATION_ERROR. NOT for reordering — use move_column instead. Returns { ok: true } on success.

update_commentA

Update the body of an existing Kanboard comment. Returns { ok: true, comment_id } on success.

update_projectC

Update an existing Kanboard project (partial update). At least one field besides 'project_id' must be provided — otherwise VALIDATION_ERROR. Returns { ok: true } on success.

update_subtaskB

Update an existing Kanboard subtask (partial update). Both 'subtask_id' and 'task_id' are required as identity fields. At least one of title, status, user_id, time_estimated, or time_spent must also be provided. Status: 0 = todo, 1 = in progress, 2 = done.

update_swimlaneA

Update an existing Kanboard swimlane (partial update). At least one field besides 'swimlane_id' must be provided — otherwise VALIDATION_ERROR. NOT for reordering — use move_swimlane instead. Returns { ok: true, swimlane_id } on success.

update_taskB

Update an existing Kanboard task (partial update). At least one field besides 'task_id' must be provided — otherwise VALIDATION_ERROR. Column and swimlane changes must use move_task_position instead. Returns { ok: true } on success.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/ErnestoCorona/kanboard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server