Skip to main content
Glama
aepod
by aepod
README.md
# Trello MCP Server

A Model Context Protocol (MCP) server that provides Claude with tools to interact with Trello boards, lists, and cards through the Trello REST API.

## Features

### Core Functionality
- **Board Management**: List boards, get board details and metadata
- **List Operations**: Retrieve lists, create new lists within boards
- **Card Management**: Create, update, delete, and move cards between lists
- **Member Management**: Add/remove members from boards and cards
- **Labels & Checklists**: Manage card labels and checklist items

### Technical Features
- TypeScript implementation with full type safety
- Comprehensive error handling and validation
- Rate limiting compliance for Trello API
- Secure authentication using API key/token
- Integration with Popular Agentic IDE via MCP protocol

## Prerequisites

- Node.js 18+ and npm
- Trello account with API access
- Claude Desktop application

## Installation

1. Clone the repository:
```bash
git clone <repository-url>
cd trello-mcp
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
npm run build
```

## Authentication Setup

1. **Get Trello API Credentials**:
   - Visit https://trello.com/app-key to get your API key
   - Generate a token by visiting: `https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name=Server%20Token&key=YOUR_API_KEY`

2. **Configure Environment**:
   Create a `.env` file in the project root:
   ```env
   TRELLO_API_KEY=your_api_key_here
   TRELLO_TOKEN=your_token_here
   ```

## Integration Setup

### Claude Desktop Integration

Add the following to your Claude Desktop configuration file:

#### macOS
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

#### Windows
Edit `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "trello": {
      "command": "node",
      "args": ["/path/to/trello-mcp/dist/index.js"],
      "env": {
        "TRELLO_API_KEY": "your_api_key_here",
        "TRELLO_TOKEN": "your_token_here"
      }
    }
  }
}
```

### Docker Desktop Integration

Docker Desktop (v4.38+) includes built-in MCP server support through the Docker MCP Catalog and Toolkit. This provides the easiest way to run and manage MCP servers.

#### Option 1: Using Docker Desktop's Built-in MCP Support (Recommended)

1. **Enable MCP in Docker Desktop**:
   - Open Docker Desktop (ensure version 4.38 or later)
   - Go to **Extensions** → **Browse** → Search for "MCP" 
   - Install the **Docker MCP Catalog and Toolkit** extension

2. **Publish to Docker Hub's MCP Catalog**:
   ```bash
   # Build and tag for MCP catalog
   docker build -t mcp/trello-server .
   docker push mcp/trello-server
   ```

3. **Configure in Claude Desktop with Docker MCP**:
   ```json
   {
     "mcpServers": {
       "trello": {
         "command": "docker",
         "args": [
           "run", "--rm", "-i",
           "--env-file", ".env",
           "mcp/trello-server"
         ]
       }
     }
   }
   ```

4. **Use with Ask Gordon (Docker AI)**:
   Create `gordon-mcp.yml` in your project directory:
   ```yaml
   version: '3.8'
   services:
     trello-mcp:
       image: mcp/trello-server
       environment:
         - TRELLO_API_KEY=${TRELLO_API_KEY}
         - TRELLO_TOKEN=${TRELLO_TOKEN}
       volumes:
         - ./logs:/app/logs
   ```

   Then use Docker AI commands:
   ```bash
   # Ask Gordon to help with Trello management
   docker ai "Show me my Trello boards and create a new development task"
   ```

#### Option 2: Traditional Docker Setup

Create a `Dockerfile` in your project root:

```dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY dist/ ./dist/

# Create non-root user for security
RUN addgroup -g 1001 -S nodejs
RUN adduser -S mcp -u 1001
RUN chown -R mcp:nodejs /app
USER mcp

EXPOSE 3000

CMD ["node", "dist/index.js"]
```

Build and run the container:

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

# Run with Docker MCP Toolkit (secure credential management)
docker run -d \
  --name trello-mcp \
  --env-file .env \
  -p 3000:3000 \
  trello-mcp-server

# Or use docker-compose.yml:
```

Create `docker-compose.yml`:

```yaml
version: '3.8'
services:
  trello-mcp:
    build: .
    container_name: trello-mcp-server
    environment:
      - TRELLO_API_KEY=${TRELLO_API_KEY}
      - TRELLO_TOKEN=${TRELLO_TOKEN}
      - LOG_LEVEL=info
      - API_TIMEOUT=10000
    ports:
      - "3000:3000"
    restart: unless-stopped
    volumes:
      - ./logs:/app/logs
    networks:
      - mcp-network

networks:
  mcp-network:
    driver: bridge
```

Run with Docker Compose:

```bash
# Set environment variables in .env file, then:
docker-compose up -d
```

#### Benefits of Docker Desktop MCP Integration

- **Built-in Security**: OAuth support and secure credential storage
- **One-Click Setup**: Seamless integration with Claude, Cursor, VSCode, and other MCP clients
- **Cross-Platform**: Consistent behavior across different architectures
- **Isolation**: Memory, network, and disk isolation for production-ready security
- **Discovery**: Access to 100+ verified MCP tools from Docker Hub's MCP Catalog

### Cursor IDE Integration

In Cursor, you can set up the MCP server for AI-assisted development:

1. **Install Cursor Extension** (if available):
   - Open Cursor IDE
   - Go to Extensions marketplace
   - Search for "MCP" or "Model Context Protocol"

2. **Configure MCP Server**:
   Create `.cursor/mcp-config.json` in your workspace:

```json
{
  "mcpServers": {
    "trello": {
      "command": "node",
      "args": ["./dist/index.js"],
      "cwd": "/path/to/trello-mcp",
      "env": {
        "TRELLO_API_KEY": "your_api_key_here",
        "TRELLO_TOKEN": "your_token_here"
      }
    }
  }
}
```

3. **Use with Cursor AI**:
   - Open Cursor's AI chat panel
   - The Trello MCP tools should be available for context
   - Ask questions like: "Show me my Trello boards and help me organize my tasks"

### Windsurf IDE Integration

For Windsurf IDE integration:

1. **Project Configuration**:
   Create `.windsurf/settings.json`:

```json
{
  "mcp": {
    "servers": {
      "trello": {
        "command": "node",
        "args": ["dist/index.js"],
        "cwd": "${workspaceFolder}",
        "env": {
          "TRELLO_API_KEY": "your_api_key_here",
          "TRELLO_TOKEN": "your_token_here"
        }
      }
    }
  },
  "ai": {
    "providers": {
      "claude": {
        "mcpServers": ["trello"]
      }
    }
  }
}
```

2. **Workspace Setup**:
   Add to your `.windsurf/workspace.json`:

```json
{
  "name": "Trello MCP Development",
  "description": "Development workspace with Trello integration",
  "mcpServers": ["trello"],
  "tools": {
    "trello": {
      "enabled": true,
      "autoStart": true
    }
  }
}
```

3. **Usage in Windsurf**:
   - The AI assistant will have access to Trello tools
   - Use natural language commands in the AI chat
   - Example: "Create a development task board and add cards for the current project features"

### Development Container (DevContainer)

For consistent development environments, create `.devcontainer/devcontainer.json`:

```json
{
  "name": "Trello MCP Development",
  "build": {
    "dockerfile": "../Dockerfile.dev"
  },
  "forwardPorts": [3000],
  "postCreateCommand": "npm install && npm run build",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-vscode.vscode-typescript-next",
        "esbenp.prettier-vscode",
        "bradlc.vscode-tailwindcss"
      ],
      "settings": {
        "mcp.servers": {
          "trello": {
            "command": "node",
            "args": ["dist/index.js"],
            "env": {
              "TRELLO_API_KEY": "${TRELLO_API_KEY}",
              "TRELLO_TOKEN": "${TRELLO_TOKEN}"
            }
          }
        }
      }
    }
  },
  "remoteEnv": {
    "TRELLO_API_KEY": "${localEnv:TRELLO_API_KEY}",
    "TRELLO_TOKEN": "${localEnv:TRELLO_TOKEN}"
  }
}
```

Create `Dockerfile.dev`:

```dockerfile
FROM node:18

WORKDIR /workspace

# Install global tools
RUN npm install -g @modelcontextprotocol/inspector typescript

# Set up development environment
COPY package*.json ./
RUN npm install

# Copy source code
COPY . .

# Expose MCP server port
EXPOSE 3000

CMD ["npm", "run", "dev"]
```

## Available Tools

### Board Operations
- `list_boards` - Get all boards accessible to the user
- `get_board` - Get detailed information about a specific board
- `get_board_members` - List members of a board

### List Operations  
- `get_lists` - Get all lists in a board
- `create_list` - Create a new list in a board
- `update_list` - Update list properties (name, position)

### Card Operations
- `get_cards` - Get cards from a board or list
- `create_card` - Create a new card
- `update_card` - Update card properties (name, description, due date)
- `move_card` - Move card to different list
- `delete_card` - Delete a card
- `add_card_member` - Add member to a card
- `remove_card_member` - Remove member from a card

### Label Operations
- `get_labels` - Get available labels for a board
- `add_card_label` - Add label to a card
- `remove_card_label` - Remove label from a card

### Checklist Operations
- `get_card_checklists` - Get checklists on a card
- `create_checklist` - Create a new checklist on a card
- `add_checklist_item` - Add item to a checklist
- `update_checklist_item` - Update checklist item (mark complete/incomplete)

## Development

### Project Structure
```
trello-mcp/
├── src/
│   ├── index.ts          # MCP server entry point
│   ├── trello-client.ts  # Trello API client
│   ├── tools/            # MCP tool implementations
│   │   ├── boards.ts
│   │   ├── lists.ts
│   │   ├── cards.ts
│   │   └── labels.ts
│   └── types/            # TypeScript type definitions
├── dist/                 # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
```

### Scripts
- `npm run build` - Build TypeScript to JavaScript
- `npm run dev` - Run in development mode with auto-reload
- `npm run start` - Start the MCP server
- `npm run test` - Run tests

### Testing
```bash
# Install the MCP Inspector for testing
npm install -g @modelcontextprotocol/inspector

# Test the server
mcp-inspector node dist/index.js
```

## Usage Examples

Once integrated with Claude Desktop, you can use natural language to interact with Trello:

- "Show me all my Trello boards"
- "Create a new card called 'Fix login bug' in the 'To Do' list of my Development board"
- "Move the card 'Review PR #123' to the 'Done' list"
- "Add the 'Priority' label to the card about the database migration"
- "List all cards in my Personal board that are due this week"

## Error Handling

The server includes comprehensive error handling for:
- Network connectivity issues
- Invalid API credentials
- Rate limiting (429 errors)
- Invalid board/list/card IDs
- Permission errors

## Security Notes

- API credentials are passed via environment variables
- No credentials are logged or stored in plain text
- All API requests use HTTPS
- Rate limiting is respected to avoid API abuse

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes with proper TypeScript types
4. Add tests for new functionality
5. Submit a pull request

## License

MIT License - see LICENSE file for details

## Support

For issues and questions:
- Check the Trello API documentation: https://developer.atlassian.com/cloud/trello/rest
- Review MCP documentation: https://modelcontextprotocol.io
- Open an issue in this repository