Checkvist MCP Server
# 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
Scored across 25 tools
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.
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.
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.
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.