Skip to main content
Glama
lzvxck

Trello MCP Server

by lzvxck
README.md
# Trello MCP Server

A Model Context Protocol (MCP) server that connects Trello with AI assistants like Claude Desktop, GitHub Copilot Chat, and other MCP-compatible clients.

## Features

- 📋 List all your Trello boards
- 🔍 Read board contents (lists and cards)
- ➕ Create new cards
- 🔄 Move cards between lists
- 💬 Add comments to cards
- 🗃️ Archive cards
- 🔗 Access boards as MCP resources
- 🐳 Docker support for easy deployment

## Prerequisites

- Node.js 20+ installed (for local development)
- Docker (for containerized deployment)
- A Trello account
- Trello API credentials (API Key and Token)

## Installation

### Option 1: Local Installation

1. Clone this repository:

```bash
git clone https://github.com/lioarce01/trello-mcp-server.git
cd trello-mcp-server
```

2. Install dependencies:

```bash
npm install
```

3. Build the TypeScript code:

```bash
npm run build
```

### Option 2: Docker Installation

1. Clone this repository:

```bash
git clone https://github.com/lioarce01/trello-mcp-server.git
cd trello-mcp-server
```

2. Build the Docker image:

```bash
docker build -t trello-mcp-server .
```

## Getting Trello API Credentials

1. **Get your API Key:**

   - Go to https://trello.com/app-key
   - Copy your API Key

2. **Get your Token:**
   - On the same page, click on "Token" link
   - Authorize the application and copy your Token

## Configuration

### For Claude Desktop

#### Local Installation

Add the server configuration to your Claude Desktop config file:

**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`  
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`  
**Linux:** `~/.config/claude/claude_desktop_config.json`

```json
{
  "mcp": {
    "servers": {
      "trello-mcp": {
        "command": "node",
        "args": ["absolute/path/to/the/project/dist/index.js"],
        "env": {
          "TRELLO_API_KEY": "your_api_key",
          "TRELLO_TOKEN": "your_token",
          "TRELLO_BASE_URL": "https://api.trello.com/1"
        }
      }
    }
  }
}
```

#### Docker Configuration

For Docker deployment, add this configuration:

```json
{
  "mcp": {
    "servers": {
      "trello-mcp": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "-e",
          "TRELLO_API_KEY=your_api_key",
          "-e",
          "TRELLO_TOKEN=your_token",
          "-e",
          "TRELLO_BASE_URL=https://api.trello.com/1",
          "trello-mcp-server"
        ]
      }
    }
  }
}
```

### For VS Code with GitHub Copilot Chat

#### Local Installation

Add to your VS Code settings.json:

```json
{
  "mcp": {
    "servers": {
      "trello-mcp": {
        "command": "node",
        "args": ["absolute/path/to/the/project/dist/index.js"],
        "env": {
          "TRELLO_API_KEY": "your_api_key",
          "TRELLO_TOKEN": "your_token",
          "TRELLO_BASE_URL": "https://api.trello.com/1"
        }
      }
    }
  }
}
```

#### Docker Configuration

```json
{
  "mcp": {
    "servers": {
      "trello-mcp": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "-e",
          "TRELLO_API_KEY=your_api_key",
          "-e",
          "TRELLO_TOKEN=your_token",
          "-e",
          "TRELLO_BASE_URL=https://api.trello.com/1",
          "trello-mcp-server"
        ]
      }
    }
  }
}
```

**Important:**

- Replace `absolute/path/to/the/project/dist/index.js` with the actual absolute path to your compiled server file (local installation)
- Replace `YOUR_TRELLO_API_KEY` and `YOUR_TRELLO_TOKEN` with your actual Trello credentials

## Docker Usage

### Using Docker Run

```bash
# Build the image
docker build -t trello-mcp-server .

# Run with API key and token as arguments
docker run --rm -i --env-file .env trello-mcp-server
```

### Local Testing

To test if your server works correctly:

1. **Build the project:**

```bash
npm run build
```

2. **Run with credentials:**

```bash
node dist/index.js
```

### Docker Testing

1. **Build and run with Docker:**

```bash
docker build -t trello-mcp-server .
docker run --rm -i --env-file .env trello-mcp-server
```

2. **You should see:**

```
MCP server connected and ready.
```

**Note:** The server will wait for MCP client connections. To exit, press `Ctrl+C`.

Once configured, you can interact with your Trello boards through natural language:

### List Boards

```
Show me all my Trello boards
```

### Read Board Contents

```
What cards are in my "Project Management" board?
```

### Create Cards

```
Create a new card called "Review documentation" in the "To Do" list
```

### Move Cards

```
Move the "Bug fix" card to the "In Progress" list
```

### Add Comments

```
Add a comment to the card saying "This needs urgent attention"
```

### Archive Cards

```
Archive the completed card "Setup database"
```

## Available Tools

| Tool               | Description                                | Parameters                          |
| ------------------ | ------------------------------------------ | ----------------------------------- |
| `list_boards`      | List all open Trello boards                | None                                |
| `read_board`       | Read lists and cards from a specific board | `boardId`                           |
| `create_list`      | Create a list                              | `boardId`, `name`                   |
| `create_card`      | Create a new card in a specific list       | `listId`, `name`, `desc` (optional) |
| `move_card`        | Move a card to a different list            | `cardId`, `listId`                  |
| `add_comment`      | Add a comment to a card                    | `cardId`, `text`                    |
| `archive_card`     | Archive a card                             | `cardId`                            |
| `archive_list`     | Archive a list                             | `listId`                            |
| `delete_board`     | Delete a board                             | `boardId`                           |
| `update_list_name` | Update a list name                         | `listId`, `name`                    |
| `update_card_name` | Update a card name                         | `cardId`, `name`                    |

## Available Resources

The server exposes your Trello boards as MCP resources that can be read by AI assistants:

- **Resource URI:** `board:{boardId}`
- **Content:** JSON containing all lists and cards for the board

## Development

### Building

#### Local Development

```bash
npm run build
```

#### Docker Development

```bash
# Build Docker image
docker build -t trello-mcp-server .
```

### Running in Development

#### Local Development

To run the server directly (for testing):

```bash
# With npm
npm run build
node dist/index.js

# With pnpm
pnpm run build
node dist/index.js
```

#### Docker Development

```bash
# Run with docker (pass credentials as arguments)
docker run --rm -i --env-file .env trello-mcp-server
```

### Development Scripts

You can also create a development script in your `package.json`:

```json
{
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js",
    "dev": "tsx ./src/index.ts",
    "docker:build": "docker build -t trello-mcp-server .",
    "docker:run": "docker run --rm -i --env-file .env trello-mcp-server"
  }
}
```

## Troubleshooting

### Server Not Connecting

1. **Check credentials:** Make sure you're passing API Key and Token as arguments
2. **Verify file path:** Ensure the path in your MCP configuration is correct (local installation)
3. **Build first:** Always run `npm run build` or `docker build` before testing
4. **Test standalone:** Try running the server independently first
5. **Restart client:** Restart your MCP client (Claude Desktop/VS Code) after config changes

### Docker-Specific Issues

1. **Image not found:** Make sure you've built the Docker image first with `docker build -t trello-mcp-server .`
2. **Arguments not passed:** Ensure API key and token are passed as arguments after the image name
3. **Permissions:** Check that Docker has the necessary permissions to run containers

### Invalid Credentials Error

- Double-check your Trello API Key and Token
- Ensure the token has the necessary permissions
- Try regenerating your token if it's expired
- Verify credentials are properly passed as arguments

### Tools Not Working

- Verify the board/card/list IDs are correct
- Check that you have write permissions to the Trello board
- Look at the console logs for detailed error messages

## Security Notes

- **Never commit your API credentials** to version control
- Store credentials securely and rotate them regularly
- Use `.env` files and add them to `.gitignore`
- The server only requires the permissions you grant via the Trello token
- Consider using environment variables for credentials in production
- Docker containers run with non-root user for security

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

**Made with ❤️ for the MCP community**

TDQS

B3.2/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct action on a specific Trello entity (board, list, card, comment). There is no overlap; for example, read_board reads a board's contents while list_boards lists all boards, and move_card vs archive_card are clearly different.

Naming Consistency5/5

All tool names consistently use snake_case with a verb_noun pattern (e.g., create_card, archive_list, update_card_name). The verbs (add, archive, create, delete, list, move, read, update) are descriptive and uniformly applied across the tool set.

Tool Count5/5

With 11 tools, the set covers the core operations for managing Trello boards, lists, and cards. The count is well-balanced—not too few to be incomplete and not too many to be overwhelming—suitable for a focused Trello MCP server.

Completeness3/5

The server provides essential operations for boards (list, read, delete), lists (create, archive, rename), and cards (create, archive, move, rename, comment). However, it lacks board creation and card deletion, which are common lifecycle operations, leaving notable gaps for a full Trello workflow.

Maintenance

ActivityInactive
ResponsivenessUnresponsive