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: "muppitify-coach", source: "global" }

# Bulk tag all unassigned tasks with a project
call tag_all_tasks({ project: "muppitify-coach" })
# 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