home / mcp / basecamp mcp server

Basecamp MCP Server

Provides MCP access to Basecamp 3 data and actions via 46 tools (projects, todos, campfires, documents, cards) using FastMCP.

Installation
Add the following to your MCP client configuration file.

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.

How to use

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.

How to install

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 tokens

Configure 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.py

Optionally generate client configurations for Cursor or Claude Desktop, then restart your MCP client to pick up the new server.

Additional configuration and security notes

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.

Troubleshooting

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.

Available tools

get_projects

Fetch all Basecamp projects with details and metadata

get_project

Fetch details for a specific Basecamp project by ID

get_todolists

Retrieve todo lists within a given project

get_todos

Retrieve todos from a todo list, with Basecamp pagination handled transparently

search_basecamp

Search across projects, todos, and messages for a query string

get_comments

Get comments for a Basecamp item (card, message, file)

create_comment

Create a new comment on a Basecamp item

get_campfire_lines

Get recent messages from a Basecamp campfire

get_daily_check_ins

Get daily check-in questions for a project

get_question_answers

Get answers to daily check-in questions

create_attachment

Upload a file as an attachment to a Basecamp item

get_events

Get events for a recording

get_webhooks

List webhooks for a project

create_webhook

Create a webhook for a project

delete_webhook

Delete a webhook

get_documents

List documents in a vault

get_document

Get a single document by ID

create_document

Create a new document in a vault

update_document

Update an existing document

trash_document

Move a document to trash

get_card_table

Get the card table details for a project

get_columns

List all columns in a card table

get_column

Get details for a specific column

create_column

Create a new column in a card table

update_column

Update a column title

move_column

Move a column to a new position

update_column_color

Update a column color

put_column_on_hold

Put a column on hold (freeze work)

remove_column_hold

Remove hold from a column

watch_column

Subscribe to notifications for changes in a column

unwatch_column

Unsubscribe from notifications for a column

get_cards

Get all cards in a column

get_card

Get details for a specific card

create_card

Create a new card in a column

update_card

Update a card

move_card

Move a card to a new column

complete_card

Mark a card as complete

uncomplete_card

Mark a card as incomplete

get_card_steps

Get all steps for a card

create_card_step

Create a new step for a card

get_card_step

Get details for a specific card step

update_card_step

Update a card step

delete_card_step

Delete a card step

complete_card_step

Mark a card step as complete

uncomplete_card_step

Mark a card step as incomplete