Skip to main content
Glama
akbarshaik2243

Trello Task Manager MCP Server

Trello Task Manager MCP Server

A Python MCP server that allows AI applications to manage tasks on a real Trello board.

This project began as a local JSON Task Manager on Day 4. On Day 5, the storage layer was replaced with the Trello REST API while keeping the same MCP tool interface.

Features

The server exposes four MCP tools:

Tool

Action

add_task

Creates a Trello card in the To Do list

list_tasks

Lists active cards from the To Do list

complete_task

Moves a card to the Done list

delete_task

Safely archives a Trello card

Related MCP server: MCP Trello

Architecture

User request
      ↓
AI application
      ↓
MCP client
      ↓
Trello Task Manager MCP Server
      ↓
Async HTTP client
      ↓
Trello REST API
      ↓
Trello board updated
      ↓
Structured MCP response

The MCP server defines the capabilities exposed to AI clients.

The Trello client handles:

  • Authentication

  • Asynchronous HTTP requests

  • Timeouts

  • HTTP errors

  • Network failures

  • Trello card operations

Project structure

task-manager-mcp/
├── .env.example
├── .gitignore
├── .python-version
├── README.md
├── get_trello_ids.py
├── main.py
├── pyproject.toml
├── trello_client.py
└── uv.lock

Main files

  • main.py — Defines the MCP server and its tools

  • trello_client.py — Handles Trello REST API communication

  • get_trello_ids.py — Discovers the Trello board and list IDs

  • .env.example — Documents the required environment variables

  • .env — Stores local credentials and is excluded from Git

Requirements

  • Python 3.11 or newer

  • uv

  • Node.js and npx for MCP Inspector

  • A Trello account

  • A Trello board with the required lists

  • Trello API credentials

Trello board structure

Create a board named:

MCP Task Manager

Create these lists:

To Do
In Progress
Done

Tasks are represented as Trello cards.

Installation

Clone the repository:

git clone YOUR_REPOSITORY_URL
cd task-manager-mcp

Install the dependencies:

uv sync

Environment configuration

Create your local .env file from the example:

Copy-Item .env.example .env

Add your private configuration:

TRELLO_API_KEY=your_api_key
TRELLO_TOKEN=your_token
TRELLO_BOARD_ID=your_board_id
TRELLO_TODO_LIST_ID=your_todo_list_id
TRELLO_IN_PROGRESS_LIST_ID=your_in_progress_list_id
TRELLO_DONE_LIST_ID=your_done_list_id

Never commit .env.

The public .env.example file must contain only empty values:

TRELLO_API_KEY=
TRELLO_TOKEN=
TRELLO_BOARD_ID=
TRELLO_TODO_LIST_ID=
TRELLO_IN_PROGRESS_LIST_ID=
TRELLO_DONE_LIST_ID=

Discovering Trello IDs

After adding TRELLO_API_KEY and TRELLO_TOKEN to .env, run:

uv run python get_trello_ids.py

The script finds the board named MCP Task Manager and displays its board and list IDs.

Copy those IDs into .env.

Board and list IDs are configuration identifiers. The API token is the sensitive credential and must never be shared.

Verify the configuration

Run:

uv run python -c "from trello_client import validate_configuration; validate_configuration(); print('Trello configuration is valid')"

Expected output:

Trello configuration is valid

Test the Trello connection

Run:

uv run python -c "import asyncio; from trello_client import trello_request; result = asyncio.run(trello_request('GET', '/members/me', params={'fields': 'username'})); print('Connected to Trello as:', result['username'])"

Run with MCP Inspector

Start the server through MCP Inspector:

uv run mcp dev main.py

Connect to the server and select List Tools.

The following tools should appear:

add_task
list_tasks
complete_task
delete_task

Tool examples

Add a task

Tool:

add_task

Input:

{
  "title": "Prepare Day 6 MCP article",
  "description": "Add resources and reusable prompts"
}

The server creates a card in the Trello To Do list.

List tasks

Tool:

list_tasks

Input:

{}

This returns the active cards from the configured To Do list.

Complete a task

Tool:

complete_task

Input:

{
  "card_id": "your-trello-card-id"
}

The card moves from its current list to Done.

Delete a task

Tool:

delete_task

Input:

{
  "card_id": "your-trello-card-id"
}

The server archives the card instead of permanently deleting it.

Archiving is safer because the card remains recoverable through Trello.

Structured responses

Trello returns large card objects containing internal metadata.

The MCP server returns only the useful fields:

{
  "id": "trello-card-id",
  "title": "Prepare Day 6 MCP article",
  "description": "Add resources and reusable prompts",
  "completed": false,
  "url": "https://trello.com/c/..."
}

This creates a stable boundary between Trello and MCP clients.

Error handling

The server handles:

  • Missing configuration

  • Empty task titles

  • Empty card IDs

  • Invalid card IDs

  • Trello HTTP errors

  • Authentication failures

  • Network failures

  • Request timeouts

Expected failures are converted into clear MCP tool errors instead of exposing long internal tracebacks.

Security

The following values must never be committed or published:

  • Trello API token

  • Real .env contents

  • Credentials in screenshots

  • Credentials in documentation

  • Credentials in Git history

Before committing, verify that .env is ignored:

git check-ignore -v .env

If a token is accidentally committed, revoke it immediately and generate a new one.

Local storage versus Trello

Day 4

MCP tool
    ↓
Local Python function
    ↓
tasks.json

Day 5

MCP tool
    ↓
Trello API client
    ↓
Trello REST API
    ↓
Real Trello card

The public tool names remain familiar even though the backend implementation changed completely.

Key lessons

This project demonstrates:

  • Building MCP tools with FastMCP

  • Connecting MCP to a real external platform

  • REST API authentication

  • Secure environment-variable configuration

  • Asynchronous HTTP requests with httpx

  • Request timeouts

  • Controlled API error handling

  • Structured MCP responses

  • Separation between MCP logic and integration logic

  • Safe deletion through archiving

  • Keeping an external system as the source of truth

Next step

Day 6 will extend this server with:

  • MCP resources

  • Resource URIs

  • Board and card context

  • Reusable prompts

  • Daily planning workflows

  • Weekly task-summary workflows

Day 5 gave the server the ability to act.

Day 6 will give it reusable context and guided workflows.

Available Tools

4 tools
add_taskC

Create a Trello card in the configured To Do list.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
titleYes
completedYes
descriptionYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only says 'in the configured To Do list' without explaining side effects, auth needs, or behavior on failure. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, making it concise but lacking structure. It could benefit from being expanded to cover key details without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists but is not described, and the tool's behavior regarding the 'configured' list is vague. Important context like prerequisites and return values is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not explain the title or description parameters. The agent must guess their meaning from the schema alone, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a Trello card, using a specific verb and resource. It distinguishes from sibling tools (complete_task, delete_task, list_tasks) which handle different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. While siblings are distinct, the description lacks context on prerequisites (e.g., configured list) or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_taskC

Move a Trello card into the configured Done list.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
titleYes
completedYes
descriptionYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations; description only says move to Done list. Does not disclose side effects, permissions, or other behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Could benefit from structure but is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with output schema, but description lacks return value info, error conditions, or context about the configured Done list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0%; description adds 'card_id' context but no additional meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear action: 'Move a Trello card' into a specific list (Done). Distinguishes from siblings like delete_task, add_task, list_tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no prerequisites or exclusions. Only states the action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_taskC

Archive a Trello card and return its details.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
titleYes
completedYes
descriptionYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description says 'archive' (ambiguous, not delete) and returns details, but does not disclose if the action is reversible, permissions needed, or any side effects. Critical behavioral traits missing for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource. However, it is too concise, omitting important context that could be included without significant bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists but description does not leverage it; no explanation of return value details. For a tool with no annotations, missing context on reversibility, use cases, and effects makes it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage; description adds no meaning to the sole parameter 'card_id' beyond implied identification. No format, source, or constraints explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (archive) and resource (Trello card), and differentiates from siblings like complete_task, add_task, list_tasks by implying a destructive or state-changing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no prerequisites or conditions mentioned. The description only states what it does, not when to apply it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksA

List active cards from the configured To Do list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'active cards' but does not clarify what 'active' means, whether there is pagination, ordering, or any side effects. The scope of returned data is vague.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no superfluous information. It is appropriately concise and front-loaded, conveying the core purpose without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description minimally covers the purpose. However, it does not explain return value details, what constitutes 'active', or any constraints (e.g., maximum number of cards). This leaves some ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so baseline is 4. The description does not add meaning beyond the empty schema, but that is acceptable since no additional parameter context is needed. However, it misses an opportunity to clarify if any implicit defaults or configurations apply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists active cards from a configured To Do list. It uses a specific verb ('list') and resource ('cards from To Do list'), and is distinct from sibling tools (complete, delete, add), so purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies this is for retrieving tasks, it does not explicitly state when to use this tool versus alternatives like complete_task or add_task. The context of sibling tools provides some implied guidance, but lacks direct when-not-to-use or prerequisite information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedadd_task
    • First observedcomplete_task
    • First observeddelete_task
    • First observedlist_tasks

TDQS

B3.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct action on Trello cards: add, list, complete, and delete. There is no overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (complete_task, delete_task, add_task, list_tasks), making them predictable.

Tool Count5/5

With 4 tools, the server is well-scoped for a basic task manager, covering essential operations without unnecessary bloat.

Completeness3/5

The server lacks an update tool for modifying card details (e.g., description, due dates) and a get-single-card tool, which are notable gaps for a task manager.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers