MCP-сервер для Trello: просмотр досок, списков и карточек, создание и перемещение задач, управление метками и комментариями. AI-агент полностью управляет Trello-воркспейсом через естественный язык.
Требуется: Trello API Key и Token.
Получить: trello.com/power-ups/admin → создать Power-Up → API Key + Token.
# Claude Desktop — claude_desktop_config.json:
{ "mcpServers": { "trello": { "command": "npx", "args": ["-y", "@delorenj/mcp-server-trello"], "env": { "TRELLO_API_KEY": "key", "TRELLO_TOKEN": "token" } } } }
# Claude Code (CLI):
claude mcp add trello --env TRELLO_API_KEY=key --env TRELLO_TOKEN=token -- npx -y @delorenj/mcp-server-trello
# OpenCode — ~/.config/opencode/opencode.json:
{ "mcp": { "trello": { "type": "local", "command": ["npx", "-y", "@delorenj/mcp-server-trello"], "environment": { "TRELLO_API_KEY": "key", "TRELLO_TOKEN": "token" } } } }
Сервер протокола контекста модели (MCP), предоставляющий инструменты для взаимодействия с досками Trello. Этот сервер обеспечивает бесшовную интеграцию с API Trello, автоматически обрабатывая ограничение частоты запросов, типобезопасность и обработку ошибок.
Этот проект теперь работает на Bun! 🚀 Мы перенесли весь проект на среду выполнения Bun, что обеспечило прирост производительности от 2,8 до 4,4 раза. Все существующие команды npx, pnpx и npm продолжат работать безупречно.
examples с детальными реализациями на JavaScript, Python и TypeScript.Плюс: Современная архитектура MCP SDK, улучшенная типобезопасность и исчерпывающая документация!
Для подробного списка изменений, пожалуйста, обратитесь к файлу CHANGELOG.md.
Этот репозиторий распространяется как совместимый с BMAD пакет навыков для
сервера Trello MCP. Установите директорию skill/ через рабочий процесс
управления навыками вашего агента или поместите её в директорию навыков агента.
Когда агент активирует навык, он следует файлу skill/SKILL.md. При первом
запуске агент выполняет встроенный установщик:
bash skill/scripts/install.sh
Установщик собирает сервер MCP из skill/assets/source/ при доступности Bun.
Если Bun недоступен, он использует опубликованный путь установки Smithery
для @delorenj/mcp-server-trello и создаёт тот же локальный путь команды
build/index.js, который используется при проверке активации навыка.
Навык — это точка входа для агента в этом репозитории.
skill/SKILL.md: Правила активации, маршрутизации и рабочего процесса агента.skill/scripts/install.sh: Установщик для первого запуска встроенного сервера.skill/references/trello-mcp/: Конкретные справочники по настройке, инструментам,
рабочим процессам и подводным камням.skill/assets/source/: Встроенный исходный код сервера MCP, используемый для локальной сборки.Для ИИ-агентов начните с skill/SKILL.md, а не с этого README. README — это
обзор для людей; справочники навыка являются рабочей поверхностью для выбора
инструментов и правил рабочих процессов Trello.
Сопровождающие могут обновить встроенный исходный код перед упаковкой с помощью:
mise run package
Сервер можно настроить с помощью переменных окружения. Создайте файл .env в корневой директории со следующими переменными:
# Обязательно: Ваши учётные данные API Trello
TRELLO_API_KEY=your-api-key
TRELLO_TOKEN=your-token
# Необязательно (устарело): ID доски по умолчанию (можно изменить позже с помощью set_active_board)
TRELLO_BOARD_ID=your-board-id
# Необязательно: ID рабочего пространства для начала (можно изменить позже с помощью set_active_workspace)
TRELLO_WORKSPACE_ID=your-workspace-id
# Необязательно: URL-адрес HTTPS-прокси (для корпоративных прокси или ограниченных сетей)
https_proxy=http://your-proxy:8080
# Необязательно: Ограничение доступа к определённым рабочим пространствам (ID через запятую)
# Если установлено, только указанные рабочие пространства будут доступны через инструменты MCP
TRELLO_ALLOWED_WORKSPACES=workspace-id-1,workspace-id-2
Поддержка прокси: Если вы находитесь за корпоративным прокси или в среде, где трафик маршрутизируется через прокси, установите переменную окружения
https_proxyилиHTTPS_PROXY. Сервер автоматически маршрутизирует все запросы API Trello через указанный прокси.
Вы можете получить эти значения:
list_workspacesНачиная с версии 0.3.0, сервер MCP поддерживает несколько способов работы с досками:
Многодосочная поддержка: Все методы теперь принимают необязательный параметр boardId
TRELLO_BOARD_ID и укажите boardId в каждом вызове APITRELLO_BOARD_ID как значение по умолчанию и при необходимости переопределите параметром boardIdДинамический выбор доски: Используйте инструменты управления рабочими пространствами
TRELLO_BOARD_ID в вашем файле .env используется как начальный/ID доски по умолчаниюset_active_board~/.trello-mcp/config.json)set_active_workspaceЭто позволяет работать с несколькими досками и рабочими пространствами без перезапуска сервера.
Вы можете опционально ограничить доступ MCP к определённым рабочим пространствам с помощью переменной окружения TRELLO_ALLOWED_WORKSPACES. Это полезно для:
Когда TRELLO_ALLOWED_WORKSPACES установлена:
- list_workspaces возвращает только рабочие пространства из разрешённого списка
- list_boards возвращает только доски из разрешённых рабочих пространств
- set_active_workspace отклоняет рабочие пространства, не входящие в разрешённый список
- list_boards_in_workspace отклоняет ID рабочих пространств, не входящих в разрешённый список
- create_board отклоняет создание в неразрешённых рабочих пространствах
Пример конфигурации:
# Разрешить доступ только к двум конкретным рабочим пространствам
TRELLO_ALLOWED_WORKSPACES=697c549ce04dc460af133a75,5f8a3b2c1d4e5f6a7b8c9d0e
Если TRELLO_ALLOWED_WORKSPACES не установлена или пуста, будут доступны все рабочие пространства, к которым имеет доступ токен (поведение по умолчанию).
{
name: 'list_boards',
arguments: {}
}
{
name: 'set_active_board',
arguments: {
boardId: "abc123" // ID из ответа list_boards
}
}
{
name: 'list_workspaces',
arguments: {}
}
{
name: 'set_active_workspace',
arguments: {
workspaceId: "xyz789" // ID из ответа list_workspaces
}
}
{
name: 'get_active_board_info',
arguments: {}
}
При работе с датами в сервере Trello MCP, пожалуйста, обратите внимание на различные требования к форматам:
dueDate): Принимает полный формат ISO 8601 с временем (например, 2023-12-31T12:00:00Z)start): Принимает только дату в формате YYYY-MM-DD (например, 2025-08-05)Это различие соответствует соглашениям API Trello, где даты начала являются дневными маркерами, тогда как сроки выполнения могут включать конкретное время.
Получить все элементы чек-листа по имени.
{
name: 'get_checklist_items',
arguments: {
name: string, // Имя чек-листа для извлечения элементов
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
}
}
Добавить новый элемент в существующий чек-лист.
{
name: 'add_checklist_item',
arguments: {
text: string, // Текстовое содержимое элемента чек-листа
checkListName: string, // Имя чек-листа, в который нужно добавить элемент
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
}
}
Искать элементы чек-листа, содержащие определенный текст.
{
nbsp; name: 'find_checklist_items_by_description',
arguments: {
description: string, // Текст для поиска в описаниях элементов чек-листа
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
nbsp; }
}
Получить все элементы из чек-листа «Критерии приемки».
{
name: 'get_acceptance_criteria',
arguments: {
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
}
}
Получить полный чек-лист со всеми элементами и процентом выполнения.
{
name: 'get_checklist_by_name',
arguments: {
name: string, // Имя чек-листа для извлечения
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
}
}
Возвращает: Объект CheckList с:
id: Идентификатор чек-листаname: Имя чек-листаitems: Массив объектов CheckListItempercentComplete: Процент выполнения (0-100)Обновить существующий элемент чек-листа.
{
name: 'update_checklist_item',
arguments: {
cardId: string, // ID карточки, содержащей элемент чек-листа
checkItemId: string, // ID элемента чек-листа для обновления
name?: string, // Необязательный: новый текст элемента чек-листа
state?: 'complete' | 'incomplete', // Необязательный: новое состояние элемента чек-листа
pos?: number | 'top' | 'bottom', // Необязательный: новая позиция элемента чек-листа
due?: string | null, // Необязательный: дата окончания в формате ISO 8601 или null для очистки
dueReminder?: number | null, // Необязательный: напоминание в минутах или null для очистки
idMember?: string | null // Необязательный: ID участника для назначения или null для очистки
}
}
Удалить существующий элемент чек-листа.
{
name: 'delete_checklist_item',
arguments: {
cardId: string, // ID карточки, содержащей элемент чек-листа
checkItemId: string // ID элемента чек-листа для удаления
}
}
Получить полные детали конкретной карточки Trello с уровня восприятия человека.
{
name: 'get_card',
arguments: {
cardId: string, // ID карточки Trello (короткий ID вроде 'FdhbArbK' или полный ID)
includeMarkdown?: boolean // Возвращать форматированный markdown вместо JSON (по умолчанию: false)
}
}
Возвращает: Полные данные карточки, включая:
Получить все карточки из определенного списка.
{
name: 'get_cards_by_list_id',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
listId: string // ID списка Trello
}
}
Получить все списки с доски.
{
name: 'get_lists',
arguments: {
boardId?: string // Необязательный: ID доски (используется значение по умолчанию, если не указан)
}
}
Получить последние действия на доске.
{
name: 'get_recent_activity',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
limit?: number // Необязательный: Количество действий для получения (по умолчанию: 10)
}
}
Добавить новую карточку в указанный список.
{
name: 'add_card_to_list',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
listId: string, // ID списка, в который добавляется карточка
name: string, // Имя карточки
description?: string, // Необязательный: Описание карточки
dueDate?: string, // Необязательный: Срок (формат ISO 8601 со временем)
start?: string, // Необязательный: Дата начала (формат YYYY-MM-DD, только дата)
labels?: string[] // Необязательный: Массив ID меток
}
}
Обновить детали существующей карточки.
{
name: 'update_card_details',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
cardId: string, // ID карточки для обновления
name?: string, // Необязательный: Новое имя для карточки
description?: string, // Необязательный: Новое описание
dueDate?: string, // Необязательный: Новый срок (формат ISO 8601 со временем)
start?: string, // Необязательный: Новая дата начала (формат YYYY-MM-DD, только дата)
dueComplete?: boolean,// Необязательный: Пометить срок как выполненный (true) или невыполненный (false)
labels?: string[] // Необязательный: Новый массив ID меток
}
}
Отправить карточку в архив.
{
name: 'archive_card',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
cardId: string // ID карточки для архивации
}
}
Добавить новый список на доску.
{
nbsp; name: 'add_list_to_board',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
name: string // Имя нового списка
}
}
Отправить список в архив.
{
name: 'archive_list',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
listId: string // ID списка для архивации
}
}
Обновить имя, состояние архивации, подписки или доску списка. Используйте update_list_position для изменения порядка списков на доске.
{
name: 'update_list',
arguments: {
listId: string, // ID списка для обновления
name?: string, // Необязательный: Новое имя для списка
closed?: boolean, // Необязательный: Закрыть (архивировать) список или нет
subscribed?: boolean, // Необязательный: Подписаться на список или нет
idBoard?: string // Необязательный: ID доски для перемещения списка
}
}
Обновить позицию списка на доске. Trello использует дробную индексация: каждый список имеет позицию с плавающей запятой, чтобы разместить список между двумя другими, используйте среднее значение их позиций (например, между pos 1024 и 2048 используйте 1536). Используйте ярлыки "top"/"bottom" для перемещения на края.
{
name: 'update_list_position',
arguments: {
listId: string, // ID списка для изменения позиции
position: string // "top", "bottom" или положительное числовое строка (например, "1536")
}
}
Получить все карточки, назначенные текущему пользователю.
{
name: 'get_my_cards',
arguments: {}
}
Переместить карточку в другой список.
{
name: 'move_card',
arguments: {
boardId?: string, // Необязательный: ID целевой доски (используется значение по умолчанию, если не указан)
cardId: string, // ID карточки для перемещения
listId: string // ID целевого списка
}
}
Прикрепить изображение к карточке напрямую по URL.
{
name: 'attach_image_to_card',
arguments: {
boardId?: string, // Необязательный: ID доски (используется значение по умолчанию, если не указан)
cardId: string, // ID карточки для прикрепления изображения
imageUrl: string, // URL изображения для прикрепления
name?: string // Необязательный: Имя для вложения (по умолчанию: "Вложение изображения")
}
}
Прикрепите файл любого типа к карточке по URL или локальному пути (например, file:///path/to/your/file.pdf).
{
name: 'attach_file_to_card',
arguments: {
boardId?: string, // Необязательно: ID доски (если не указан, используется активная доска по умолчанию)
cardId: string, // ID карточки, к которой прикрепить файл
fileUrl: string, // URL или локальный путь (с использованием протокола file://) к файлу для прикрепления
name?: string, // Необязательно: Имя для вложения (по умолчанию для локальных файлов используется имя файла)
mimeType?: string // Необязательно: MIME-тип (например, "application/pdf", "text/plain", "video/mp4")
}
}
Добавить комментарий к карточке Trello.
{
name: 'add_comment',
arguments: {
cardId: string, // ID карточки, к которой добавить комментарий
text: string // Текст комментария для добавления
}
}
Обновить существующий комментарий к карточке.
{
name: 'update_comment',
arguments: {
commentId: string, // ID комментария для изменения
text: string // Новый текст комментария
}
}
Удалить комментарий из карточки.
{
name: 'delete_comment',
arguments: {
commentId: string // ID комментария для удаления
}
}
Получить все комментарии указанной карточки без загрузки всех данных карточки.
{
name: 'get_card_comments',
arguments: {
cardId: string, // ID карточки для получения комментариев
limit?: number // Необязательно: Максимальное количество комментариев для получения (по умолчанию: 100)
}
}
Вывести список всех досок, к которым у пользователя есть доступ.
{
name: 'list_boards',
arguments: {}
}
Установить активную доску для последующих операций.
{
name: 'set_active_board',
arguments: {
boardId: string // ID доски для установки в качестве активной
}
}
Вывести список всех рабочих пространств, к которым у пользователя есть доступ.
{
name: 'list_workspaces',
arguments: {}
}
Установить активное рабочее пространство для последующих операций.
{
name: 'set_active_workspace',
arguments: {
workspaceId: string // ID рабочего пространства для установки в качестве активного
}
}
Вывести список всех досок в указанном рабочем пространстве.
{
name: 'list_boards_in_workspace',
arguments: {
workspaceId: string // ID рабочего пространства для получения списка досок
}
}
Получить информацию о текущей активной доске.
{
name: 'get_active_board_info',
arguments: {}
}
Примечание: Пользовательские поля требуют тарифного плана Trello Standard или выше.
Получить все определения пользовательских полей на доске. Для полей выпадающего списка также возвращаются доступные варианты с их идентификаторами.
{
name: 'get_board_custom_fields',
arguments: {
boardId?: string // Необязательно: ID доски (если не указан, используется активная доска по умолчанию)
}
}
Возвращает: Массив определений пользовательских полей, включая:
- ID поля, имя, тип (text, number, checkbox, date, list)
- Для полей типа list: доступные варианты с ID (используйте эти ID при установке значений)
Установить или очистить значение пользовательского поля на карточке.
{
name: 'update_card_custom_field',
arguments: {
cardId: string, // ID карточки для обновления
customFieldId: string,// ID определения пользовательского поля
type: string, // Тип поля: 'text' | 'number' | 'checkbox' | 'date' | 'list' | 'clear'
value?: string // Значение для установки (не требуется, когда тип равен 'clear')
}
}
Формат значения в зависимости от типа:
- text: любая строка
- number: строка числа (например, "42.5")
- checkbox: "true" или "false"
- date: строка ISO 8601 (например, "2025-12-31T00:00:00.000Z")
- list: ID варианта из результата get_board_custom_fields
- clear: опустите значение, чтобы удалить значение поля
Сервер Trello MCP отлично сочетается с @flowluap/ideogram-mcp-server для создания визуального контента с помощью ИИ. Генерируйте изображения с помощью Ideogram и прикрепляйте их напрямую к карточкам Trello!
// С использованием ideogram-mcp-server
{
name: 'generate_image',
arguments: {
prompt: "A futuristic dashboard design with neon accents",
aspect_ratio: "16:9"
}
}
// Возвращает: { image_url: "https://..." }
// С использованием trello-mcp-server
{
name: 'attach_image_to_card',
arguments: {
cardId: "your-card-id",
imageUrl: "https://...", // URL от Ideogram
name: "Dashboard Mockup v1"
}
}
Добавьте оба сервера в конфигурацию Claude Desktop. Используйте bunx для самой быстрой загрузки.
{
"mcpServers": {
"trello": {
"command": "bunx",
"args": ["@delorenj/mcp-server-trello"],
"env": {
"TRELLO_API_KEY": "your-trello-api-key",
"TRELLO_TOKEN": "your-trello-token"
}
},
"ideogram": {
"command": "bunx",
"args": ["@flowluap/ideogram-mcp-server"],
"env": {
"IDEOGRAM_API_KEY": "your-ideogram-api-key"
}
}
}
}
Теперь вы можете бесшовно создавать визуальный контент и организовывать его в Trello, всё это в рамках Claude!
Сервер реализует алгоритм «токен.bucket» для ограничения частоты запросов в соответствии с лимитами API Trello:
Ограничение частоты запросов обрабатывается автоматически, и при достижении лимитов запросы будут ставиться в очередь.
Сервер предоставляет подробные сообщения об ошибках для различных сценариев:
git clone https://github.com/delorenj/mcp-server-trello
cd mcp-server-trello
bun install
bun run build
Для запуска тестов выполните следующую команду:
bun test
Пакет evals загружает клиент mcp, который затем запускает файл index.ts, поэтому нет необходимости пересобирать проект между тестами. Вы можете загружать переменные окружения, используя префикс команды bunx. Полная документация доступна здесь.
OPENAI_API_KEY=your-key bunx mcp-eval src/evals/evals.ts src/index.ts
Приглашаем к участию в разработке!
Этот проект лицензирован в соответствии с лицензией MIT - подробности смотрите в файле LICENSE.