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
-
Clone this repository:
git clone https://github.com/yourusername/trello-mcp-server.git cd trello-mcp-server
-
Install dependencies:
npm install
-
Create a
.env
file based on.env.example
:cp .env.example .env
-
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.
Building and Running
-
Build the project:
npm run build
-
Run the server:
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 userget_board
- Get a specific board by IDcreate_board
- Create a new boardupdate_board
- Update an existing boarddelete_board
- Delete a boardget_board_lists
- Get all lists on a boardget_board_members
- Get all members of a boardget_board_labels
- Get all labels on a boardclose_board
- Close (archive) a boardreopen_board
- Reopen a closed board
List Tools
get_list
- Get a specific list by IDcreate_list
- Create a new list on a boardupdate_list
- Update an existing listarchive_list
- Archive a listunarchive_list
- Unarchive a listmove_list_to_board
- Move a list to a different boardget_cards_in_list
- Get all cards in a listarchive_all_cards
- Archive all cards in a listmove_all_cards
- Move all cards in a list to another listupdate_list_position
- Update the position of a list on a boardupdate_list_name
- Update the name of a listsubscribe_to_list
- Subscribe to a list
Card Tools
get_card
- Get a specific card by IDcreate_card
- Create a new cardupdate_card
- Update an existing carddelete_card
- Delete a cardarchive_card
- Archive a cardunarchive_card
- Unarchive a cardmove_card_to_list
- Move a card to a different listadd_comment
- Add a comment to a cardget_comments
- Get comments on a cardadd_attachment
- Add an attachment to a cardget_attachments
- Get attachments on a carddelete_attachment
- Delete an attachment from a cardadd_member
- Add a member to a cardremove_member
- Remove a member from a cardadd_label
- Add a label to a cardremove_label
- Remove a label from a cardset_due_date
- Set the due date for a cardset_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 usernameget_member_boards
- Get boards that a member belongs toget_member_cards
- Get cards assigned to a memberget_boards_invited
- Get boards that a member has been invited toget_member_organizations
- Get organizations that a member belongs toget_notifications
- Get notifications for the authenticated memberupdate_me
- Update the authenticated member's informationget_avatar
- Get the authenticated member's avatarsearch_members
- Search for members by nameget_board_members
- Get members of a boardget_organization_members
- Get members of an organizationget_card_members
- Get members assigned to a card
Label Tools
get_label
- Get a specific label by IDcreate_label
- Create a new label on a boardupdate_label
- Update an existing labeldelete_label
- Delete a labelget_board_labels
- Get all labels on a boardupdate_label_name
- Update the name of a labelupdate_label_color
- Update the color of a labelcreate_label_on_card
- Create a new label directly on a cardget_card_labels
- Get all labels on a cardadd_label_to_card
- Add a label to a cardremove_label_from_card
- Remove a label from a card
Checklist Tools
get_checklist
- Get a specific checklist by IDcreate_checklist
- Create a new checklist on a cardupdate_checklist
- Update an existing checklistdelete_checklist
- Delete a checklistget_checkitems
- Get all checkitems on a checklistcreate_checkitem
- Create a new checkitem on a checklistget_checkitem
- Get a specific checkitem on a checklistupdate_checkitem
- Update a checkitem on a checklistdelete_checkitem
- Delete a checkitem from a checklistupdate_checklist_name
- Update the name of a checklistupdate_checklist_position
- Update the position of a checklist on a cardget_checklist_board
- Get the board a checklist is onget_checklist_card
- Get the card a checklist is onupdate_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 keyTRELLO_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 file for details.