267 lines
8.0 KiB
Markdown

# 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
```bash
npm install
npm run build
```
## Configuration
Set the following environment variables:
```bash
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
1. **Account ID**: Found in your Basecamp URL: `https://3.basecamp.com/{ACCOUNT_ID}/`
2. **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:
```json
{
"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
```bash
npm start
```
## Available Tools (50+)
### Projects (7 tools)
- `basecamp_projects_list` - List all projects
- `basecamp_project_get` - Get project details
- `basecamp_project_create` - Create new project
- `basecamp_project_update` - Update project
- `basecamp_project_archive` - Archive project
- `basecamp_project_trash` - Move project to trash
- `basecamp_project_tools_list` - List project tools (dock)
### Todolists (5 tools)
- `basecamp_todolists_list` - List todolists in project
- `basecamp_todolist_get` - Get todolist details
- `basecamp_todolist_create` - Create new todolist
- `basecamp_todolist_update` - Update todolist
- `basecamp_todolist_reorder` - Reorder todolists
### Todos (8 tools)
- `basecamp_todos_list` - List todos in todolist
- `basecamp_todo_get` - Get todo details
- `basecamp_todo_create` - Create new todo
- `basecamp_todo_update` - Update todo
- `basecamp_todo_complete` - Mark todo as complete
- `basecamp_todo_uncomplete` - Mark todo as incomplete
- `basecamp_todos_reorder` - Reorder todos
### Messages (5 tools)
- `basecamp_messages_list` - List messages on message board
- `basecamp_message_get` - Get message details
- `basecamp_message_create` - Create new message
- `basecamp_message_update` - Update message
- `basecamp_message_trash` - Move message to trash
### Comments (4 tools)
- `basecamp_comments_list` - List comments on recording
- `basecamp_comment_get` - Get comment details
- `basecamp_comment_create` - Create new comment
- `basecamp_comment_update` - Update comment
### Campfire (2 tools)
- `basecamp_campfire_lines_list` - List recent chat messages
- `basecamp_campfire_line_create` - Send chat message
### Schedules (5 tools)
- `basecamp_schedules_list` - List schedules in project
- `basecamp_schedule_entries_list` - List schedule entries
- `basecamp_schedule_entry_get` - Get entry details
- `basecamp_schedule_entry_create` - Create new schedule entry
- `basecamp_schedule_entry_update` - Update schedule entry
### Documents (4 tools)
- `basecamp_documents_list` - List documents in vault
- `basecamp_document_get` - Get document details
- `basecamp_document_create` - Create new document
- `basecamp_document_update` - Update document
### Uploads (3 tools)
- `basecamp_uploads_list` - List uploaded files
- `basecamp_upload_get` - Get upload details
- `basecamp_upload_create` - Upload file
### People (6 tools)
- `basecamp_people_list` - List all people in account
- `basecamp_person_get` - Get person details
- `basecamp_project_people_list` - List people in project
- `basecamp_project_person_add` - Add person to project
- `basecamp_project_person_remove` - Remove person from project
- `basecamp_profile_get` - Get current user profile
### Questionnaires (4 tools)
- `basecamp_questionnaires_list` - List automatic check-ins
- `basecamp_questionnaire_get` - Get questionnaire details
- `basecamp_questions_list` - List questions in questionnaire
- `basecamp_answers_list` - List answers to question
### Webhooks (4 tools)
- `basecamp_webhooks_list` - List all webhooks
- `basecamp_webhook_create` - Create new webhook
- `basecamp_webhook_update` - Update webhook
- `basecamp_webhook_delete` - Delete webhook
### Recordings (5 tools)
- `basecamp_recordings_list` - List all recordings (generic content)
- `basecamp_recording_get` - Get recording details
- `basecamp_recording_archive` - Archive recording
- `basecamp_recording_unarchive` - Unarchive recording
- `basecamp_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
```bash
npm run build
```
### Watch Mode
```bash
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
## Links
- [Basecamp API Documentation](https://github.com/basecamp/bc3-api)
- [Model Context Protocol](https://modelcontextprotocol.io)
- [MCPEngine Repository](https://github.com/BusyBee3333/mcpengine)