Skip to main content

Tools

info

This page documents all 43 tools available in MCP Task Server, organised by category.

MCP Task Server series

  1. MCP Task Server
  2. Architecture
  3. Tools - You are here
  4. Multi-agent coordination
  5. Project scaffolding

Usage

Invoke any tool with call <tool_name>:

CommandDescription
call helpList all 43 available tools
call list_tasksShow all tasks
call next_taskGet recommended next task
call diagnoseCheck server configuration
call show_memoryView shared context memories
call init_projectInitialise 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

ToolDescription
init_projectInitialise project with agent-kit, memory_bank, and cursor rules
sync_rulesSync .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

ToolDescriptionPreferences
list_tasksList all tasks, optionally filtered by status or assigneehint
get_taskGet a specific task by ID with subtaskshint
add_taskCreate a new taskhint
update_taskUpdate task title, description, status, priority, or metadatahint
complete_taskMark a task as completed
next_taskGet the next recommended task based on priority/dependencieshint

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

ToolDescription
claim_taskClaim a task for the calling agent
release_taskRelease a claimed task
handoff_taskTransfer task to another role
review_taskReview a task (Judge role)
approve_taskApprove completed task (Judge role)
reject_taskReject 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

ToolDescription
expand_taskGet prompt to break task into subtasks
add_subtaskAdd a subtask to existing task
set_dependenciesSet task dependencies
remove_taskRemove 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.

ToolDescriptionPreferences
parse_prdGet prompt to parse PRD into tasksfull
research_taskGet prompt to research a taskfull
analyse_complexityGet prompt to analyse task complexityfull
check_complianceCheck file/folder against user preferences from shared contextfull
analyse_projectAnalyse project structure and suggest memory_bank updatesfull

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

ToolDescription
helpList all available tools with descriptions and parameters
get_versionGet server version and workspace detection info
diagnoseDiagnose MCP configuration, paths, and workspace detection
show_memoryShow shared context memories from ~/.cursor/shared-context.json
update_memoryCreate, 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:

ActionWhat it does
createAdd new memory with next available ID
updateUpdate existing memory by ID
deleteRemove memory by ID
syncCreate or update by title match (recommended)
migrateOne-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

ToolDescription
set_projectSet project context (global or workspace-specific)
get_projectGet current project (checks workspace first, then global)
tag_all_tasksBulk 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

ToolDescription
show_content_contextRead global content context file
update_content_contextUpdate 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

ToolDescription
statsFetch work activity statistics from stats dashboard
usageFetch 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 } }
FieldDescription
todayHours, commits, pipelines for today
thisWeekWeekly totals
streakCurrent and longest streak
recommendationcontinue/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

ToolDescription
slack_notifyPost a message to Slack (returns thread_ts for follow-up)
slack_check_repliesGet replies to a specific thread
slack_wait_replyBlock and poll until reply received or timeout
slack_askPost message and wait for reply in one call (for conversations)
slack_list_channelsList available channels
slack_add_reactionAdd emoji reaction to a message
slack_get_userGet user profile information
slack_channel_historyGet 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

CategoryToolsPurpose
Project2Initialisation and scaffolding
Core6Basic task CRUD and navigation
Multi-agent6Role-based coordination
Breakdown4Task decomposition and dependencies
Prompts5AI-assisted analysis with preferences
Utility5Help, diagnostics, and memory
Project Context3Multi-project management
Content Context2Content inventory management
Work Stats2Activity tracking and billing
Slack8Notifications and conversations
Total43