---
title: MCP Tools
sidebarTitle: "MCP Tools"
---

# MCP Tools

This document provides an overview of the MCP (Machine-to-Machine Communication Protocol) interface for the Task Master application. The MCP interface is defined in the `mcp-server/` directory and exposes the application's core functionalities as a set of tools that can be called remotely.

## Core Concepts

The MCP interface is built on top of the `fastmcp` library and registers a set of tools that correspond to the core functionalities of the Task Master application. These tools are defined in the `mcp-server/src/tools/` directory and are registered with the MCP server in `mcp-server/src/tools/index.js`.

Each tool is defined with a name, a description, and a set of parameters that are validated using the `zod` library. The `execute` function of each tool calls the corresponding core logic function from `scripts/modules/task-manager.js`.

## Configurable Tool Loading

To optimize LLM context usage, you can control which Task Master MCP tools are loaded using the `TASK_MASTER_TOOLS` environment variable. This is particularly useful when working with LLMs that have context limits or when you only need a subset of tools.

### Configuration Modes

#### All Tools (Default)
Loads all 36 available tools. Use when you need full Task Master functionality.

```json
{
  "mcpServers": {
    "task-master-ai": {
      "command": "npx",
      "args": ["-y", "task-master-ai"],
      "env": {
        "TASK_MASTER_TOOLS": "all",
        "ANTHROPIC_API_KEY": "your_key_here"
      }
    }
  }
}
```

If `TASK_MASTER_TOOLS` is not set, all tools are loaded by default.

#### Core Tools (Lean Mode)
Loads only 7 essential tools for daily development. Ideal for minimal context usage.

**Core tools included:**
- `get_tasks` - List all tasks
- `next_task` - Find the next task to work on
- `get_task` - Get detailed task information
- `set_task_status` - Update task status
- `update_subtask` - Add implementation notes
- `parse_prd` - Generate tasks from PRD
- `expand_task` - Break down tasks into subtasks

```json
{
  "mcpServers": {
    "task-master-ai": {
      "command": "npx",
      "args": ["-y", "task-master-ai"],
      "env": {
        "TASK_MASTER_TOOLS": "core",
        "ANTHROPIC_API_KEY": "your_key_here"
      }
    }
  }
}
```

You can also use `"lean"` as an alias for `"core"`.

#### Standard Tools
Loads 15 commonly used tools. Balances functionality with context efficiency.

**Standard tools include all core tools plus:**
- `initialize_project` - Set up new projects
- `analyze_project_complexity` - Analyze task complexity
- `expand_all` - Expand all eligible tasks
- `add_subtask` - Add subtasks manually
- `remove_task` - Remove tasks
- `generate` - Generate task markdown files
- `add_task` - Create new tasks
- `complexity_report` - View complexity analysis

```json
{
  "mcpServers": {
    "task-master-ai": {
      "command": "npx",
      "args": ["-y", "task-master-ai"],
      "env": {
        "TASK_MASTER_TOOLS": "standard",
        "ANTHROPIC_API_KEY": "your_key_here"
      }
    }
  }
}
```

#### Custom Tool Selection
Specify exactly which tools to load using a comma-separated list. Tool names are case-insensitive and support both underscores and hyphens.

```json
{
  "mcpServers": {
    "task-master-ai": {
      "command": "npx",
      "args": ["-y", "task-master-ai"],
      "env": {
        "TASK_MASTER_TOOLS": "get_tasks,next_task,set_task_status,update_subtask",
        "ANTHROPIC_API_KEY": "your_key_here"
      }
    }
  }
}
```

### Choosing the Right Configuration

- **Use `core`/`lean`**: When working with basic task management workflows or when context limits are strict
- **Use `standard`**: For most development workflows that include task creation and analysis
- **Use `all`**: When you need full functionality including tag management, dependencies, and advanced features
- **Use custom list**: When you have specific tool requirements or want to experiment with minimal sets

### Verification

When the MCP server starts, it logs which tools were loaded:

```
Task Master MCP Server starting...
Tool mode configuration: standard
Loading standard tools
Registering 15 MCP tools (mode: standard)
Successfully registered 15/15 tools
```

## Tool Categories

The MCP tools can be categorized in the same way as the core functionalities:

### 1. Task and Subtask Management

-   **`add_task`**: Creates a new task.
-   **`add_subtask`**: Adds a subtask to a parent task.
-   **`remove_task`**: Removes one or more tasks or subtasks.
-   **`remove_subtask`**: Removes a subtask from its parent.
-   **`update_task`**: Updates a single task.
-   **`update_subtask`**: Appends information to a subtask.
-   **`update`**: Updates multiple tasks.
-   **`move_task`**: Moves a task or subtask.
-   **`clear_subtasks`**: Clears all subtasks from one or more tasks.

### 2. Task Information and Status

-   **`get_tasks`**: Lists all tasks.
-   **`get_task`**: Shows the details of a specific task.
-   **`next_task`**: Shows the next task to work on.
-   **`set_task_status`**: Sets the status of a task or subtask.

### 3. Task Analysis and Expansion

-   **`parse_prd`**: Parses a PRD to generate tasks.
-   **`expand_task`**: Expands a task into subtasks.
-   **`expand_all`**: Expands all eligible tasks.
-   **`analyze_project_complexity`**: Analyzes task complexity.
-   **`complexity_report`**: Displays the complexity analysis report.

### 4. Dependency Management

-   **`add_dependency`**: Adds a dependency to a task.
-   **`remove_dependency`**: Removes a dependency from a task.
-   **`validate_dependencies`**: Validates the dependencies of all tasks.
-   **`fix_dependencies`**: Fixes any invalid dependencies.

### 5. Project and Configuration

-   **`initialize_project`**: Initializes a new project.
-   **`generate`**: Generates individual task files.
-   **`models`**: Manages AI model configurations.
-   **`research`**: Performs AI-powered research.

### 6. Tag Management

-   **`add_tag`**: Creates a new tag.
-   **`delete_tag`**: Deletes a tag.
-   **`list_tags`**: Lists all tags.
-   **`use_tag`**: Switches to a different tag.
-   **`rename_tag`**: Renames a tag.
-   **`copy_tag`**: Copies a tag.