Skip to main content
Glama
zeno-blade-creator

Trello MCP Server

Trello MCP

Verbinde Claude (Desktop/Cowork und Claude Code) mit einem Trello-Board.

Das Board wird durch board_id in Ihrer Konfiguration ausgewählt – nichts über ein bestimmtes Board ist fest codiert.

~/mcp-servers/trello-mcp/
    trello_mcp.py     the server — no credentials inside, safe to share
    requirements.txt  mcp==1.27.2 (pinned, see below)
    .venv/            dedicated Python 3.12 environment
~/.config/trello-mcp/config.json   credentials (chmod 600, never shared)

Registriert in beiden:

  • ~/Library/Application Support/Claude/claude_desktop_config.json (Desktop/Cowork)

  • ~/.claude.json (Claude Code)

Beide verweisen auf den absoluten venv-Interpreter. Das ist wichtig – siehe unten.


Warum es sich jeden Morgen getrennt hat

Die alte Konfiguration startete den Server mit dem bloßen Befehl python3. Es gibt vier python3-Binärdateien auf diesem Mac und nur eine hat das mcp-Paket:

Interpreter

Version

mcp?

/usr/bin/python3

3.9.6

nein

/usr/local/bin/python3

3.9.6

nein

/Library/Frameworks/.../3.9/bin/python3

3.9.6

nein

/opt/anaconda3/bin/python3

3.12.7

ja

Welche python3 bedeutet, hängt vom PATH des Prozesses ab, der die App gestartet hat. Gestartet vom Finder oder beim Anmelden, erbt die App den minimalen launchd-PATH (/usr/bin:/bin:/usr/sbin:/sbin) und erhält Python 3.9 → ModuleNotFoundError: No module named 'mcp'„Trello MCP konnte nicht verbunden werden.“ Gestartet von einem Terminal, erbt sie den Shell-PATH, in dem Anaconda zuerst kommt → funktioniert. Daher: die meiste Zeit kaputt, bei manuellem Test in Ordnung.

Reproduzieren Sie den alten Fehler und die Behebung:

env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin python3 "$HOME/Claude/Projects/Daily Trello/trello_mcp.py"   # ModuleNotFoundError
env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin ~/mcp-servers/trello-mcp/.venv/bin/python3 -c "import mcp; print('ok')"  # ok

Den Interpreter mit absolutem Pfad zu benennen bedeutet, dass überhaupt keine PATH-Suche stattfindet. Die App startet eine bekannte Binärdatei, die ein bekanntes Paketverzeichnis findet. Gleiches Ergebnis um 7 Uhr morgens wie um 19 Uhr abends.


Related MCP server: trello-mcp-server

Was ein venv eigentlich ist (und wogegen es nicht schützt)

Python sucht nach installierten Paketen in einem Verzeichnis, das an den spezifischen laufenden Interpreter gebunden ist. Vier Interpreter = vier separate Paketverzeichnisse; mcp wurde nur in eines installiert. Ein venv erstellt ein privates, das nur zu diesem Server gehört.

Technisch: python3 -m venv .venv erstellt .venv/bin/python3 und eine pyvenv.cfg, die die Basisinstallation aufzeichnet. Beim Start liest der Interpreter diese Datei und setzt sys.prefix auf das venv, sodass import in .venv/lib/python3.12/site-packages auflöst.

Ehrliche Einschränkung: unter macOS verlinkt venv den Interpreter symbolisch, anstatt ihn zu kopieren, und die Standardbibliothek wird weiterhin aus der Basisinstallation geladen:

.venv/bin/python3 -> /opt/anaconda3/bin/python3
stdlib             = /opt/anaconda3/lib/python3.12

Dieses venv hängt also immer noch davon ab, dass Anaconda installiert ist. Es isoliert Pakete, nicht den Interpreter.

Ereignis

Überlebt?

Anaconda-Paketaktualisierungen (conda update)

ja

Anaconda 3.12.x-Punktupgrades

ja

macOS-Updates

ja

Jede PATH-Änderung – der eigentliche Fehler

ja

Shell/Profil-Änderungen

ja

Deinstallation von Anaconda

nein – neu erstellen (unten)

Anaconda lässt Python 3.12 fallen

nein – neu erstellen

Verschieben/Umbenennen dieses Ordners

nein – Pfade sind absolut; beide Konfigurationen aktualisieren

Nach einem dieser Punkte neu erstellen, ~15 Sekunden:

cd ~/mcp-servers/trello-mcp && rm -rf .venv
/path/to/any/python3.10+ -m venv .venv && ./.venv/bin/pip install -r requirements.txt

Wenn Sie jemals echte Unabhängigkeit von Anaconda wünschen, installieren Sie uv und erstellen Sie das venv aus einem uv-verwalteten eigenständigen Python. Hier nicht gemacht, da es ein neues Werkzeug auf dem Rechner hinzufügt.

Aktualisieren Sie mcp nicht blind

requirements.txt pinnt mcp==1.27.2. Das ist beabsichtigt: mcp 2.0.0 hat die @app.list_tools() / @app.call_tool()-Dekorator-API entfernt, auf der dieser Server basiert. Die Installation der neuesten Version zerbricht den Server sofort mit AttributeError: 'Server' object has no attribute 'list_tools' – was genau wie der Verbindungsfehler aussieht, den dieses gesamte Setup beheben sollte. Aktualisieren Sie nur zusammen mit dem Umschreiben der Handler für die neue API.


Wie die Anmeldedatendatei funktioniert

~/.config/trello-mcp/config.json:

{ "api_key": "...", "token": "...", "board_id": "676f0bfc11723d27f716291d" }

Nichts gehostet, kein externer Dienst – eine gewöhnliche JSON-Datei auf dieser Festplatte. Zwei Dinge machen sie „geheim“:

  1. Sie befindet sich außerhalb des Codes, sodass das Kopieren oder Veröffentlichen von trello_mcp.py keine Anmeldedaten mit sich bringt.

  2. chmod 600 – nur dieses macOS-Benutzerkonto kann sie lesen.

Der Server liest sie beim Start und hält die Werte im Speicher. Um den Server zu teilen, senden Sie trello_mcp.py; der Empfänger erstellt seine eigene Konfiguration mit seinem eigenen Trello-Schlüssel. Der Wert ist keine Verschlüsselung – es geht darum, das, was Sie teilen, von dem zu trennen, was Sie nicht teilen.

Das Trello-Token hat kein Ablaufdatum (dateExpires: null) und die Bereiche Mitglied/Board/Organisation Lesen+Schreiben. Anders als das OAuth-Refresh-Token des Google Drive-Servers benötigt es keine regelmäßige Neuautorisierung.


Listen sind nie fest codiert

Jede Liste wird zur Laufzeit anhand des Namens gegen die Live-API aufgelöst, sodass eine in Trello hinzugefügte Liste (eine neue Klasse pro Quartal) sofort funktioniert – keine Codeänderung, kein Neustart. Ein 60-Sekunden-Cache hält das günstig; ein Cache-Fehler erzwingt einen erneuten Abruf, bevor „nicht gefunden“ gemeldet wird, sodass eine vor Sekunden erstellte Liste immer noch aufgelöst wird.

Gemessen auf diesem Board: Ein Listenabruf dauert ~307 ms. Ohne den Cache zahlte jeder Tool-Aufruf dafür (get_cards kostet zwei Roundtrips), sodass eine Planungssitzung mit 12 Karten ~3,7 s allein für das erneute Abrufen verbrauchte. Damit deckt ein Abruf den Burst ab.

Die einzigen Listennamen im Code sind die drei Workflow-Anker am Anfang von trello_mcp.py:

LIST_TODO    = "To Do Today"
LIST_WORKING = "Working on"
LIST_DONE    = "Done Today"

Sie sind benannt, weil die tägliche Routine in Bezug auf sie definiert ist (sort_todo_today kann nicht angewiesen werden, „die Liste zu sortieren, die heute bedeutet“, ohne einen Namen). Benennen Sie eine in Trello um → ändern Sie sie in diesem Block und in der Daily Trello CLAUDE.md. rename_list warnt Sie, wenn Sie einen Anker umbenennen.


Tools (37)

Lesenget_all_lists, get_cards (enthält Anhänge, Labels, Fälligkeitsdatum, Position), get_card (volle Details), search_cards, get_board_summary

Kartencreate_card (mit Anhängen/Labels/Position), update_card, move_card, complete_card, archive_card, unarchive_card, copy_card, set_card_position, set_card_cover, sort_todo_today

Anhängeget_attachments, add_attachment (URL oder eine lokale Datei hochladen), view_attachment (gibt Bilder zurück, die anzeigbar sind – so liest Claude einen Screenshot auf einer Karte), delete_attachment

Labelsget_labels, add_label_to_card, remove_label_from_card, create_label

Kommentareget_comments, add_comment

Listencreate_list, rename_list, archive_list, move_list

Checklistenget_checklists, create_checklist, add_checklist_item, complete_checklist_item, uncheck_checklist_item, rename_checklist_item, delete_checklist_item, delete_checklist

Bekannte Board-Einstellung: Kommentieren ist deaktiviert

add_comment gibt einen 401 zurück, weil das Board selbst das Kommentieren deaktiviert hat (prefs.comments: "disabled") – kein Token- oder Code-Problem. So aktivieren: Trello → Board-Menü (···) → Einstellungen → Kommentarberechtigungen → Board-Mitglieder. Das Tool erkennt dies und erklärt es, anstatt einen rohen 401 anzuzeigen.

Hinweis zu search_cards

Der Suchindex von Trello hinkt ein paar Sekunden hinterher. Eine vor wenigen Augenblicken erstellte Karte wird möglicherweise noch nicht angezeigt; verwenden Sie stattdessen get_cards für ihre Liste.


Fehlerbehebung

# 1. Does the interpreter still work?
~/mcp-servers/trello-mcp/.venv/bin/python3 -c "import mcp; print('ok')"

# 2. Does the server start and reach Trello? (Ctrl-C to exit; silence = healthy)
~/mcp-servers/trello-mcp/.venv/bin/python3 ~/mcp-servers/trello-mcp/trello_mcp.py

# 3. Are the configs still pointing at the venv?
grep -A3 '"trello"' ~/.claude.json "$HOME/Library/Application Support/Claude/claude_desktop_config.json"

Nachdem Sie eine der Konfigurationen geändert haben, beenden und öffnen Sie die App vollständig neu – MCP-Server werden nur beim Start gestartet.

Ältere Kopien dieses Skripts befinden sich noch unter ~/Claude/Projects/Daily Trello/trello_mcp.py und ~/Downloads/trello_mcp.py. Nichts verweist auf sie; sie enthalten noch die eingebetteten Anmeldedaten, teilen Sie diese beiden also nicht.


Für den Lebenslauf / das Portfolio

Hier aufbewahrt, damit eine zukünftige Lebenslauf-Sitzung die ehrliche Version hat, anstatt sie zu rekonstruieren.

Die erzählenswerte Geschichte ist der Fehler, nicht die Funktion. Dieser Server fiel wochenlang jeden Morgen aus und funktionierte jedes Mal, wenn er von Hand getestet wurde – was die ganze Diagnose ist: Der Code war in Ordnung und die Umgebung nicht. Die Konfiguration nannte python3; eine beim Anmelden gestartete App erbt einen minimalen PATH (/usr/bin:/bin:/usr/sbin:/sbin), in dem dies zu einem System-Python mit keinem der erforderlichen Pakete aufgelöst wird, während ein Terminal einen PATH erbt, in dem es korrekt aufgelöst wird. Das Testen von einer Shell aus war der eine Fall, der garantiert bestanden wurde.

Was ich tatsächlich getan habe: die Fehlersuche geleitet. Meine waren die Entscheidungen – „es funktioniert, wenn ich es teste“ als Beweis über den Test zu behandeln, anstatt als Beruhigung über den Code, und einen Test zu verlangen, der die tatsächlichen Startbedingungen reproduziert (bereinigter PATH) anstelle der bequemen.

Was daraus hervorging, wird jetzt auf jede Integration angewendet: absolute Interpreter-Pfade in Konfigurationen, eine dedizierte Umgebung pro Projekt, jede Abhängigkeit gepinnt, und ein Diagnose-Skript, das jeden bekannten Fehlermodus überprüft und repariert, was es kann.

Lebenslauf-gerechter Aufzählungspunkt:

Leitete die Entwicklung von drei Automatisierungsintegrationen, die macOS mit Cloud-Diensten verbinden, die unbeaufsichtigt in geplanten Jobs ausgeführt werden. Ursachenanalyse eines wiederkehrenden täglichen Fehlers durch PATH-Auflösung, die sich zwischen Shell- und App-Startkontexten unterscheidet, und etablierte Konventionen für absolute Pfade und gepinnte Abhängigkeiten, die diesen in allen drei beseitigten.

Vollständige Fallstudie: https://zeno-blade-creator.github.io/projects/personal-integrations.html

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Manage projects, tasks, time tracking, and team collaboration through natural language.

  • Connect AI to your Attio CRM. Manage contacts, companies, deals, and sales pipelines. Create tasks…

  • Streamline your Attio workflows using natural language to search, create, update, and organize com…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zeno-blade-creator/trello-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server