# cerebro-mcp

MCP server for [Cerebro](https://cerebrohq.com) — VFX/animation project management platform.

Provides AI assistants (Claude, ChatGPT, etc.) with access to Cerebro tasks, messages, attachments, statuses, and more via the [Model Context Protocol](https://modelcontextprotocol.io).

## Installation

### Claude Code

Add to your MCP settings:

```json
{
  "mcpServers": {
    "cerebro": {
      "command": "uvx",
      "args": ["cerebro-mcp"]
    }
  }
}
```

### Manual

```bash
pip install cerebro-mcp
```

## Authentication

The server tries to connect automatically in this order:

1. **Environment variables** — `CEREBRO_HOST`, `CEREBRO_USER`, `CEREBRO_PASSWORD`
2. **Cerebro Desktop** — if the desktop client is running and logged in
3. **Saved credentials** — from a previous `login` call

If none work, the server starts without a connection. Use the `login` tool or CLI:

```bash
# Interactive login from terminal
cerebro-mcp login

# Or via environment variables
CEREBRO_HOST=cerebro.studio.com CEREBRO_USER=john CEREBRO_PASSWORD=secret cerebro-mcp
```

For secure credential storage, install with keyring support:

```bash
pip install cerebro-mcp[keyring]
```

## Available Tools

| Tool | Description |
|------|-------------|
| `login` | Authenticate with Cerebro server |
| `get_projects` | List root projects |
| `get_task` | Get task details by ID |
| `get_task_children` | Get child tasks (one level) |
| `get_task_by_path` | Find task by path (e.g. `/Project/Episode/Shot`) |
| `get_todo_list` | Get tasks assigned to user |
| `create_task` | Create a new task |
| `set_task_status` | Set task status |
| `set_task_allocated` | Assign user to task |
| `remove_task_allocated` | Remove user from task |
| `set_task_progress` | Set progress (0-100) |
| `set_task_priority` | Set priority (-2 to 3) |
| `set_task_dates` | Set start/finish dates |
| `set_task_planned_time` | Set planned hours |
| `set_task_budget` | Set budget |
| `set_task_name` | Rename task |
| `link_tasks` | Link two tasks |
| `get_task_links` | Get task links |
| `get_possible_statuses` | Get allowed statuses for task |
| `get_task_messages` | Get all messages on task |
| `get_task_definition` | Get task definition |
| `add_definition` | Create task definition |
| `add_report` | Add work report with time |
| `add_review` | Add review |
| `add_note` | Add note |
| `add_client_review` | Add client review |
| `get_task_attachments` | Get task attachments |
| `get_message_attachments` | Get message attachments |
| `get_task_tags` | Get custom tag values |
| `get_task_hashtags` | Get hashtags |
| `set_task_hashtags` | Set hashtags |
| `get_task_checks` | Get checklist |
| `set_task_check_value` | Set checklist item |
| `set_tag_value` | Set custom tag value |
| `get_activities` | List all activities |
| `get_statuses` | List all statuses |
| `get_project_tags` | List project custom tags |
| `search_tasks` | Search tasks by criteria |
| `search_messages_in_project` | Search messages in project |
| `search_attachments_in_project` | Search attachments in project |
| `get_current_user` | Get current user info |
| `get_users` | List all users |

## Development

```bash
# Update vendored pycerebro
cerebro-mcp update-pycerebro --source /path/to/ctentaculo
```
