Trello Task Manager MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Trello Task Manager MCP Serveradd a task called 'Buy groceries'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Creates a Trello card in the To Do list |
| Lists active cards from the To Do list |
| Moves a card to the Done list |
| 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 responseThe 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.lockMain files
main.py— Defines the MCP server and its toolstrello_client.py— Handles Trello REST API communicationget_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
uvNode.js and
npxfor MCP InspectorA Trello account
A Trello board with the required lists
Trello API credentials
Trello board structure
Create a board named:
MCP Task ManagerCreate these lists:
To Do
In Progress
DoneTasks are represented as Trello cards.
Installation
Clone the repository:
git clone YOUR_REPOSITORY_URL
cd task-manager-mcpInstall the dependencies:
uv syncEnvironment configuration
Create your local .env file from the example:
Copy-Item .env.example .envAdd 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_idNever 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.pyThe 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 validTest 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.pyConnect to the server and select List Tools.
The following tools should appear:
add_task
list_tasks
complete_task
delete_taskTool examples
Add a task
Tool:
add_taskInput:
{
"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_tasksInput:
{}This returns the active cards from the configured To Do list.
Complete a task
Tool:
complete_taskInput:
{
"card_id": "your-trello-card-id"
}The card moves from its current list to Done.
Delete a task
Tool:
delete_taskInput:
{
"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
.envcontentsCredentials in screenshots
Credentials in documentation
Credentials in Git history
Before committing, verify that .env is ignored:
git check-ignore -v .envIf 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.jsonDay 5
MCP tool
↓
Trello API client
↓
Trello REST API
↓
Real Trello cardThe 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
httpxRequest 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 toolsadd_taskC
Create a Trello card in the configured To Do list.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| completed | Yes | |
| description | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| completed | Yes | |
| description | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| completed | Yes | |
| description | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
add_task - First observed
complete_task - First observed
delete_task - First observed
list_tasks
TDQS
Scored across 4 tools
Each tool targets a distinct action on Trello cards: add, list, complete, and delete. There is no overlap in functionality.
All tool names follow a consistent verb_noun pattern (complete_task, delete_task, add_task, list_tasks), making them predictable.
With 4 tools, the server is well-scoped for a basic task manager, covering essential operations without unnecessary bloat.
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
Related MCP Connectors
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to manage Trello boards, lists, cards, checklists, and workspace navigation through 23 typed MCP tools, with rate limiting and validation.31MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude to interact with Trello boards, lists, cards, and labels through a set of MCP tools.-
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Trello boards, lists, and cards via MCP clients like Claude, allowing read, create, update, and search operations through natural language.285 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Trello boards through MCP tools, including listing tasks, moving cards, commenting, labeling, and managing attachments.277 npm1MIT