trello-mcp-server
The Trello MCP Server is designed to facilitate interactions with Trello through AI-enabled hosts. It supports a variety of operations on Trello boards, lists, and cards, making it a comprehensive tool for integrating Trello workflows with MCP-compatible clients.
Trello MCP Server
A powerful MCP server for interacting with Trello boards, lists, and cards via AI Hosts.
Table of Contents
- Table of Contents
- Prerequisites
- Pre-installation
- Installation
- Server Modes
- Configuration
- Client Integration
- Capabilities
- Detailed Capabilities
- Usage
- Troubleshooting
- Contributing
Prerequisites
- Python 3.12 or higher, can easly managed by
uv
- Claude for Desktop installed
- Trello account and API credentials
- uv package manager installed
Pre-installation
- Make sure you have installed Claude Desktop App
- Make sure you have already logged in with your account into Claude.
- Start Claude
Installation
-
Set up Trello API credentials:
- Go to Trello Apps Administration
- Create a new integration at New Power-Up or Integration
- Fill in your information (you can leave the Iframe connector URL empty) and make sure to select the correct Workspace
- Click your app's icon and navigate to "API key" from left sidebar.
- Copy your "API key" and on the right side: "you can manually generate a Token." click the word token to get your Trello Token.
-
Rename the
.env.example
file in the project root with.env
and set vairables you just got:
TRELLO_API_KEY=your_api_key_here
TRELLO_TOKEN=your_token_here
- Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Clone this repository:
git clone https://github.com/m0xai/trello-mcp-server.git
cd trello-mcp-server
- Install dependencies and set server for Claude using uv::
uv run mcp install main.py
- Restart Claude Desktop app
Server Modes
This MCP server can run in two different modes:
Claude App Mode
This mode integrates directly with the Claude Desktop application:
- Set
USE_CLAUDE_APP=true
in your.env
file (this is the default) - Run the server with:
uv run mcp install main.py
- Restart the Claude Desktop application
SSE Server Mode
This mode runs as a standalone SSE server that can be used with any MCP-compatible client, including Cursor:
- Set
USE_CLAUDE_APP=false
in your.env
file - Run the server with:
python main.py
- The server will be available at
http://localhost:8000
by default (or your configured port)
Docker Mode
You can also run the server using Docker Compose:
- Make sure you have Docker and Docker Compose installed
- Create your
.env
file with your configuration - Build and start the container:
docker-compose up -d
- The server will run in SSE mode by default
- To view logs:
docker-compose logs -f
- To stop the server:
docker-compose down
Configuration
The server can be configured using environment variables in the .env
file:
Variable | Description | Default |
---|---|---|
TRELLO_API_KEY | Your Trello API key | Required |
TRELLO_TOKEN | Your Trello API token | Required |
MCP_SERVER_NAME | The name of the MCP server | Trello MCP Server |
MCP_SERVER_HOST | Host address for SSE mode | 0.0.0.0 |
MCP_SERVER_PORT | Port for SSE mode | 8000 |
USE_CLAUDE_APP | Whether to use Claude app mode | true |
You can customize the server by editing these values in your .env
file.
Client Integration
Using with Claude Desktop
- Run the server in Claude app mode (
USE_CLAUDE_APP=true
) - Start or restart Claude Desktop
- Claude will automatically detect and connect to your MCP server
Using with Cursor
To connect your MCP server to Cursor:
- Run the server in SSE mode (
USE_CLAUDE_APP=false
) - In Cursor, go to Settings (gear icon) > AI > Model Context Protocol
- Add a new server with URL
http://localhost:8000
(or your configured host/port) - Select the server when using Cursor's AI features
You can also add this configuration to your Cursor settings JSON file (typically at ~/.cursor/mcp.json
):
{
"mcpServers": {
"trello": {
"url": "http://localhost:8000/sse"
}
}
}
Using with Other MCP Clients
For other MCP-compatible clients, point them to the SSE endpoint at http://localhost:8000
.
Minimal Client Example
Here's a minimal Python example to connect to the SSE endpoint:
import asyncio
import httpx
async def connect_to_mcp_server():
url = "http://localhost:8000/sse"
headers = {"Accept": "text/event-stream"}
async with httpx.AsyncClient() as client:
async with client.stream("GET", url, headers=headers) as response:
# Get the session ID from the first SSE message
session_id = None
async for line in response.aiter_lines():
if line.startswith("data:"):
data = line[5:].strip()
if "session_id=" in data and not session_id:
session_id = data.split("session_id=")[1]
# Send a message using the session ID
message_url = f"http://localhost:8000/messages/?session_id={session_id}"
message = {
"role": "user",
"content": {
"type": "text",
"text": "Show me my Trello boards"
}
}
await client.post(message_url, json=message)
if __name__ == "__main__":
asyncio.run(connect_to_mcp_server())
Capabilities
Operation | Board | List | Card | Checklist | Checklist Item |
---|---|---|---|---|---|
Read | ✅ | ✅ | ✅ | ✅ | ✅ |
Write | ❌ | ✅ | ✅ | ✅ | ✅ |
Update | ❌ | ✅ | ✅ | ✅ | ✅ |
Delete | ❌ | ✅ | ✅ | ✅ | ✅ |
Detailed Capabilities
Board Operations
- ✅ Read all boards
- ✅ Read specific board details
List Operations
- ✅ Read all lists in a board
- ✅ Read specific list details
- ✅ Create new lists
- ✅ Update list name
- ✅ Archive (delete) lists
Card Operations
- ✅ Read all cards in a list
- ✅ Read specific card details
- ✅ Create new cards
- ✅ Update card attributes
- ✅ Delete cards
Checklist Operations
- ✅ Get a specific checklist
- ✅ List all checklists in a card
- ✅ Create a new checklist
- ✅ Update a checklist
- ✅ Delete a checklist
- ✅ Add checkitem to checklist
- ✅ Update checkitem
- ✅ Delete checkitem
Usage
Once installed, you can interact with your Trello boards through Claude. Here are some example queries:
- "Show me all my boards"
- "What lists are in board [board_name]?"
- "Create a new card in list [list_name] with title [title]"
- "Update the description of card [card_name]"
- "Archive the list [list_name]"
Here are my example usages:
Troubleshooting
If you encounter issues:
- Verify your Trello API credentials in the
.env
file - Check that you have proper permissions in your Trello workspace
- Ensure Claude for Desktop is running the latest version
- Check the logs for any error messages with
uv run mcp dev main.py
command. - Make sure uv is properly installed and in your PATH
Contributing
Feel free to submit issues and enhancement requests!