A Model Context Protocol (MCP) server implementation for Trello, written in Kotlin. This server enables AI assistants to interact with Trello boards, lists, and cards through a standardized protocol.
- List all boards for authenticated user
- Get detailed board information
- Create new boards
- Get all lists on a board
- Create new lists with custom positioning
- Get card details
- List all cards in a list
- Create new cards with descriptions and due dates
- Update existing cards (name, description, list, status, due date)
- JDK 21 or higher
- Gradle (wrapper included)
- Trello API credentials:
- API Key from https://trello.com/app-key
- Token generated from the same page
-
Clone or download this repository
-
Get Trello API credentials:
- Visit https://trello.com/app-key
- Copy your API Key
- Click "Token" link to generate a token with read/write permissions
- Copy the generated token
-
Configure credentials:
Create a
.envfile in the project root:cp .env.example .env
Edit
.envand add your credentials:TRELLO_API_KEY=your_api_key_here TRELLO_TOKEN=your_token_here -
Build the project:
./gradlew build
./gradlew runOr using the built JAR:
java -jar build/libs/trello-mcp-server-1.0.0.jarAdd to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Using the JAR file:
{
"mcpServers": {
"trello": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/trelloMCP/build/libs/trello-mcp-server-1.0.0.jar"
],
"env": {
"TRELLO_API_KEY": "your_api_key_here",
"TRELLO_TOKEN": "your_token_here"
}
}
}
}Using Gradle:
{
"mcpServers": {
"trello": {
"command": "./gradlew",
"args": ["run", "--quiet", "--console=plain"],
"cwd": "/absolute/path/to/trelloMCP",
"env": {
"TRELLO_API_KEY": "your_api_key_here",
"TRELLO_TOKEN": "your_token_here"
}
}
}
}Using the wrapper script:
{
"mcpServers": {
"trello": {
"command": "/absolute/path/to/trelloMCP/run-mcp-server.sh",
"env": {
"TRELLO_API_KEY": "your_api_key_here",
"TRELLO_TOKEN": "your_token_here"
}
}
}
}list_boards
- Lists all boards for the authenticated user
- No parameters required
- Returns: Board ID, name, description, URL
get_board
- Get detailed information about a specific board
- Parameters:
boardId(required): The board ID
create_board
- Create a new Trello board
- Parameters:
name(required): Board namedesc(optional): Board description
get_lists
- Get all lists on a specific board
- Parameters:
boardId(required): The board ID
create_list
- Create a new list on a board
- Parameters:
boardId(required): The board IDname(required): List namepos(optional): Position ('top', 'bottom', or number)
get_card
- Get detailed information about a card
- Parameters:
cardId(required): The card ID
get_cards_in_list
- Get all cards in a specific list
- Parameters:
listId(required): The list ID
create_card
- Create a new card in a list
- Parameters:
listId(required): The list IDname(required): Card titledesc(optional): Card descriptiondue(optional): Due date (ISO 8601 format)pos(optional): Position ('top', 'bottom', or number)
update_card
- Update an existing card
- Parameters:
cardId(required): The card IDname(optional): New card titledesc(optional): New descriptionclosed(optional): Archive/unarchive (boolean)idList(optional): Move to different list (list ID)due(optional): New due date (ISO 8601 format)
- McpServer: Main server implementing JSON-RPC 2.0 protocol over stdio
- TrelloService: HTTP client for Trello REST API using Ktor
- Models:
- MCP protocol models (JSON-RPC, tools, responses)
- Trello entity models (boards, lists, cards, labels, members)
Implements MCP specification version 2024-11-05:
- JSON-RPC 2.0 over standard input/output
- Capability negotiation during initialization
- Tool discovery and execution
- Structured error handling
src/main/kotlin/com/example/mcp/trello/
├── McpServer.kt # Main MCP server implementation
├── TrelloServer.kt # Entry point
├── TrelloService.kt # Trello API client
└── models/
├── McpModels.kt # MCP protocol models
└── TrelloModels.kt # Trello entity models
# Build JAR
./gradlew build
# Clean build
./gradlew clean build
# Run tests
./gradlew test- Kotlin 2.1.0
- Ktor Client 2.3.7 (HTTP client)
- kotlinx.serialization 1.6.2 (JSON handling)
- kotlin-logging 5.1.0 (Logging)
- dotenv-kotlin 6.4.1 (Environment configuration)
- Check that Java 21+ is installed:
java -version - Verify Trello credentials are set in
.envor environment variables - Check the error log at
/tmp/trello-mcp-stderr.log(when using wrapper script)
- Verify your API key and token are valid
- Check token has necessary permissions (read/write)
- Ensure board/list/card IDs are correct
If you encounter Java version issues:
# Stop Gradle daemon
./gradlew --stop
# Build with specific Java version
JAVA_HOME=/path/to/java21 ./gradlew buildThis project is provided as-is for use with the Model Context Protocol.