github analyzed 63b5702

georgeantonopoulos/basecamp-mcp-server

github

MCP server for Basecamp 3 with OAuth, FastMCP, and 75 tools for projects, todos, messages, card tables, docs, uploads, and search.

maintainer
georgeantonopoulos
license
MIT
first seen
2026-05-22
last seen
2026-06-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

tool count over time

60t
60t
capabilities 60 tools
transport stdio counts 60 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • archive_todo
  • complete_card
  • complete_card_step
  • complete_todo
  • create_card
  • create_card_step
  • create_column
  • create_comment
  • create_draft_message
  • create_message
  • create_todo
  • create_todolist
  • create_todolist_group
  • delete_card_step
  • delete_todo
  • get_campfire_lines
  • get_card
  • get_card_step
  • get_card_steps
  • get_card_table
  • get_card_tables
  • get_cards
  • get_column
  • get_columns
  • get_comments
  • get_daily_check_ins
  • get_forwards
  • get_inbox
  • get_message
  • get_message_board
  • get_message_categories
  • get_messages
  • get_project
  • get_projects
  • get_question_answers
  • get_todo
  • get_todolist
  • get_todolist_groups
  • get_todolists
  • get_todos
  • global_search
  • move_card
  • move_column
  • put_column_on_hold
  • remove_column_hold
  • reposition_todo
  • reposition_todolist_group
  • search_basecamp
  • trash_todolist
  • uncomplete_card
  • uncomplete_card_step
  • uncomplete_todo
  • unwatch_column
  • update_card
  • update_card_step
  • update_column
  • update_column_color
  • update_todo
  • update_todolist
  • watch_column
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 63b5702 · analyzer v18 · 2h ago

skills & prompt files 1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 6

  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_client.py :1296 with open(file_path, "rb") as f:
  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/generate_claude_desktop_config.py :11 from pathlib import Path
  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/generate_codex_config.py :12 import shutil
  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/generate_cursor_config.py :11 from pathlib import Path
  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/setup.py :11 from pathlib import Path
  • fs georgeantonopoulos-Basecamp-MCP-Server-63b5702/token_storage.py :35 with open(TOKEN_FILE, 'r') as f:

shell / exec 2

  • shell georgeantonopoulos-Basecamp-MCP-Server-63b5702/generate_codex_config.py :13 import subprocess
  • shell georgeantonopoulos-Basecamp-MCP-Server-63b5702/setup.py :9 import subprocess

network 3

  • net georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_client.py :3 from urllib.parse import unquote, urljoin, urlparse
  • net georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :15 import httpx
  • net georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_oauth.py :9 import requests

secrets 1

  • secrets georgeantonopoulos-Basecamp-MCP-Server-63b5702/token_storage.py :21 _token_file_env = os.environ.get('BASECAMP_MCP_TOKEN_FILE')

tool registrations 79

  • get_projects georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :173
  • get_project georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :199
  • search_basecamp georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :228
  • get_todolists georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :271
  • get_todos georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :301
  • get_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :332
  • create_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :362
  • update_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :417
  • delete_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :481
  • complete_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :513
  • uncomplete_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :544
  • archive_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :574
  • reposition_todo georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :599
  • global_search georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :634
  • get_comments georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :665
  • create_comment georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :701
  • get_campfire_lines georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :733
  • get_message_board georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :764
  • get_messages georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :793
  • get_message georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :824
  • get_message_categories georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :855
  • create_message georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :886
  • create_draft_message georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :929
  • get_inbox georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :953
  • get_forwards georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :983
  • get_forward georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1015
  • get_inbox_replies georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1046
  • get_inbox_reply georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1078
  • trash_forward georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1110
  • get_card_tables georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1141
  • get_card_table georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1171
  • get_columns georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1203
  • get_cards georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1234
  • create_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1265
  • get_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1300
  • create_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1330
  • move_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1362
  • complete_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1393
  • get_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1423
  • update_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1453
  • get_daily_check_ins georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1488
  • get_question_answers georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1521
  • update_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1556
  • move_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1588
  • update_column_color georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1620
  • put_column_on_hold georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1652
  • remove_column_hold georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1682
  • watch_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1712
  • unwatch_column georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1742
  • uncomplete_card georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1773
  • get_card_steps georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1804
  • create_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1835
  • get_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1869
  • update_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1899
  • delete_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1933
  • complete_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1963
  • uncomplete_card_step georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :1993
  • create_attachment georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2024
  • get_events georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2055
  • get_webhooks georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2086
  • create_webhook georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2116
  • delete_webhook georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2147
  • get_documents georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2178
  • get_document georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2209
  • create_document georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2239
  • create_draft_document georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2279
  • update_document georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2297
  • trash_document georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2329
  • get_uploads georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2360
  • get_upload georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2391
  • download_upload georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2421
  • download_attachment georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2475
  • get_todolist georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2544
  • create_todolist georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2566
  • update_todolist georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2595
  • trash_todolist georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2628
  • get_todolist_groups georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2652
  • create_todolist_group georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2676
  • reposition_todolist_group georgeantonopoulos-Basecamp-MCP-Server-63b5702/basecamp_fastmcp.py :2710

declared dependencies 8

  • requests@==2.31.0
  • python-dotenv@==1.0.0
  • flask@==2.3.3
  • flask-cors@==4.0.0
  • pytest@==7.4.0
  • mcp@[cli]>=1.2.0
  • httpx@>=0.25.0
  • anyio@>=4.0.0