267 lines
8.0 KiB
Markdown
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)
|