- Rename and enhance methods for retrieving card tables and managing cards. - Introduce new methods for completing and uncompleting cards and card steps. - Update MCP server CLI to include new card and card step functionalities. - Revise README to reflect changes in card management tools and usage examples.
Basecamp MCP Integration
This project provides a MCP (Model Context Protocol) integration for Basecamp 3, allowing Cursor to interact with Basecamp directly through the MCP protocol.
Quick Setup for Cursor
Prerequisites
- Python 3.7+
- A Basecamp 3 account
- A Basecamp OAuth application (create one at https://launchpad.37signals.com/integrations)
Step-by-Step Instructions
-
Clone and setup the project:
git clone <repository-url> cd basecamp-mcp python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install --upgrade pip pip install -r requirements.txt -
Create your
.envfile with your Basecamp OAuth credentials:BASECAMP_CLIENT_ID=your_client_id_here BASECAMP_CLIENT_SECRET=your_client_secret_here BASECAMP_REDIRECT_URI=http://localhost:8000/auth/callback BASECAMP_ACCOUNT_ID=your_account_id_here USER_AGENT="Your App Name (your@email.com)" FLASK_SECRET_KEY=any_random_string_here MCP_API_KEY=any_random_string_here -
Authenticate with Basecamp:
python oauth_app.pyVisit http://localhost:8000 and complete the OAuth flow.
-
Generate and install Cursor configuration:
python generate_cursor_config.pyThis script will:
- Generate the correct MCP configuration with full paths
- Automatically detect your virtual environment
- Include the BASECAMP_ACCOUNT_ID environment variable
- Update your Cursor configuration file automatically
-
Restart Cursor completely (quit and reopen, not just reload)
-
Verify in Cursor:
- Go to Cursor Settings → MCP
- You should see "basecamp" with a green checkmark
- Available tools: "get_projects", "search_basecamp", "get_project", etc.
Test Your Setup
# Quick test the MCP server
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | python mcp_server_cli.py
# Run automated tests
python -m pytest tests/ -v
Available MCP Tools
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 listsearch_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 questions
Card Table Tools
get_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 incomplete
Example Cursor Usage
Ask Cursor things like:
- "Show me all my Basecamp projects"
- "What todos are in project X?"
- "Search for messages containing 'deadline'"
- "Get details for the Technology project"
- "Show me the card table for project X"
- "Create a new card in the 'In Progress' column"
- "Move this card to the 'Done' column"
- "Update the color of the 'Urgent' column to red"
- "Mark card as complete"
- "Show me all steps for this card"
- "Create a sub-task for this card"
- "Mark this card step as complete"
Architecture
The project consists of:
- OAuth App (
oauth_app.py) - Handles OAuth 2.0 flow with Basecamp - MCP Server (
mcp_server_cli.py) - Implements MCP protocol for Cursor - Token Storage (
token_storage.py) - Securely stores OAuth tokens - Basecamp Client (
basecamp_client.py) - Basecamp API client library - Search Utilities (
search_utils.py) - Search across Basecamp resources
Troubleshooting
Common Issues
- Yellow indicator (not green): Check that paths in Cursor config are correct
- "No tools available": Make sure you completed OAuth authentication first
- "Tool not found" errors: Restart Cursor completely and check
mcp_cli_server.log - Missing BASECAMP_ACCOUNT_ID: The config generator automatically includes this from your
.envfile
Configuration Issues
If automatic configuration doesn't work, manually edit your Cursor MCP configuration:
On macOS/Linux: ~/.cursor/mcp.json
On Windows: %APPDATA%\Cursor\mcp.json
{
"mcpServers": {
"basecamp": {
"command": "/full/path/to/your/project/venv/bin/python",
"args": ["/full/path/to/your/project/mcp_server_cli.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"
}
}
}
}
Key Requirements
Based on Cursor community forums, the following are essential:
- Full executable paths (not just "python")
- Proper environment variables (PYTHONPATH, VIRTUAL_ENV, BASECAMP_ACCOUNT_ID)
- Correct working directory (cwd)
- MCP protocol compliance (our server handles this correctly)
Finding Your Account ID
If you don't know your Basecamp account ID:
- Log into Basecamp in your browser
- Look at the URL - it will be like
https://3.basecamp.com/4389629/projects - The number (4389629 in this example) is your account ID
Security Notes
- Keep your
.envfile secure and never commit it to version control - The OAuth tokens are stored locally in
oauth_tokens.json - This setup is designed for local development use
License
This project is licensed under the MIT License.