Skip to main content
Glama
README.md
# Basecamp MCP Server

An MCP (Model Context Protocol) server that enables Claude to interact with the Basecamp API. Built with Bun and TypeScript.

## Features

- OAuth 2.0 authentication with automatic token refresh
- Full CRUD operations for Projects and To-dos
- Rate limiting (50 requests per 10 seconds)
- Automatic pagination handling

## Available Tools

| Tool | Description |
|------|-------------|
| `basecamp_auth` | Initiate OAuth authentication |
| `basecamp_list_projects` | List all projects |
| `basecamp_get_project` | Get project details |
| `basecamp_create_project` | Create a new project |
| `basecamp_update_project` | Update a project |
| `basecamp_trash_project` | Move project to trash |
| `basecamp_list_todolists` | List to-do lists in a project |
| `basecamp_get_todolist` | Get to-do list details |
| `basecamp_create_todolist` | Create a new to-do list |
| `basecamp_list_todos` | List to-dos in a list |
| `basecamp_get_todo` | Get to-do details |
| `basecamp_create_todo` | Create a new to-do |
| `basecamp_update_todo` | Update a to-do |
| `basecamp_complete_todo` | Mark to-do as complete |
| `basecamp_uncomplete_todo` | Mark to-do as incomplete |

## Setup

### 1. Register a Basecamp OAuth Application

1. Go to [https://launchpad.37signals.com/integrations](https://launchpad.37signals.com/integrations)
2. Create a new integration
3. Set the redirect URI to `http://localhost:8788/callback`
4. Note your Client ID and Client Secret

### 2. Install Dependencies

```bash
bun install
```

### 3. Configure Claude Code

Add the server to your Claude Code MCP configuration:

```json
{
  "mcpServers": {
    "basecamp": {
      "command": "bun",
      "args": ["run", "/path/to/basecamp-mcp/src/index.ts"],
      "env": {
        "BASECAMP_CLIENT_ID": "your-client-id",
        "BASECAMP_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}
```

### 4. Authenticate

Once configured, ask Claude to authenticate with Basecamp:

```
Authenticate with Basecamp
```

This will open a browser window for OAuth authorization. After authorizing, tokens are stored locally in `~/.basecamp-mcp/tokens.json`.

## Development

```bash
# Run type checking
bun run typecheck

# Run the server directly
bun run start
```

## License

MIT