Trello MCP Server
Trello MCP
Claude(Desktop/Cowork 및 Claude Code)를 Trello 보드에 연결합니다.
보드는 설정의 board_id로 선택됩니다. 특정 보드에 대한 하드코딩은 없습니다.
~/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)다음 두 곳에 등록됨:
~/Library/Application Support/Claude/claude_desktop_config.json(Desktop/Cowork)~/.claude.json(Claude Code)
두 파일 모두 절대 경로의 venv 인터프리터를 가리킵니다. 이는 중요합니다. 아래 참조.
매일 아침 연결이 끊기던 이유
이전 설정은 서버를 python3라는 기본 명령어로 실행했습니다. 이 Mac에는 네 개의 python3 바이너리가 있으며 오직 하나만 mcp 패키지를 가지고 있습니다:
인터프리터 | 버전 |
|
| 3.9.6 | 없음 |
| 3.9.6 | 없음 |
| 3.9.6 | 없음 |
| 3.12.7 | 있음 |
python3가 의미하는 바는 앱을 실행한 프로세스의 PATH에 따라 달라집니다.
Finder 또는 로그인 시 실행되면 앱은 최소 launchd PATH(/usr/bin:/bin:/usr/sbin:/sbin)를 상속받아 Python 3.9를 사용하게 되고 → ModuleNotFoundError: No module named 'mcp' → *"Trello MCP에 연결할 수 없습니다."*가 발생합니다. 터미널에서 실행되면 Anaconda가 우선인 셸 PATH를 상속받아 → 정상 작동합니다. 따라서: 대부분의 아침에는 고장나고, 수동으로 테스트할 때는 정상입니다.
이전 실패와 수정 사항을 재현합니다:
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인터프리터를 절대 경로로 지정하면 PATH 조회가 전혀 발생하지 않습니다. 앱은 알려진 하나의 바이너리를 실행하고, 이 바이너리는 알려진 하나의 패키지 디렉토리를 찾습니다. 오전 7시나 오후 7시나 동일한 결과입니다.
Related MCP server: trello-mcp-server
venv가 실제로 무엇인지 (그리고 무엇을 보호하지 않는지)
Python은 실행 중인 특정 인터프리터에 연결된 디렉토리에서 설치된 패키지를 찾습니다. 네 개의 인터프리터 = 네 개의 별도 패키지 디렉토리; mcp는 오직 하나에만 설치되었습니다. venv는 이 서버만을 위한 개인 디렉토리를 생성합니다.
기술적으로: python3 -m venv .venv는 .venv/bin/python3와 기본 설치를 기록한 pyvenv.cfg를 생성합니다. 시작 시 인터프리터는 이 파일을 읽고 sys.prefix를 venv로 설정하여 import가 .venv/lib/python3.12/site-packages를 참조하도록 합니다.
솔직한 한계: macOS에서 venv는 인터프리터를 복사하지 않고 심볼릭 링크하며, 표준 라이브러리는 여전히 기본 설치에서 로드됩니다:
.venv/bin/python3 -> /opt/anaconda3/bin/python3
stdlib = /opt/anaconda3/lib/python3.12따라서 이 venv는 여전히 Anaconda가 설치되어 있어야 합니다. 패키지는 격리하지만 인터프리터는 격리하지 않습니다.
이벤트 | 생존 여부? |
Anaconda 패키지 업데이트 ( | 예 |
Anaconda 3.12.x 포인트 업그레이드 | 예 |
macOS 업데이트 | 예 |
| 예 |
셸/프로필 변경 | 예 |
Anaconda 제거 | 아니요 — 재구축 필요 (아래) |
Anaconda가 Python 3.12 지원 중단 | 아니요 — 재구축 필요 |
이 폴더 이동/이름 변경 | 아니요 — 경로가 절대 경로임; 두 설정 모두 업데이트 필요 |
위 중 하나라도 발생한 후 재구축, 약 15초:
cd ~/mcp-servers/trello-mcp && rm -rf .venv
/path/to/any/python3.10+ -m venv .venv && ./.venv/bin/pip install -r requirements.txtAnaconda로부터 완전히 독립하려면 uv를 설치하고 uv 관리형 독립 Python으로 venv를 구축하세요. 여기서는 하지 않았습니다. 새 도구를 추가해야 하기 때문입니다.
mcp를 무턱대고 업그레이드하지 마세요
requirements.txt는 **mcp==1.27.2**로 고정되어 있습니다. 의도적입니다: mcp 2.0.0은 이 서버가 기반으로 하는 @app.list_tools() / @app.call_tool() 데코레이터 API를 제거했습니다. 최신 버전을 설치하면 즉시 서버가 AttributeError: 'Server' object has no attribute 'list_tools' 오류와 함께 중단됩니다. 이는 이 모든 설정이 해결하려던 연결 실패와 똑같이 보입니다. 새 API에 맞게 핸들러를 다시 작성할 때만 업그레이드하세요.
자격 증명 파일 작동 방식
~/.config/trello-mcp/config.json:
{ "api_key": "...", "token": "...", "board_id": "676f0bfc11723d27f716291d" }호스팅된 것도, 외부 서비스도 없습니다. 이 디스크의 일반 JSON 파일입니다. 두 가지가 "비밀"을 만듭니다:
코드 외부에 있으므로
trello_mcp.py를 복사하거나 게시해도 자격 증명이 포함되지 않습니다.chmod 600— 이 macOS 사용자 계정만 읽을 수 있습니다.
서버는 시작 시 이 파일을 읽고 값을 메모리에 보관합니다. 서버를 공유하려면 trello_mcp.py를 보내고, 수신자는 자신의 Trello 키로 자신의 설정을 만듭니다. 이 값은 암호화가 아닙니다. 공유하는 것과 공유하지 않는 것을 분리하는 것입니다.
Trello 토큰은 만료되지 않으며(dateExpires: null) 회원/보드/조직 읽기+쓰기 범위를 가집니다. Google Drive 서버의 OAuth 갱신 토큰과 달리 주기적인 재인증이 필요하지 않습니다.
리스트는 절대 하드코딩되지 않습니다
모든 리스트는 호출 시점에 이름으로 실시간 API에 대해 확인되므로, Trello에 추가된 리스트(분기별 새 클래스)는 즉시 작동합니다. 코드 변경이나 재시작이 필요 없습니다. 60초 캐시가 이를 저렴하게 유지합니다. 캐시 미스 시 "찾을 수 없음"을 보고하기 전에 한 번 다시 가져오므로, 몇 초 전에 생성된 리스트도 여전히 확인됩니다.
이 보드에서 측정: 리스트 가져오기는 약 307ms입니다. 캐시가 없으면 모든 도구 호출이 이 비용을 지불했습니다(get_cards는 두 번의 왕복 비용). 따라서 12개 카드 계획 세션은 다시 가져오기만으로 약 3.7초를 소모했습니다. 캐시를 사용하면 한 번의 가져오기로 버스트를 처리합니다.
코드에 있는 유일한 리스트 이름은 trello_mcp.py 상단의 세 가지 워크플로우 앵커입니다:
LIST_TODO = "To Do Today"
LIST_WORKING = "Working on"
LIST_DONE = "Done Today"이들은 이름이 지정되었습니다. 일상 루틴이 이들을 기준으로 정의되기 때문입니다(sort_todo_today는 이름 없이 "오늘을 의미하는 리스트를 정렬"하라고 지시할 수 없습니다). Trello에서 이름을 바꾸면 → 해당 블록과 Daily Trello CLAUDE.md에서 변경하세요. rename_list는 앵커 이름을 바꿀 때 경고합니다.
도구 (37개)
읽기 — get_all_lists, get_cards (첨부 파일, 레이블, 기한, 위치 포함), get_card (전체 세부 정보), search_cards, get_board_summary
카드 — create_card (첨부 파일/레이블/위치 포함), update_card, move_card, complete_card, archive_card, unarchive_card, copy_card, set_card_position, set_card_cover, sort_todo_today
첨부 파일 — get_attachments, add_attachment (URL 또는 로컬 파일 업로드), view_attachment (이미지 반환 — Claude가 카드의 스크린샷을 읽는 방식), delete_attachment
레이블 — get_labels, add_label_to_card, remove_label_from_card, create_label
댓글 — get_comments, add_comment
리스트 — create_list, rename_list, archive_list, move_list
체크리스트 — get_checklists, create_checklist, add_checklist_item, complete_checklist_item, uncheck_checklist_item, rename_checklist_item, delete_checklist_item, delete_checklist
알려진 보드 설정: 댓글 비활성화됨
add_comment는 보드 자체에서 댓글 기능이 꺼져 있기 때문에(prefs.comments: "disabled") 401을 반환합니다. 토큰이나 코드 문제가 아닙니다. 활성화하려면: Trello → 보드 메뉴 (···) → 설정 → 댓글 권한 → 보드 멤버. 도구가 이를 감지하고 원시 401 대신 설명을 제공합니다.
search_cards 참고 사항
Trello의 검색 인덱스는 몇 초 지연됩니다. 방금 생성된 카드는 즉시 나타나지 않을 수 있습니다. 대신 해당 리스트에서 get_cards를 사용하세요.
문제 해결
# 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"설정을 변경한 후에는 앱을 완전히 종료하고 다시 열어야 합니다. MCP 서버는 시작 시에만 실행됩니다.
이 스크립트의 이전 복사본이 여전히 ~/Claude/Projects/Daily Trello/trello_mcp.py 및 ~/Downloads/trello_mcp.py에 있습니다. 아무도 이를 가리키지 않습니다. 여전히 포함된 자격 증명이 있으므로 이 두 파일은 공유하지 마세요.
이력서/포트폴리오용
향후 이력서 세션에서 재구성하는 대신 정직한 버전을 제공하기 위해 여기에 보관합니다.
말할 가치가 있는 이야기는 기능이 아니라 실패입니다. 이 서버는 몇 주 동안 매일 아침 실패했고, 수동으로 테스트할 때마다 정상 작동했습니다. 이것이 전체 진단입니다: 코드는 괜찮았고 환경이 문제였습니다. 설정은 python3를 지정했습니다. 로그인 시 실행된 앱은 최소 PATH(/usr/bin:/bin:/usr/sbin:/sbin)를 상속받아 필요한 패키지가 없는 시스템 Python으로 확인되는 반면, 터미널은 올바르게 확인되는 PATH를 상속받습니다. 셸에서 테스트하는 것은 통과가 보장된 유일한 경우였습니다.
내가 실제로 한 일: 디버깅을 지시했습니다. "테스트할 때 작동한다"는 것을 코드에 대한 안심이 아닌 테스트에 대한 증거로 취급하고, 편리한 조건 대신 실제 실행 조건(축소된 PATH)을 재현하는 테스트를 요구하는 결정은 제가 내렸습니다.
그 결과 모든 통합에 적용되었습니다: 설정의 절대 인터프리터 경로, 프로젝트별 전용 환경, 모든 종속성 고정, 그리고 알려진 각 실패 모드를 확인하고 수리 가능한 것을 수리하는 진단 스크립트.
포트폴리오 분량의 글머리 기호:
macOS를 클라우드 서비스에 연결하는 세 가지 자동화 통합 개발을 지시했으며, 예약된 작업에서 무인 실행되었습니다. 셸과 앱 실행 컨텍스트 간의 PATH 해석 차이로 인한 반복적인 일일 실패의 근본 원인을 찾아내고, 절대 경로 및 고정 종속성 규칙을 수립하여 세 통합 모두에서 해당 문제를 제거했습니다.
전체 사례 연구: https://zeno-blade-creator.github.io/projects/personal-integrations.html
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
- jobwyreOAuthapp.jobwyre
Track job applications on a board: let Claude or ChatGPT read and update jobs, interviews, notes.
Read and manage your EasyKanban kanban boards: to-do summaries, create, update, and move cards.
AI-native Kanban board — connect Claude to claim, work and move your tasks over MCP.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to manage Trello boards, lists, cards, comments, checklists, labels, and members through natural language.16-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Trello boards, lists, and cards through natural language, using tools like list_boards, add_card, and move_card.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Trello boards, lists, and cards through natural language.135 npmISC
- AlicenseBqualityDmaintenanceEnables managing Trello boards, lists, cards, labels, checklists, members, and attachments through natural language via Claude Desktop.455 npmMIT