trello-mcp-server
by v4lheru
Verified
# Trello MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with the Trello API. Built on the Generic MCP Server Template.
## Features
- **Trello Integration**: Complete access to Trello boards, lists, cards, and more
- **Comprehensive API Coverage**: Support for all major Trello operations
- **Modular Architecture**: Clear separation of concerns with a well-defined structure
- **Type Safety**: Full TypeScript support with proper typing for Trello objects
- **Error Handling**: Robust error management throughout the codebase
## Project Structure
```
trello-mcp-server/
├── src/
│ ├── services/ # Service classes for Trello API interactions
│ │ ├── base-service.ts # Abstract base service with common functionality
│ │ ├── trello-service.ts # Core Trello API service
│ │ ├── board-service.ts # Service for Trello boards
│ │ ├── list-service.ts # Service for Trello lists
│ │ ├── card-service.ts # Service for Trello cards
│ │ ├── member-service.ts # Service for Trello members
│ │ ├── label-service.ts # Service for Trello labels
│ │ ├── checklist-service.ts # Service for Trello checklists
│ │ └── service-factory.ts # Factory for creating service instances
│ ├── tools/ # MCP tool definitions and handlers
│ │ ├── board-tools.ts # Board tool definitions
│ │ ├── board-tool-handlers.ts # Board tool handlers
│ │ ├── list-tools.ts # List tool definitions
│ │ ├── list-tool-handlers.ts # List tool handlers
│ │ ├── card-tools.ts # Card tool definitions
│ │ ├── card-tool-handlers.ts # Card tool handlers
│ │ ├── member-tools.ts # Member tool definitions
│ │ ├── member-tool-handlers.ts # Member tool handlers
│ │ ├── label-tools.ts # Label tool definitions
│ │ ├── label-tool-handlers.ts # Label tool handlers
│ │ ├── checklist-tools.ts # Checklist tool definitions
│ │ ├── checklist-tool-handlers.ts # Checklist tool handlers
│ │ ├── trello-tools.ts # Combined tool definitions
│ │ └── trello-tool-handlers.ts # Combined tool handlers
│ ├── types/ # TypeScript type definitions
│ │ └── trello-types.ts # Trello type definitions
│ ├── config.ts # Configuration management
│ └── index.ts # Main entry point
├── .env.example # Example environment variables
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentation
```
## Getting Started
### Prerequisites
- Node.js 18 or higher
- npm or yarn
- Trello API key and token
### Installation
1. Clone this repository:
```bash
git clone https://github.com/yourusername/trello-mcp-server.git
cd trello-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Create a `.env` file based on `.env.example`:
```bash
cp .env.example .env
```
4. Edit the `.env` file with your Trello API key and token:
```
TRELLO_API_KEY=your_trello_api_key
TRELLO_TOKEN=your_trello_token
```
You can obtain these from the [Trello Developer Portal](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/).
### Building and Running
1. Build the project:
```bash
npm run build
```
2. Run the server:
```bash
npm start
```
## Available Tools
The server provides tools for interacting with all major Trello resources:
### Board Tools
- `get_boards` - Get all boards for the authenticated user
- `get_board` - Get a specific board by ID
- `create_board` - Create a new board
- `update_board` - Update an existing board
- `delete_board` - Delete a board
- `get_board_lists` - Get all lists on a board
- `get_board_members` - Get all members of a board
- `get_board_labels` - Get all labels on a board
- `close_board` - Close (archive) a board
- `reopen_board` - Reopen a closed board
### List Tools
- `get_list` - Get a specific list by ID
- `create_list` - Create a new list on a board
- `update_list` - Update an existing list
- `archive_list` - Archive a list
- `unarchive_list` - Unarchive a list
- `move_list_to_board` - Move a list to a different board
- `get_cards_in_list` - Get all cards in a list
- `archive_all_cards` - Archive all cards in a list
- `move_all_cards` - Move all cards in a list to another list
- `update_list_position` - Update the position of a list on a board
- `update_list_name` - Update the name of a list
- `subscribe_to_list` - Subscribe to a list
### Card Tools
- `get_card` - Get a specific card by ID
- `create_card` - Create a new card
- `update_card` - Update an existing card
- `delete_card` - Delete a card
- `archive_card` - Archive a card
- `unarchive_card` - Unarchive a card
- `move_card_to_list` - Move a card to a different list
- `add_comment` - Add a comment to a card
- `get_comments` - Get comments on a card
- `add_attachment` - Add an attachment to a card
- `get_attachments` - Get attachments on a card
- `delete_attachment` - Delete an attachment from a card
- `add_member` - Add a member to a card
- `remove_member` - Remove a member from a card
- `add_label` - Add a label to a card
- `remove_label` - Remove a label from a card
- `set_due_date` - Set the due date for a card
- `set_due_complete` - Mark a card's due date as complete or incomplete
### Member Tools
- `get_me` - Get the authenticated member (current user)
- `get_member` - Get a specific member by ID or username
- `get_member_boards` - Get boards that a member belongs to
- `get_member_cards` - Get cards assigned to a member
- `get_boards_invited` - Get boards that a member has been invited to
- `get_member_organizations` - Get organizations that a member belongs to
- `get_notifications` - Get notifications for the authenticated member
- `update_me` - Update the authenticated member's information
- `get_avatar` - Get the authenticated member's avatar
- `search_members` - Search for members by name
- `get_board_members` - Get members of a board
- `get_organization_members` - Get members of an organization
- `get_card_members` - Get members assigned to a card
### Label Tools
- `get_label` - Get a specific label by ID
- `create_label` - Create a new label on a board
- `update_label` - Update an existing label
- `delete_label` - Delete a label
- `get_board_labels` - Get all labels on a board
- `update_label_name` - Update the name of a label
- `update_label_color` - Update the color of a label
- `create_label_on_card` - Create a new label directly on a card
- `get_card_labels` - Get all labels on a card
- `add_label_to_card` - Add a label to a card
- `remove_label_from_card` - Remove a label from a card
### Checklist Tools
- `get_checklist` - Get a specific checklist by ID
- `create_checklist` - Create a new checklist on a card
- `update_checklist` - Update an existing checklist
- `delete_checklist` - Delete a checklist
- `get_checkitems` - Get all checkitems on a checklist
- `create_checkitem` - Create a new checkitem on a checklist
- `get_checkitem` - Get a specific checkitem on a checklist
- `update_checkitem` - Update a checkitem on a checklist
- `delete_checkitem` - Delete a checkitem from a checklist
- `update_checklist_name` - Update the name of a checklist
- `update_checklist_position` - Update the position of a checklist on a card
- `get_checklist_board` - Get the board a checklist is on
- `get_checklist_card` - Get the card a checklist is on
- `update_checkitem_state_on_card` - Update a checkitem's state on a card
## Configuration
The server uses a centralized configuration system in `src/config.ts`. Configuration can be provided through:
- Environment variables
- Command line arguments (with `--env KEY=VALUE`)
- Default values in the code
Required environment variables:
- `TRELLO_API_KEY` - Your Trello API key
- `TRELLO_TOKEN` - Your Trello API token
## Error Handling
The server includes comprehensive error handling:
- Service-level error handling with rate limiting support
- Tool-level error handling with proper error messages
- MCP protocol error handling
- Trello API error handling
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/v4lheru/trello-mcp-server/blob/master/LICENSE) file for details.