
Basecamp
STDIOMCP integration for Basecamp 3, enabling Cursor to interact with Basecamp directly.
MCP integration for Basecamp 3, enabling Cursor to interact with Basecamp directly.
This project provides a FastMCP-powered integration for Basecamp 3, allowing Cursor to interact with Basecamp directly through the MCP protocol.
✅ Migration Complete: Successfully migrated to official Anthropic FastMCP framework with 100% feature parity (all 46 tools)
🚀 Ready for Production: Full protocol compliance with MCP 2025-06-18
This server works with both Cursor and Claude Desktop. Choose your preferred client:
Clone and run setup script:
git clone <repository-url> cd basecamp-mcp python setup.py
The setup script automatically:
.env
template fileConfigure OAuth credentials:
Edit the generated .env
file:
BASECAMP_CLIENT_ID=your_client_id_here BASECAMP_CLIENT_SECRET=your_client_secret_here BASECAMP_ACCOUNT_ID=your_account_id_here USER_AGENT="Your App Name ([email protected])"
Authenticate with Basecamp:
python oauth_app.py
Visit http://localhost:8000 and complete the OAuth flow.
Generate Cursor configuration:
python generate_cursor_config.py
Restart Cursor completely (quit and reopen, not just reload)
Verify in Cursor:
# Quick test the FastMCP server (works with both clients) echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}} {"jsonrpc":"2.0","method":"notifications/initialized","params":{}} {"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | python basecamp_fastmcp.py # Run automated tests python -m pytest tests/ -v
Based on the official MCP quickstart guide, Claude Desktop integration follows these steps:
Complete the basic setup (steps 1-3 from Cursor setup above):
git clone <repository-url> cd basecamp-mcp python setup.py # Configure .env file with OAuth credentials python oauth_app.py
Generate Claude Desktop configuration:
python generate_claude_desktop_config.py
Restart Claude Desktop completely (quit and reopen the application)
Verify in Claude Desktop:
The configuration is automatically created at:
~/Library/Application Support/Claude/claude_desktop_config.json
~/AppData/Roaming/Claude/claude_desktop_config.json
~/.config/claude-desktop/claude_desktop_config.json
Example configuration generated:
{ "mcpServers": { "basecamp": { "command": "/path/to/your/project/venv/bin/python", "args": ["/path/to/your/project/basecamp_fastmcp.py"], "env": { "PYTHONPATH": "/path/to/your/project", "VIRTUAL_ENV": "/path/to/your/project/venv", "BASECAMP_ACCOUNT_ID": "your_account_id" } } } }
Ask Claude things like:
Check Claude Desktop logs (following official debugging guide):
# macOS/Linux - Monitor logs in real-time tail -n 20 -f ~/Library/Logs/Claude/mcp*.log # Check for specific errors ls ~/Library/Logs/Claude/mcp-server-basecamp.log
Common issues:
oauth_tokens.json
exists)Once configured, you can use these tools in Cursor:
get_projects
- Get all Basecamp projectsget_project
- Get details for a specific projectget_todolists
- Get todo lists for a projectget_todos
- Get todos from a todo list (returns all pages; handles Basecamp pagination transparently)search_basecamp
- Search across projects, todos, and messagesget_comments
- Get comments for a Basecamp itemget_campfire_lines
- Get recent messages from a Basecamp campfireget_daily_check_ins
- Get project's daily check-in questionsget_question_answers
- Get answers to daily check-in questionscreate_attachment
- Upload a file as an attachmentget_events
- Get events for a recordingget_webhooks
- List webhooks for a projectcreate_webhook
- Create a webhookdelete_webhook
- Delete a webhookget_documents
- List documents in a vaultget_document
- Get a single documentcreate_document
- Create a documentupdate_document
- Update a documenttrash_document
- Move a document to trashget_card_table
- Get the card table details for a projectget_columns
- Get all columns in a card tableget_column
- Get details for a specific columncreate_column
- Create a new column in a card tableupdate_column
- Update a column titlemove_column
- Move a column to a new positionupdate_column_color
- Update a column colorput_column_on_hold
- Put a column on hold (freeze work)remove_column_hold
- Remove hold from a column (unfreeze work)watch_column
- Subscribe to notifications for changes in a columnunwatch_column
- Unsubscribe from notifications for a columnget_cards
- Get all cards in a columnget_card
- Get details for a specific cardcreate_card
- Create a new card in a columnupdate_card
- Update a cardmove_card
- Move a card to a new columncomplete_card
- Mark a card as completeuncomplete_card
- Mark a card as incompleteget_card_steps
- Get all steps (sub-tasks) for a cardcreate_card_step
- Create a new step (sub-task) for a cardget_card_step
- Get details for a specific card stepupdate_card_step
- Update a card stepdelete_card_step
- Delete a card stepcomplete_card_step
- Mark a card step as completeuncomplete_card_step
- Mark a card step as incompleteAsk Cursor things like:
The project uses the official Anthropic FastMCP framework for maximum reliability and compatibility:
basecamp_fastmcp.py
) - Official MCP SDK with 46 tools, compatible with both Cursor and Claude Desktopoauth_app.py
) - Handles OAuth 2.0 flow with Basecamptoken_storage.py
) - Securely stores OAuth tokensbasecamp_client.py
) - Basecamp API client librarysearch_utils.py
) - Search across Basecamp resourcessetup.py
) - One-command installationgenerate_cursor_config.py
- For Cursor IDE integrationgenerate_claude_desktop_config.py
- For Claude Desktop integrationpython setup.py
to create proper virtual environment.env
file, then re-run the config generatorProblem: Server won't start
# Test if FastMCP server works: ./venv/bin/python -c "import mcp; print('✅ MCP available')" # If this fails, run: python setup.py
Problem: Wrong Python version
python --version # Must be 3.8+ # If too old, install newer Python and re-run setup
Problem: Authentication fails
# Check OAuth flow: python oauth_app.py # Visit http://localhost:8000 and complete login
Cursor config location: ~/.cursor/mcp.json
(macOS/Linux) or %APPDATA%\Cursor\mcp.json
(Windows)
Claude Desktop config location: ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS)
{ "mcpServers": { "basecamp": { "command": "/full/path/to/your/project/venv/bin/python", "args": ["/full/path/to/your/project/basecamp_fastmcp.py"], "cwd": "/full/path/to/your/project", "env": { "PYTHONPATH": "/full/path/to/your/project", "VIRTUAL_ENV": "/full/path/to/your/project/venv", "BASECAMP_ACCOUNT_ID": "your_account_id" } } } }
If you don't know your Basecamp account ID:
https://3.basecamp.com/4389629/projects
.env
file secure and never commit it to version controloauth_tokens.json
This project is licensed under the MIT License.