Kelvia MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port to listen on for HTTP mode. Setting this switches the server from stdio to Streamable HTTP. | |
| KELVIA_API_URL | No | Base URL for the Kelvia API. Defaults to http://localhost:4000/api. | |
| MCP_PUBLIC_URL | No | Public protected-resource origin for OAuth. | |
| MCP_RATE_LIMIT | No | Requests per token per minute. Defaults to 300. | |
| KELVIA_TOOLSETS | No | Comma-separated list of toolsets to expose. Defaults to all. | |
| KELVIA_API_TOKEN | No | Agent key or personal token used for authentication in stdio mode. | |
| MCP_INSTANCE_COUNT | No | Number of HTTP instances. | |
| MCP_ALLOWED_ORIGINS | No | Comma-separated CORS allowlist. | |
| MCP_STICKY_SESSIONS | No | Required for multi-instance legacy SSE. | |
| MCP_AUTHORIZATION_SERVER | No | OAuth authorization-server origin. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_boardsA | List all Kelvia boards accessible to the authenticated user. Returns id, name, slug, isArchived, columns (kanban columns), stages (sprints/milestones), config (custom priorities and statuses), taskCounter, createdAt. |
| get_boardA | Get detailed info for a single board by its URL slug (slug is the short identifier in board URLs, e.g. 'my-project'). Includes all columns, stages with their statuses, board config and member count. |
| list_tasksA | List tasks with optional filters. Without any filter returns all tasks the user has access to across every board. By default returns a COMPACT shape to stay within token limits: { board: { id, name, slug, columns } | null, tasks: [{ id, number, title, status, priority, columnId, stageId, tags (names), assignees (count), dueDate }], count }. Pass detailed=true for full task objects (heavy — can exceed limits on large boards) or use get_task / get_task_by_number for one full task. |
| list_daily_tasksA | List tasks relevant for today (assigned to me and not done, or due today). Optional board filter by slug. |
| list_calendar_tasksA | List tasks with a due date inside a date range, for a calendar view. Unlike list_tasks, this is scoped by due date range rather than status/search filters. |
| list_daily_plan_blocksA | List the user's personal day-planner blocks (their own time-blocking schedule) visible on a given local date, with each block's done/not-done status for that date. Different from list_daily_tasks, which lists board tasks due today — this is the user's private schedule, not board tasks. |
| list_daily_plan_definitionsA | List the user's day-planner block definitions as stored (recurrence rule, scheduled time, active_from) — not resolved against a specific date, unlike list_daily_plan_blocks. |
| list_overdue_daily_plan_blocksA | List the user's day-planner blocks that were due before the given local date and are still not done. |
| create_daily_plan_blockA | Create a block in the user's personal day-planner (their own time-blocking schedule, not a board task). Title may reference a board task with |
| update_daily_plan_blockA | Update fields of an existing day-planner block. Pass only the fields you want to change. Title may reference a board task with |
| set_daily_plan_block_statusA | Mark a day-planner block done or not-done for one specific local date (recurring blocks track completion per-day, not globally). |
| reorder_daily_plan_blocksA | Reorder the day-planner blocks visible on a given local date (drag-and-drop equivalent). Pass ALL block UUIDs visible on that date, in the desired order. |
| delete_daily_plan_blockA | Remove a day-planner block starting from a given local date onward (soft-delete — earlier occurrences and their completion history are kept). |
| get_taskA | Get full details of a single task by its UUID. Includes all fields: title, description, status, priority, dueDate, assignees, watchers, tags, stage, parent task, subtasks, worklogs (time tracking), and comments count. |
| get_task_by_numberA | Get a task by its human-friendly number (the #N shown in the UI) within a board. Resolves the number to the task UUID and returns full details (same shape as get_task). Handy when you know the #N but not the UUID. |
| get_task_commentsA | Get all comments for a task ordered by creation time. Each comment includes id, content, createdAt, updatedAt and the author (user). |
| get_task_worklogsA | Get time-tracking worklogs for a task. Each entry has id, minutes, comment, workedAt, and the author. |
| get_task_activityA | Get the audit trail for a task: who changed what and when (status/priority/assignee/field changes, comments, worklogs), newest first. |
| get_board_activityA | Get the audit trail for a whole board: task/stage/member changes across the board, newest first. Requires ADMIN/OWNER role on that board. |
| list_board_membersA | List all members of a board with their roles (OWNER, ADMIN, MEMBER, VIEWER). Use list_boards first to obtain the board id. |
| update_board_memberA | Update board member role/title. Requires ADMIN/OWNER on that board. |
| remove_board_memberA | Remove a member from board. Requires ADMIN/OWNER. |
| list_board_invitationsA | List pending/accepted/declined invitations for a board. Requires ADMIN/OWNER. |
| create_board_invitationA | Invite a user to board by email with role ADMIN/MEMBER/VIEWER. Requires ADMIN/OWNER. |
| revoke_board_invitationA | Revoke an invitation by id. Requires ADMIN/OWNER. |
| list_my_invitationsA | List board invitations sent to the current user (pending/accepted/declined), with the inviting board and role. |
| accept_board_invitationA | Accept a pending board invitation sent to the current user. Returns the created board membership. |
| decline_board_invitationA | Decline a pending board invitation sent to the current user. |
| get_current_userA | Get the profile of the currently authenticated user (id, email, firstName, lastName, avatarUrl). |
| list_board_tagsA | Get the tag vocabulary of a board. Tags belong to the board and are shared by everyone on it — the same name on another board is a different tag. Returns id and name; use the ids in create_task/update_task tag_ids, or just pass tag_names and let the board pick up new ones. |
| list_board_columnsA | Get kanban columns for a board by slug. Returns id and name for each column — use these IDs in create_task and update_task. |
| create_board_stageA | Create a stage on a board. Requires ADMIN/OWNER role on that board. |
| materialize_board_backlog_stageB | Create (or fetch, if it already exists) the special backlog stage for a board — holds tasks that aren't part of any active/planned stage. Requires ADMIN/OWNER role on that board. |
| update_board_stageB | Rename a board stage. |
| delete_board_stageB | Delete a board stage. |
| reorder_board_stagesA | Reorder stages on a board by passing full ordered list of stage IDs. |
| start_board_stageA | Set stage status to ACTIVE. |
| complete_board_stageA | Set stage status to COMPLETED (frozen). |
| reopen_board_stageA | Reopen stage from COMPLETED to ACTIVE. |
| create_taskA | Create a new task on a board. Requires the board slug and a title. Returns the created task with its generated id and number. |
| update_taskA | Update one or more fields of an existing task. Pass only the fields you want to change — all are optional. Returns the updated task. |
| reorder_taskA | Move/reorder a task inside a column (kanban drag-and-drop equivalent). |
| delete_taskA | Permanently delete a task by its UUID. Only the task creator or a board OWNER/ADMIN can delete tasks. Returns a confirmation message. |
| add_task_commentA | Post a comment on a task. Returns the created comment with author info. |
| get_task_summaryA | Read a task's summary — the single digest shown in its Summary tab. Returns { summary, summaryUpdatedAt, summaryAuthor }. |
| set_task_summaryA | Write or replace a task's summary: a concise digest of the task's current state and what has been done, shown in the task's Summary tab. Markdown supported. Replaces any previous summary (one per task). |
| update_task_commentA | Update an existing task comment. |
| delete_task_commentA | Delete a comment from a task. You can only delete your own comments. |
| add_task_worklogA | Log time spent on a task. minutes must be > 0 and ≤ 1440 (24 hours). Returns the created worklog entry. |
| update_task_worklogA | Update an existing worklog entry for a task. |
| delete_task_worklogA | Delete a worklog entry from a task. |
| create_boardA | Create a new board. Optionally supply an array of column names (defaults to a standard set). Returns the created board with its generated slug. |
| update_boardA | Update a board's name or column list. Pass only the fields you want to change. Changing columns reorders/renames them. Returns the updated board. |
| delete_boardA | Delete a board by UUID. |
| archive_boardB | Archive a board by UUID. |
| unarchive_boardB | Unarchive a board by UUID. |
| list_tagsA | List tags across every board you can access. Tags belong to boards, so the same name on two boards is two different tags — each item carries its board. For one board use list_board_tags. |
| create_board_tagA | Add a tag to a board's vocabulary. Tags live on the board and are shared by everyone on it. Usually you don't need this: create_task/update_task tag_names create missing tags by themselves. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create_task_from_pr | Draft a well-scoped task from pull request context |
| triage_board_backlog | Suggest a backlog triage sequence for one board |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| board_config_schema | Board config schema and permission keys |
| task_mutation_schema | Expected MCP args for task create/update tools |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/gonnagetapower/kelvia-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server