# Laver MCP server

> Lets an AI agent manage kanban boards, tickets, sprints, and workspace wikis via the Laver REST API.

- Repository: https://github.com/Developyn/laver-mcp
- Page: https://hostedmcp.org/servers/developyn/laver-mcp
- Transport: stdio
- Stars: 0
- License: MIT
- Latest version: 0.5.0

## Install

### Claude Code

```sh
claude mcp add --env LAVER_API_KEY=<YOUR_LAVER_API_KEY> laver-mcp -- npx -y @laver/mcp
```

### Cursor (`~/.cursor/mcp.json`)

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

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "laver-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@laver/mcp"
      ],
      "env": {
        "LAVER_API_KEY": "<YOUR_LAVER_API_KEY>"
      }
    }
  }
}
```

### Claude Desktop (`claude_desktop_config.json`)

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

### Codex (`~/.codex/config.toml`)

```toml
[mcp_servers.laver-mcp]
command = "npx"
args = ["-y", "@laver/mcp"]

[mcp_servers.laver-mcp.env]
LAVER_API_KEY = "<YOUR_LAVER_API_KEY>"
```

### Gemini CLI (`~/.gemini/settings.json`)

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

## Environment variables

| Name | Required | Secret | Description |
|---|---|---|---|
| `LAVER_API_KEY` | yes | yes | A workspace-scoped API key, created in Laver under Admin → API keys. It acts as the person who created it, so it holds exactly their access and can be revoked without touching their account. Supply this or LAVER_API_KEY_FILE. |
| `LAVER_API_KEY_FILE` | no | no | Alternative to LAVER_API_KEY: a path to a file holding nothing but the key, or a .env-style file carrying a LAVER_API_KEY= line. Use this to keep the key out of your client's config file. |
| `LAVER_API_URL` | no | no | Overrides the API host. Defaults to https://api.laver.app, and must be https except for localhost. |

## Tools (49)

- `list_workspaces`
- `list_boards`
- `get_board`
- `list_tickets`
- `list_workspace_tickets`
- `get_ticket`
- `get_ticket_comments`
- `get_ticket_flow`
- `list_custom_fields`
- `list_labels`
- `search`
- `create_ticket`
- `update_ticket`
- `move_ticket`
- `comment_on_ticket`
- `update_comment`
- `delete_comment`
- `mark_comments_read`
- `add_subtask`
- `update_subtask`
- `delete_subtask`
- `archive_ticket`
- `delete_ticket`
- `create_board`
- `link_tickets`
- `unlink_tickets`
- `create_status`
- `update_status`
- `reorder_statuses`
- `delete_status`
- `create_group`
- `reorder_groups`
- `delete_group`
- `create_custom_field`
- `update_custom_field`
- `delete_custom_field`
- `create_label`
- `update_label`
- `delete_label`
- `list_ticket_attachments`
- `get_ticket_attachment`
- `upload_ticket_attachment`
- `delete_ticket_attachment`
- `list_automations`
- `get_automation`
- `list_automation_runs`
- `create_automation`
- `update_automation`
- `delete_automation`

## FAQ

### Does the server maintain a local cache?

No, every tool is a direct call to the public REST API, meaning there is no local state or cache.
