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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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