home / mcp / basecamp mcp server
Provides MCP access to Basecamp 3 data and actions via 46 tools (projects, todos, campfires, documents, cards) using FastMCP.
Configuration
View docs{
"mcpServers": {
"georgeantonopoulos-basecamp-mcp-server": {
"command": "/path/to/your/project/venv/bin/python",
"args": [
"/path/to/your/project/basecamp_fastmcp.py"
],
"env": {
"PYTHONPATH": "/path/to/your/project",
"USER_AGENT": "Your App Name ([email protected])",
"VIRTUAL_ENV": "/path/to/your/project/venv",
"BASECAMP_CLIENT_ID": "your_client_id_here",
"BASECAMP_ACCOUNT_ID": "your_account_id",
"BASECAMP_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}You can integrate Basecamp 3 with MCP to control Basecamp resources directly from Cursor or Claude Desktop. This MCP server uses the official FastMCP framework to provide 46 tools for complete Basecamp management, including projects, todos, campfires, documents, and card tables, with production-ready protocol compliance.
After you have the MCP server running, you connect your MCP client (Cursor or Claude Desktop) to the local MCP process. You will enable the basecamp MCP server in the client’s MCP configuration and then you can start using the 46 available tools to interact with Basecamp data. Practical workflows include listing projects, reading todo lists, creating cards in a column, uploading attachments, and querying messages across projects.
Prerequisites: Python 3.8 or newer, a Basecamp 3 account, and a Basecamp OAuth application.
# 1) Clone the project and install dependencies
git clone <repository-url>
cd basecamp-mcp
python setup.py
# 2) Configure OAuth credentials
# This will generate a .env template and secure storage for tokensConfigure the environment with your Basecamp OAuth credentials and account ID.
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 to establish a working session. You will authorize the app in a local web UI.
python oauth_app.py
```
Visit http://localhost:8000 and complete the OAuth flow.Start the MCP server script that exposes the Basecamp tools through MCP.
python basecamp_fastmcp.pyOptionally generate client configurations for Cursor or Claude Desktop, then restart your MCP client to pick up the new server.
The server stores OAuth tokens locally for security. Keep the .env file secure and do not commit it to version control. The OAuth tokens are stored in oauth_tokens.json.
For Claude Desktop integration, you can generate the configuration so Claude Desktop can connect to the local MCP server. The config typically resides under your user profile’s Claude configuration directory and references the local start command and environment.
If you see that tools are not available, ensure the virtual environment contains the MCP packages and that you restarted the client completely after starting the MCP server.
Check the OAuth flow if authentication fails. Re-run the authentication step and verify that the local OAuth flow completes successfully.
Fetch all Basecamp projects with details and metadata
Fetch details for a specific Basecamp project by ID
Retrieve todo lists within a given project
Retrieve todos from a todo list, with Basecamp pagination handled transparently
Search across projects, todos, and messages for a query string
Get comments for a Basecamp item (card, message, file)
Create a new comment on a Basecamp item
Get recent messages from a Basecamp campfire
Get daily check-in questions for a project
Get answers to daily check-in questions
Upload a file as an attachment to a Basecamp item
Get events for a recording
List webhooks for a project
Create a webhook for a project
Delete a webhook
List documents in a vault
Get a single document by ID
Create a new document in a vault
Update an existing document
Move a document to trash
Get the card table details for a project
List all columns in a card table
Get details for a specific column
Create a new column in a card table
Update a column title
Move a column to a new position
Update a column color
Put a column on hold (freeze work)
Remove hold from a column
Subscribe to notifications for changes in a column
Unsubscribe from notifications for a column
Get all cards in a column
Get details for a specific card
Create a new card in a column
Update a card
Move a card to a new column
Mark a card as complete
Mark a card as incomplete
Get all steps for a card
Create a new step for a card
Get details for a specific card step
Update a card step
Delete a card step
Mark a card step as complete
Mark a card step as incomplete