Skip to main content
Glama
mats-i

Checkvist MCP Server

by mats-i
README.md
# Checkvist MCP Server

MCP server for Checkvist API integration, enabling Claude to read and write to Checkvist checklists.

## Features

- Complete checklist CRUD operations (list, get, create, update, delete)
- Complete task management (create, update, close, reopen, delete, invalidate)
- Repeating task configuration
- Task assignment to users
- Import multiple tasks at once
- Complete notes/comments management (get, create, update, delete)
- User profile information
- Full support for Checkvist's smart syntax (^due dates, #tags, !priority)
- Helpful error messages with actionable tips

## Installation

```bash
npm install
npm run build
```

## Configuration

1. Get your Checkvist API key from your profile page: https://checkvist.com/auth/profile
2. Create a `.env` file:

```bash
cp .env.example .env
```

3. Edit `.env` and add your credentials:

```
CHECKVIST_USERNAME=your_email@example.com
CHECKVIST_API_KEY=your_api_key_here
```

## Claude Desktop Configuration

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "checkvist": {
      "command": "node",
      "args": [
        "/Users/matsingerdal/Developer/GitHub/checkvist-mcp/dist/index.js"
      ]
    }
  }
}
```

## Available Tools

### Checklist Management
- `checkvist_list_checklists` - Get all checklists (read-only)
- `checkvist_get_checklist` - Get specific checklist info (read-only)
- `checkvist_create_checklist` - Create a new checklist
- `checkvist_update_checklist` - Update checklist name or visibility
- `checkvist_delete_checklist` - Delete checklist (marks for deletion)

### Task Management
- `checkvist_get_tasks` - Get all tasks as raw JSON (read-only)
- `checkvist_get_tasks_summary` - Get all tasks in readable text format (read-only)
- `checkvist_get_tasks_paginated` - Get tasks in pages to read entire large checklists (RECOMMENDED, read-only)
- `checkvist_get_task` - Get specific task with parent hierarchy as JSON (read-only)
- `checkvist_get_task_tree` - Get a specific task and ALL its subtasks in readable text (read-only)
- `checkvist_create_task` - Create a new task (supports assignee_ids)
- `checkvist_update_task` - Update existing task (supports assignee_ids)
- `checkvist_close_task` - Mark task as complete
- `checkvist_reopen_task` - Reopen completed task
- `checkvist_delete_task` - Delete task and children
- `checkvist_invalidate_task` - Mark task as invalidated (status=2)
- `checkvist_set_repeating_task` - Configure repeating task schedule
- `checkvist_import_tasks` - Import multiple tasks at once

### Notes/Comments
- `checkvist_get_notes` - Get all notes for a task (read-only)
- `checkvist_create_note` - Add a note to a task
- `checkvist_update_note` - Update existing note
- `checkvist_delete_note` - Delete a note

### User Information
- `checkvist_get_current_user` - Get authenticated user profile (read-only)

## Reading Large Checklists

For large checklists with many tasks, use the right approach based on checklist size:

### Strategy 1: Quick Preview (BEST for VERY large checklists) ⭐

**`checkvist_get_tasks_summary` with `preview: true`**
- Shows **ONLY top-level tasks** (no subtasks)
- Minimal data, perfect for huge checklists (1000+ tasks)
- Automatically uses compact mode
- Get quick overview, then drill down with get_task_tree
- Example:
  ```
  checkvist_get_tasks_summary(
    checklist_id: 941803,
    preview: true
  )
  ```
- Output:
  ```
  📋 Checklist Summary (5 top-level tasks, 847 total)
  ⚡ PREVIEW MODE: Showing only top-level tasks

  [ ] Main Project [12345]
  [ ] Archive [12350]
  [ ] Notes [12351]
  [ ] Resources [12352]
  [ ] Templates [12353]

  💡 TIP: Use checkvist_get_task_tree with a specific task ID to explore subtasks
  ```

### Strategy 2: See Full Structure (for medium/large checklists)

**`checkvist_get_tasks_summary` with `compact: true`**
- Shows **ENTIRE checklist** in ultra-compact format
- Only displays: status, title, and ID (no metadata, no notes)
- Works for hundreds of tasks
- Example:
  ```
  checkvist_get_tasks_summary(
    checklist_id: 941803,
    compact: true,
    max_depth: 2
  )
  ```

### Strategy 3: Explore Specific Branches

**`checkvist_get_task_tree`** (for detailed view of one branch)
- Get ONE specific task and ALL its subtasks with full details
- Shows metadata, notes, due dates, priorities, tags
- Perfect when you found interesting task in compact view
- Example: `checkvist_get_task_tree(checklist_id: 941803, task_id: 71218558)`

### Strategy 4: Full Details for Smaller Checklists

**`checkvist_get_tasks_summary` with `compact: false`** (default)
- Shows everything with full metadata and notes
- Only use for checklists with <50 tasks
- May be too large for bigger checklists

**`checkvist_get_tasks`**
- Returns raw JSON structure
- May be stored in files that are harder to read
- Use only when you need to process JSON programmatically

### Recommended Workflows

**Option 1: Read Everything in Pages** ⭐ (BEST for reading entire checklist)
```
1. checkvist_get_tasks_paginated(checklist_id: X, page: 1)
   → Shows first 3 top-level tasks with ALL their subtasks
2. checkvist_get_tasks_paginated(checklist_id: X, page: 2)
   → Shows next 3 top-level tasks with ALL their subtasks
3. Continue until you've read all pages
```
Claude can read ALL tasks this way without hitting size limits!

**Option 2: Preview + Drill Down** (faster for finding specific info)
```
1. checkvist_get_tasks_summary(checklist_id: X, preview: true)
   → See all top-level tasks (just 5-10 items)
2. Find interesting task in the preview
3. checkvist_get_task_tree(checklist_id: X, task_id: Y)
   → Get all details for that specific branch
```

## Smart Syntax Support

Checkvist supports smart syntax in task content:

- `^tomorrow` - Set due date
- `#tag` - Add tag
- `!3` - Set priority (0-9)
- `@username` - Assign to user

Enable parsing with `parse_tasks: true` or `parse: true` parameters.

## Development

```bash
# Watch mode
npm run dev

# Build
npm run build

# Start
npm start
```

## API Documentation

Full Checkvist API docs: https://checkvist.com/auth/api

TDQS

B3.2/5.0

Scored across 25 tools

Disambiguation3/5

There are several overlapping task retrieval tools (get_tasks, get_tasks_summary, get_tasks_paginated, list_top_level_tasks, get_task, get_task_tree) that differ mainly in output format and verbosity. The descriptions help, but an agent could easily select the wrong one, especially for large checklists.

Naming Consistency5/5

All 25 tools follow the consistent pattern checkvist_<verb>_<noun>, with clear verbs like get, list, create, update, delete, close, reopen. No mixed conventions or vague names.

Tool Count3/5

25 tools is on the heavy side for a checklist app. Many retrieval variants (raw JSON, summary, paginated, top-level, task tree) could be consolidated into fewer tools, reducing cognitive load without losing functionality.

Completeness4/5

The tool surface covers CRUD for checklists, tasks, and notes, plus useful extras like stats, import, and repeating tasks. However, there is no explicit archive/restore checklist operation (despite filtering by archived) and no task reordering/moving, which are common in outliner apps.

Maintenance

ActivityInactive
ResponsivenessNo issues