Basecamp-MCP-Server
If you are the rightful owner of Basecamp-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This project provides a Model Context Protocol (MCP) integration for Basecamp 3, allowing Cursor to interact with Basecamp directly through the MCP protocol.
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
.env
file 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.py
Visit http://localhost:8000 and complete the OAuth flow.
-
Generate and install Cursor configuration:
python generate_cursor_config.py
This 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
.env
file
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
.env
file 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.