# laver-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/Developyn/laver-mcp  
**GitHub Stars:** 0  
**npm Downloads (last month):** 287  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/laver-mcp

## Description
Kanban boards, sprints, tickets and a team wiki, with versioned writes for concurrent agents.

## Tools
Capabilities this server exposes over MCP:

- **list_workspaces** — Where to start when you have no uuids
- **list_boards** — The boards in a workspace
- **get_board** — A board with its status columns, labels, members and tickets
- **list_tickets** — Tickets on a board, filterable, paged — `updated_since` is how you follow a board
- **list_workspace_tickets** — Triage across every board at once — `overdue`, `unassigned`, or free text
- **get_ticket** — One ticket in full, its subtasks, **including its `version`
- **get_ticket_comments** — Comments and activity history
- **get_ticket_flow** — How long the ticket has spent in each column
- **list_custom_fields** — A board's custom field definitions — the uuids `update_ticket` writes against
- **list_labels** — Every label in the workspace, not only the ones already used on one board
- **search** — Boards, tickets, wiki pages and comments across a whole workspace at once
- **create_ticket** — status` takes the column name, or pass `status_uuid`; markdown in `description` is parsed
- **update_ticket** — Needs `version`; markdown in `description` is parsed; `custom_fields` is keyed by field uuid and **replaces** the whole object
- **move_ticket** — Needs `version`, and a column — neither column is a 400
- **comment_on_ticket** — Markdown in `body` is parsed; no `version`, so it cannot 409
- **update_comment** — Your own comments only; replaces the whole body and is marked as edited
- **delete_comment** — Your own comments only; to the trash, and nothing here restores one
- **mark_comments_read** — Clears this ticket's unread badge for the user the key acts as
- **add_subtask** — One checklist item, appended — plain text, not markdown
- **update_subtask** — Tick it off (`is_done`), rename it, or move it up the list
- **delete_subtask** — Not** recoverable — a checklist item has no trash
- **archive_ticket** — To the trash — **recoverable** for 30 days
- **delete_ticket** — Destroys one already in the trash — **permanent
- **create_board** — Optionally from a template — `crm` or `sales-leads
- **link_tickets** — "this before that" — direction is `blocks` or `blocked_by
- **unlink_tickets** — From either end, and removes **every** kind of link on the pair
- **create_status** — A new column, appended to the right-hand end
- **update_status** — Rename, recolour, or set `is_complete` — a board has at most one
- **reorder_statuses** — The **complete** list of uuids, in order; a stale list is a 409
- **delete_status** — The column must be empty, and a board keeps one
- **create_group** — A swimlane; there is no rename route, so a wrong name is deleted and remade
- **reorder_groups** — Same complete-list contract as `reorder_statuses
- **delete_group** — Tickets in it survive, ungrouped — and their versions all move
- **create_custom_field** — Workspace owner or admin; `type` cannot be changed afterwards
- **update_custom_field** — Rename, reorder, or replace a select's whole `options` list
- **delete_custom_field** — Takes every ticket's value in that field with it — no trash, no restore
- **create_label** — A hex colour is required; names are unique ignoring case and space
- **update_label** — Renames it **everywhere** — one label, not a copy per board
- **delete_label** — Removes it from every ticket that carries it
- **list_ticket_attachments** — Name, type, size and uuid — never the bytes
- **get_ticket_attachment** — Text inline, an image as an image block, anything else via `save_to
- **upload_ticket_attachment** — file_path` for a file on disk, or `text` + `filename` for something written
- **delete_ticket_attachment** — To the trash for 30 days; there is no restore tool
- **list_automations** — The rules on a board, each with its `version
- **get_automation** — One rule in full — the conditions and actions an edit replaces
- **list_automation_runs** — What a rule has actually done, newest first
- **create_automation** — Owner or admin only — and see below before calling it
- **update_automation** — Needs `version`; `enabled: false` is the reversible stop
- **delete_automation** — Needs `version`, and takes the rule's whole run history with it

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "laver-mcp": {
    "command": "npx",
    "args": ["-y","@laver/mcp"],
    "env": {
      "LAVER_API_KEY": "",
      "LAVER_API_KEY_FILE": "",
      "LAVER_API_URL": ""
    }
  }
}
```

**Requires environment variables:** `LAVER_API_KEY`, `LAVER_API_KEY_FILE`, `LAVER_API_URL` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What laver-mcp MCP server does

The laver-mcp MCP server exposes Laver workspaces through MCP tools. Agents can discover workspaces and boards, inspect board structure, list or search tickets, read comments and activity, and search across boards, tickets, wiki pages, and comments. Ticket data includes subtasks and a version value that is needed for certain writes.

Writing tools cover ticket creation and updates, column changes, comments, subtasks, archiving, deletion, ticket relationships, and board status management. Agents can create boards from the `crm` or `sales-leads` templates, add or reorder columns, and link tickets with blocking relationships. Wiki content is available through the workspace search and wiki-tree operations described in the project documentation.

## How it works

Each tool call is forwarded to the same public REST API used by the Laver web application. The process keeps no local state and does not maintain a cache. API errors, including conflicts, are returned from Laver so an agent can re-read current data and retry when appropriate.

For incremental board monitoring, call `list_tickets` with `updated_since` set to the previous response's `server_time`. Workspace-wide triage is available through `list_workspace_tickets`, which can filter for overdue or unassigned tickets and supports free-text filtering. Results can be narrowed with options such as `include_tasks: false`, `include_descriptions: false`, status, limits, wiki depth, or a parent page UUID to reduce context usage.

Ticket updates and moves require the current ticket version. Custom fields are addressed by field UUID, and an update replaces the complete custom-field object. Status reordering requires the full current UUID list; stale data can produce a 409. Comments do not require a version, while comment editing and deletion are limited to the API key owner's comments.

## Setup and configuration

Create a workspace-scoped API key in Laver under Admin → API keys. The key acts with the permissions of the person who created it. Run the published package with a standard MCP stdio configuration:

```json
{
  "mcpServers": {
    "laver": {
      "command": "npx",
      "args": ["-y", "@laver/mcp"],
      "env": { "LAVER_API_KEY": "your key here" }
    }
  }
}
```

`LAVER_API_KEY` supplies the credential. `LAVER_API_KEY_FILE` can instead point to a file containing the key or to a `.env`-style file with a `LAVER_API_KEY` assignment. `LAVER_API_URL` changes the API host and defaults to `https://api.laver.app`; it must use HTTPS unless the host is localhost.

Clients load MCP tools when they start. After adding the server, start a new session or reconnect the client's MCP connection before expecting the tools to appear.

## Tools and capabilities

- Discover workspaces, boards, statuses, labels, members, custom fields, tickets, comments, and ticket flow.
- Search workspace boards, tickets, wiki pages, and comments.
- Create, update, move, archive, and permanently delete tickets.
- Add, edit, reorder, and remove subtasks.
- Post, edit, delete, and mark comments as read.
- Create boards, manage status columns, and link or unlink tickets.
- Follow board changes with `updated_since` and triage overdue or unassigned work.

## Limitations and notes

Archived tickets remain recoverable for 30 days, but deleting a ticket from the trash is permanent. Deleted subtasks cannot be recovered. A status cannot be deleted unless it is empty, and each board must retain one status column. Unlinking a ticket pair removes every link type between them.

`list_workspace_tickets` is limited to one page, with 50 results by default and 200 at most. Ticket-flow totals can be affected by overlapping work, and gaps indicate disagreement between recorded history and the current column. There is no MCP tool for Laver's server-sent event stream; following changes requires another tool call.

_Full upstream README: https://allmcps.com/mcp/laver-mcp/readme_

