Basecamp MCP Server
A comprehensive Model Context Protocol (MCP) server for Basecamp 4 API integration.
Features
- Complete API Coverage: 50+ tools covering all major Basecamp 4 API endpoints
- Rich UI Components: 18 React MCP apps for visualizing and managing Basecamp data
- Robust Client: OAuth2 authentication, automatic pagination, and comprehensive error handling
- Type-Safe: Full TypeScript implementation with detailed type definitions
Installation
npm install
npm run build
Configuration
Set the following environment variables:
export BASECAMP_ACCOUNT_ID="your-account-id"
export BASECAMP_ACCESS_TOKEN="your-oauth-token"
export BASECAMP_USER_AGENT="YourApp (your-email@example.com)" # Optional
Getting Your Credentials
- Account ID: Found in your Basecamp URL:
https://3.basecamp.com/{ACCOUNT_ID}/ - Access Token: Create an OAuth2 application at https://launchpad.37signals.com/integrations
- Follow Basecamp's OAuth flow to get an access token
- Scopes required: Full access to projects, todos, messages, etc.
Usage
As MCP Server
Add to your MCP client configuration:
{
"mcpServers": {
"basecamp": {
"command": "node",
"args": ["/path/to/basecamp-mcp/dist/main.js"],
"env": {
"BASECAMP_ACCOUNT_ID": "your-account-id",
"BASECAMP_ACCESS_TOKEN": "your-token"
}
}
}
}
Standalone
npm start
Available Tools (50+)
Projects (7 tools)
basecamp_projects_list- List all projectsbasecamp_project_get- Get project detailsbasecamp_project_create- Create new projectbasecamp_project_update- Update projectbasecamp_project_archive- Archive projectbasecamp_project_trash- Move project to trashbasecamp_project_tools_list- List project tools (dock)
Todolists (5 tools)
basecamp_todolists_list- List todolists in projectbasecamp_todolist_get- Get todolist detailsbasecamp_todolist_create- Create new todolistbasecamp_todolist_update- Update todolistbasecamp_todolist_reorder- Reorder todolists
Todos (8 tools)
basecamp_todos_list- List todos in todolistbasecamp_todo_get- Get todo detailsbasecamp_todo_create- Create new todobasecamp_todo_update- Update todobasecamp_todo_complete- Mark todo as completebasecamp_todo_uncomplete- Mark todo as incompletebasecamp_todos_reorder- Reorder todos
Messages (5 tools)
basecamp_messages_list- List messages on message boardbasecamp_message_get- Get message detailsbasecamp_message_create- Create new messagebasecamp_message_update- Update messagebasecamp_message_trash- Move message to trash
Comments (4 tools)
basecamp_comments_list- List comments on recordingbasecamp_comment_get- Get comment detailsbasecamp_comment_create- Create new commentbasecamp_comment_update- Update comment
Campfire (2 tools)
basecamp_campfire_lines_list- List recent chat messagesbasecamp_campfire_line_create- Send chat message
Schedules (5 tools)
basecamp_schedules_list- List schedules in projectbasecamp_schedule_entries_list- List schedule entriesbasecamp_schedule_entry_get- Get entry detailsbasecamp_schedule_entry_create- Create new schedule entrybasecamp_schedule_entry_update- Update schedule entry
Documents (4 tools)
basecamp_documents_list- List documents in vaultbasecamp_document_get- Get document detailsbasecamp_document_create- Create new documentbasecamp_document_update- Update document
Uploads (3 tools)
basecamp_uploads_list- List uploaded filesbasecamp_upload_get- Get upload detailsbasecamp_upload_create- Upload file
People (6 tools)
basecamp_people_list- List all people in accountbasecamp_person_get- Get person detailsbasecamp_project_people_list- List people in projectbasecamp_project_person_add- Add person to projectbasecamp_project_person_remove- Remove person from projectbasecamp_profile_get- Get current user profile
Questionnaires (4 tools)
basecamp_questionnaires_list- List automatic check-insbasecamp_questionnaire_get- Get questionnaire detailsbasecamp_questions_list- List questions in questionnairebasecamp_answers_list- List answers to question
Webhooks (4 tools)
basecamp_webhooks_list- List all webhooksbasecamp_webhook_create- Create new webhookbasecamp_webhook_update- Update webhookbasecamp_webhook_delete- Delete webhook
Recordings (5 tools)
basecamp_recordings_list- List all recordings (generic content)basecamp_recording_get- Get recording detailsbasecamp_recording_archive- Archive recordingbasecamp_recording_unarchive- Unarchive recordingbasecamp_recording_trash- Move recording to trash
MCP Apps (18 React Components)
Project Management
- project-dashboard - Overview of all projects with filtering
- project-detail - Detailed single project view with dock
- project-grid - Grid view of all projects
Task Management
- todo-board - Kanban-style todo board
- todo-detail - Detailed todo view with comments
Communication
- message-board - Message board posts list
- message-detail - Single message with comments
- campfire-chat - Real-time team chat interface
Planning
- schedule-calendar - Calendar view of schedule entries
- project-timeline - Gantt-style timeline
Content
- document-browser - Browse and manage documents
- file-manager - File upload management
People
- people-directory - Team member directory
Check-ins
- checkin-dashboard - Automatic check-in overview
- checkin-responses - View responses to check-ins
Insights
- activity-feed - Recent project activity
- search-results - Global search interface
- hill-chart - Visual progress tracking
Architecture
src/
├── clients/
│ └── basecamp.ts # API client with OAuth2 & pagination
├── tools/
│ ├── projects-tools.ts # Project management tools
│ ├── todolists-tools.ts # Todolist tools
│ ├── todos-tools.ts # Todo tools
│ ├── messages-tools.ts # Message board tools
│ ├── comments-tools.ts # Comment tools
│ ├── campfires-tools.ts # Chat tools
│ ├── schedules-tools.ts # Schedule tools
│ ├── documents-tools.ts # Document tools
│ ├── uploads-tools.ts # File upload tools
│ ├── people-tools.ts # People management tools
│ ├── questionnaires-tools.ts # Check-in tools
│ ├── webhooks-tools.ts # Webhook tools
│ └── recordings-tools.ts # Generic recordings tools
├── types/
│ └── index.ts # TypeScript type definitions
├── ui/
│ └── react-app/
│ ├── index.tsx # App registry
│ └── apps/ # 18 React MCP apps
├── server.ts # MCP server implementation
└── main.ts # Entry point
API Reference
Basecamp 4 API
- Base URL:
https://3.basecampapi.com/{account_id}/ - Authentication: OAuth2 Bearer token
- Rate limiting: Respected via standard headers
- User-Agent: Required for all requests
Error Handling
The client handles common errors:
- 401: Invalid/expired token
- 403: Permission denied
- 404: Resource not found
- 429: Rate limit exceeded
- 500-503: Server errors
Development
Build
npm run build
Watch Mode
npm run dev
License
MIT
Contributing
Contributions welcome! Please ensure:
- All tools have proper input validation
- TypeScript types are comprehensive
- Error handling is consistent
- MCP apps are self-contained