Tools
info
This page documents all 43 tools available in MCP Task Server, organised by category.
MCP Task Server series
- MCP Task Server
- Architecture
- Tools - You are here
- Multi-agent coordination
- Project scaffolding
Usage
Invoke any tool with call <tool_name>:
| Command | Description |
|---|---|
call help | List all 43 available tools |
call list_tasks | Show all tasks |
call next_task | Get recommended next task |
call diagnose | Check server configuration |
call show_memory | View shared context memories |
call init_project | Initialise project structure |
Why use call?
Using just help may trigger Cursor's generic help. The call prefix ensures the MCP tool is invoked.
Project initialisation
| Tool | Description |
|---|---|
init_project | Initialise project with agent-kit, memory_bank, and cursor rules |
sync_rules | Sync .cursor/rules/ to latest templates (for existing projects) |
# Initialise with auto-detected project name
call init_project
# Initialise with custom name
call init_project({ project_name: "my-app" })
# Force overwrite existing files
call init_project({ force: true })
# Sync rules to existing project (add missing only)
call sync_rules
# Preview what would change
call sync_rules({ dry_run: true })
# Update existing rules to latest templates
call sync_rules({ update_existing: true })
Core tools
| Tool | Description | Preferences |
|---|---|---|
list_tasks | List all tasks, optionally filtered by status or assignee | hint |
get_task | Get a specific task by ID with subtasks | hint |
add_task | Create a new task | hint |
update_task | Update task title, description, status, priority, or metadata | hint |
complete_task | Mark a task as completed | |
next_task | Get the next recommended task based on priority/dependencies | hint |
Examples
# List all tasks
call list_tasks
# Filter by status
call list_tasks({ status: "in-progress" })
# Get specific task with subtasks
call get_task({ id: "3" })
# Add a new task
call add_task({
title: "Build login page",
description: "Create a secure login page with form validation",
priority: "high"
})
# Update task status
call update_task({ id: "3", status: "done" })
# Get next recommended task
call next_task
Multi-agent coordination
| Tool | Description |
|---|---|
claim_task | Claim a task for the calling agent |
release_task | Release a claimed task |
handoff_task | Transfer task to another role |
review_task | Review a task (Judge role) |
approve_task | Approve completed task (Judge role) |
reject_task | Reject with feedback (Judge role) |
Examples
# Claim a task as worker
call claim_task({
task_id: "5",
agent_id: "worker-1",
role: "worker"
})
# Release a task
call release_task({ task_id: "5" })
# Hand off to another role
call handoff_task({
task_id: "5",
to_role: "judge",
notes: "Ready for review"
})
# Review as judge
call review_task({ task_id: "5", agent_id: "judge-1", role: "judge" })
# Approve or reject
call approve_task({ task_id: "5" })
call reject_task({ task_id: "5", feedback: "Tests are missing" })
Task breakdown
| Tool | Description |
|---|---|
expand_task | Get prompt to break task into subtasks |
add_subtask | Add a subtask to existing task |
set_dependencies | Set task dependencies |
remove_task | Remove a task |
Examples
# Get expansion prompt for a task
call expand_task({ id: "3" })
# Add a subtask
call add_subtask({
parent_id: "3",
title: "Add form validation",
description: "Client-side and server-side validation"
})
# Set dependencies
call set_dependencies({ id: "5", dependencies: ["3", "4"] })
# Remove a task
call remove_task({ id: "7" })
Prompt-based tools
These tools generate prompts that include your preferences from shared context.
| Tool | Description | Preferences |
|---|---|---|
parse_prd | Get prompt to parse PRD into tasks | full |
research_task | Get prompt to research a task | full |
analyse_complexity | Get prompt to analyse task complexity | full |
check_compliance | Check file/folder against user preferences from shared context | full |
analyse_project | Analyse project structure and suggest memory_bank updates | full |
Examples
# Parse a PRD document into tasks
call parse_prd({ content: "..." })
# Research a task before implementation
call research_task({ id: "3" })
# Analyse task complexity
call analyse_complexity({ id: "3" })
# Check compliance with preferences
call check_compliance({ path: "README.md" })
# Review and fix issues
call check_compliance({ path: "README.md", fix: true })
# Review a folder
call check_compliance({ path: "docs/" })
# Analyse project and get suggestions
call analyse_project
# Focus on specific area
call analyse_project({ focus: "tech" }) # Just tech stack
call analyse_project({ focus: "brief" }) # Just project brief
call analyse_project({ focus: "active" }) # Just current focus
call analyse_project({ focus: "architecture" }) # Just architecture
Utility tools
| Tool | Description |
|---|---|
help | List all available tools with descriptions and parameters |
get_version | Get server version and workspace detection info |
diagnose | Diagnose MCP configuration, paths, and workspace detection |
show_memory | Show shared context memories from ~/.cursor/shared-context.json |
update_memory | Create, update, sync, delete, or migrate memories |
Examples
# List all tools
call help
# Returns: { server, version, usage, tool_count: 43, tools: [...] }
# Get help for specific tool
call help({ tool: "update_memory" })
# Returns: { name, description, usage: "call update_memory", parameters: {...} }
# Check version and workspace
call get_version
# Returns: { version: "x.x.x", workspace: { root: "/path", source: "found .git" } }
# Diagnose configuration
call diagnose # Basic info
call diagnose({ verbose: true }) # Include env vars and file checks
# Show all memories
call show_memory
# Search for specific memories
call show_memory({ search: "writing" })
# Force reload from file (clears cache)
call show_memory({ reload: true })
Memory management
Memories use simple sequential IDs (1, 2, 3...) managed by the server:
| Action | What it does |
|---|---|
create | Add new memory with next available ID |
update | Update existing memory by ID |
delete | Remove memory by ID |
sync | Create or update by title match (recommended) |
migrate | One-time conversion of old IDs to sequential |
# Sync a memory by title (recommended - avoids duplicates)
call update_memory({
action: "sync",
title: "Writing preferences",
content: "British English, ISO dates, no emojis..."
})
# Returns: { status: "synced_new", memory: { id: "1", ... } }
# Create a new memory (generates sequential ID)
call update_memory({
action: "create",
title: "Project conventions",
content: "Use TypeScript strict mode."
})
# Update an existing memory by ID
call update_memory({
action: "update",
id: "1",
title: "Writing preferences",
content: "Updated content..."
})
# Delete a memory
call update_memory({ action: "delete", id: "1" })
# Migrate old IDs to sequential (one-time)
call update_memory({ action: "migrate" })
# Returns: { status: "migrated", changes: [...] }
Project context tools
| Tool | Description |
|---|---|
set_project | Set project context (global or workspace-specific) |
get_project | Get current project (checks workspace first, then global) |
tag_all_tasks | Bulk tag tasks with a project name (for migration) |
Examples
# Hub workflow: Set global project (switchable)
call set_project({ project: "mcp-task-server" })
# Returns: { project: "mcp-task-server", binding: "global" }
# Dedicated workspace: Bind project to workspace path
call set_project({ project: "mcp-task-server", workspace: "/Users/yourname/Projects/tools/mcp-task-server" })
# Returns: { project: "mcp-task-server", binding: "workspace", workspace: "..." }
# Get project: Checks workspace mapping first, then global
call get_project({ workspace: "/Users/yourname/Projects/tools/mcp-task-server" })
# Returns: { current_project: "mcp-task-server", source: "workspace" }
call get_project()
# Returns: { current_project: "coach-platform", source: "global" }
# Bulk tag all unassigned tasks with a project
call tag_all_tasks({ project: "coach-platform" })
# Returns: { tagged: 100, skipped: 0, message: "Tagged 100 tasks..." }
Content context tools
| Tool | Description |
|---|---|
show_content_context | Read global content context file |
update_content_context | Update a section of the content context |
The content context file (~/.cursor/content-context.md) stores content inventory, themes, and locations for content creators.
Examples
# Read content context
call show_content_context
# Returns: { exists: true, path: "~/.cursor/content-context.md", content: "..." }
# Update a section
call update_content_context({ section: "Published Content", content: "- Post 1\n- Post 2" })
Work stats tools
| Tool | Description |
|---|---|
stats | Fetch work activity statistics from stats dashboard |
usage | Fetch Cursor AI billing and spend limit info |
Examples
# Quick check - today's hours and recommendation
call stats
# Returns: { today: { hours: 3.5 }, recommendation: { status: "continue", message: "..." } }
# Detailed with costs and billing period
call stats({ detailed: true })
# Returns: Full stats including costs, period, and totals
# Cursor billing - spend limit and usage
call usage
# Returns: { plan: "Ultra", onDemand: { used: 909.21, limit: 1000, remaining: 90.79, percentUsed: 91 } }
| Field | Description |
|---|---|
today | Hours, commits, pipelines for today |
thisWeek | Weekly totals |
streak | Current and longest streak |
recommendation | continue/pause/stop with message |
costs (detailed) | Usage and subscription costs |
period (detailed) | Billing cycle start/end dates |
totals (detailed) | Active days, estimated hours, projects |
Slack tools
| Tool | Description |
|---|---|
slack_notify | Post a message to Slack (returns thread_ts for follow-up) |
slack_check_replies | Get replies to a specific thread |
slack_wait_reply | Block and poll until reply received or timeout |
slack_ask | Post message and wait for reply in one call (for conversations) |
slack_list_channels | List available channels |
slack_add_reaction | Add emoji reaction to a message |
slack_get_user | Get user profile information |
slack_channel_history | Get recent channel messages |
Configuration
Set these environment variables in ~/.cursor/mcp.json:
{
"mcpServers": {
"task-server": {
"command": "npx",
"args": ["-y", "mcp-task-server"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_CHANNEL_ID": "C..."
}
}
}
}
Required Slack Bot Scopes: channels:history, channels:read, chat:write, reactions:write, users:read
Examples
# Post to default channel
call slack_notify({ message: "[QUESTION] Need input on auth approach" })
# Returns: { ok: true, ts: "1234567890.123456", thread_ts: "1234567890.123456" }
# Check for replies
call slack_check_replies({ channel_id: "C...", thread_ts: "1234567890.123456" })
# Returns: { reply_count: 2, replies: [{ user: "U...", text: "Use OAuth" }] }
# React to acknowledge
call slack_add_reaction({ channel_id: "C...", timestamp: "1234567890.123456", emoji: "thumbsup" })
# Wait for reply (blocks until reply or timeout)
call slack_wait_reply({ thread_ts: "1234567890.123456", timeout: 1800 })
# Returns when user replies, or after 30 min timeout
# { status: "reply_received", replies: [{ user: "U...", text: "Use OAuth" }], waited_seconds: 45 }
# Conversation mode - post and wait in one call
call slack_ask({ message: "Should we use OAuth or JWT?" })
# Returns: { reply: "Use OAuth", thread_ts: "..." }
# Continue the conversation in same thread
call slack_ask({ message: "What about refresh tokens?", thread_ts: "..." })
# Returns: { reply: "Use rotating refresh tokens" }
tip
The handoff_task tool automatically posts to Slack when configured.
Tool categories summary
| Category | Tools | Purpose |
|---|---|---|
| Project | 2 | Initialisation and scaffolding |
| Core | 6 | Basic task CRUD and navigation |
| Multi-agent | 6 | Role-based coordination |
| Breakdown | 4 | Task decomposition and dependencies |
| Prompts | 5 | AI-assisted analysis with preferences |
| Utility | 5 | Help, diagnostics, and memory |
| Project Context | 3 | Multi-project management |
| Content Context | 2 | Content inventory management |
| Work Stats | 2 | Activity tracking and billing |
| Slack | 8 | Notifications and conversations |
| Total | 43 |