Basecamp MCP Server
A professional MCP server providing complete programmatic access to Basecamp 4 API for AI agents, workflow automation, and custom integrations.
README
🏕️ Basecamp MCP Server
A professional Model Context Protocol (MCP) server that provides complete programmatic access to Basecamp 4 API. Perfect for AI agents, workflow automation, and custom integrations.
🚀 NEW in v7.5.0: Claude.ai Compatible!
The most comprehensive AND most compatible Basecamp MCP server available!
What's New in v7.5:
- ✅ Full Claude.ai compatibility - Works perfectly in Claude web interface
- ✅ Latest MCP protocol - Supports 2025-06-18 specification
- ✅ Session management - Proper connection tracking for modern clients
- ✅ Auto-discovery - MCP config endpoint for automatic setup
- ✅ Simplified authentication - No KV storage, just OAuth + environment variables
- ✅ 55+ specialized tools - Complete Basecamp API coverage
🔥 Upgrade from v6.0? See UPGRADE-TO-V75.md for migration guide.
✅ 8 Project Management tools - Complete project lifecycle management
✅ 11 Todo Management tools - Advanced task automation with auto-lookup
✅ 6 Communication tools - Messages and discussions
✅ 6 Documents & Files tools - Content management and file handling
✅ 4 Team Management tools - Access control and permissions
✅ 3 Campfire Chat tools - Real-time communication
✅ 3 Schedule Management tools - Calendar and events
✅ 4 Card Tables tools - Kanban workflows
✅ 5 Comments System tools - Universal collaboration
✅ 4 Webhooks tools - Real-time notifications
✅ 2 Search & Analytics tools - Data insights
🆕 3 Enhanced Features - Auto-lookup, URL parsing, OAuth flow
Enhanced Features:
- Auto-lookup functionality - No more 404 errors! Automatically finds resource IDs
- OAuth 2.0 integration - Complete authentication flow with setup UI
- Multiple authentication methods - Bearer token, arguments, environment variables
- Production-ready deployment - Cloudflare Workers optimized
✨ Features
🛠️ Complete Tool Coverage (59 Tools)
- Project Management (8 tools): Full CRUD operations, archiving, construction
- Todo Management (11 tools): Lists, items, assignments, completion, positioning
- Communication (6 tools): Messages, replies, discussions, archiving
- Documents & Files (6 tools): Create, edit, upload, manage attachments
- Team Management (4 tools): Add/remove people, permissions, access control
- Comments & Collaboration (5 tools): Universal commenting system across all content
- Campfire Chat (3 tools): Real-time chat messages and history
- Schedule Management (3 tools): Events, milestones, calendar entries
- Card Tables (4 tools): Kanban boards, cards, columns, positioning
- Webhooks (4 tools): Real-time notifications and event subscriptions
- Search & Analytics (2 tools): Content search and activity tracking
🔐 Authentication & Security
- OAuth 2.0 complete authentication flow with setup UI
- Multi-authentication support with token priorities:
access_tokenin arguments (highest priority)Authorization: Bearer TOKENheaderBASECAMP_ACCESS_TOKENenvironment variable (fallback)
- Individual user tokens while sharing infrastructure
- Secure token handling with proper validation
- Simplified deployment - No KV storage required (v7.5+)
🚀 Production Ready
- Edge deployment on Cloudflare Workers
- Global CDN with sub-100ms response times worldwide
- Automatic scaling handles any traffic volume
- Rate limiting compliance with Basecamp API limits
- Comprehensive error handling with meaningful messages
- Auto-lookup functionality prevents 404 errors
🚀 Quick Start
1. Deploy to Cloudflare Workers
# Clone the repository
git clone https://github.com/QusaiiSaleem/basecamp-mcp-server.git
cd basecamp-mcp-server
# Install dependencies
npm install
# Configure your environment
cp wrangler.toml.example wrangler.toml
# Edit wrangler.toml with your account ID
# Deploy to Cloudflare Workers
npm run deploy
2. Set Up Basecamp OAuth Integration
-
Create Integration: Visit Basecamp Integrations
-
Configure Settings:
- Application Name: "Your Basecamp MCP Server"
- Redirect URI:
https://your-worker.workers.dev/auth/callback - Client Type: Web Application
-
Set Environment Variables:
echo "your_client_id" | wrangler secret put BASECAMP_CLIENT_ID
echo "your_client_secret" | wrangler secret put BASECAMP_CLIENT_SECRET
echo "your_account_id" | wrangler secret put BASECAMP_ACCOUNT_ID
3. Get Your Access Token
Visit https://your-worker.workers.dev/setup and follow the OAuth flow to get your access token.
🌐 Claude.ai Integration
NEW in v7.5: Direct integration with Claude.ai web interface!
Quick Setup
- Visit Claude.ai: Go to claude.ai
- Open Settings: Click Settings → Connectors
- Add Remote MCP Server:
- Name:
Basecamp MCP - URL:
https://your-worker.workers.dev - Authentication:
Bearer YOUR_ACCESS_TOKEN
- Name:
- Enable Toggle: Turn on the connector ✅
- Verify Tools: All 55 tools should appear in your conversation
Full Setup Guide
For detailed step-by-step instructions including screenshots and troubleshooting, see:
- CLAUDE-AI-SETUP.md - Complete integration guide
Test Your Connection
In Claude.ai, try these commands:
"List all my Basecamp projects"
"Show me my current todo assignments"
"Create a new message in Project X"
Compatibility Matrix
| Client | v6.0 | v7.5 |
|---|---|---|
| Claude.ai | ⚠️ Limited | ✅ Full |
| Claude Desktop | ✅ Works | ✅ Works |
| Smithery Playground | ⚠️ Limited | ✅ Full |
| RelevanceAI | ✅ Works | ✅ Works |
| n8n | ✅ Works | ✅ Works |
| Make.com | ✅ Works | ✅ Works |
🔧 Usage Examples
With RelevanceAI
- Agent Settings → MCP Server → Add remote MCP tools
- Server URL:
https://your-worker.workers.dev - Authentication:
Bearer your_access_token_here
With Claude Desktop
Add to your MCP configuration (~/.claude/mcp_servers.json):
{
"basecamp": {
"command": "node",
"args": ["path/to/mcp-server"],
"env": {
"BASECAMP_ACCESS_TOKEN": "your_token_here",
"BASECAMP_ACCOUNT_ID": "your_account_id"
}
}
}
Direct API Usage
// Enhanced auto-lookup - no more resource ID hunting!
{
"tool": "get_todo_lists",
"arguments": {
"project_id": "123456" // That's it! Auto-finds todoset ID
}
}
// Create todos with full assignment control
{
"tool": "create_todo",
"arguments": {
"project_id": "123456",
"todolist_id": "789012",
"content": "Complete project setup",
"due_on": "2024-12-31",
"assignee_ids": [1001, 1002]
}
}
// Universal commenting system
{
"tool": "add_comment_to_recording",
"arguments": {
"project_id": "123456",
"recording_id": "789012", // Works with any content type
"content": "Great progress on this item!"
}
}
// Smart URL parsing
{
"tool": "parse_basecamp_url",
"arguments": {
"url": "https://3.basecamp.com/999999/buckets/123456/todolists/789012"
}
}
📚 Complete Tool Reference
📋 Project Management (8 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_projects |
List all accessible projects | - |
create_project |
Create new project | name, description |
get_project |
Get project details | project_id |
update_project |
Update project info | project_id, name, description |
archive_project |
Archive project | project_id |
unarchive_project |
Unarchive project | project_id |
get_project_construction |
Get project tools/features | project_id |
parse_basecamp_url |
Parse any Basecamp URL | url |
✅ Todo Management (11 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_todo_lists 🚀 |
Get todo lists (AUTO-LOOKUP) | project_id |
create_todo_list 🚀 |
Create todo list (AUTO-LOOKUP) | project_id, name |
get_todos |
Get todos from list | project_id, todolist_id |
get_all_project_todos 🆕 |
Get ALL project todos | project_id |
create_todo |
Create new todo | project_id, todolist_id, content |
update_todo |
Update todo details | project_id, todo_id, content |
complete_todo |
Mark todo complete | project_id, todo_id |
uncomplete_todo |
Mark todo incomplete | project_id, todo_id |
get_my_assignments |
Get current user assignments | - |
get_user_assignments |
Get user's assignments | user_id |
reposition_todo |
Change todo position | project_id, todo_id, position |
💬 Communication (6 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_message_board 🚀 |
Get message board (AUTO-LOOKUP) | project_id |
get_messages 🚀 |
Get messages (AUTO-LOOKUP) | project_id |
create_message 🚀 |
Create message (AUTO-LOOKUP) | project_id, subject, content |
update_message |
Edit message | project_id, message_id, content |
get_message |
Get specific message | project_id, message_id |
archive_message |
Archive message | project_id, message_id |
📄 Documents & Files (6 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_documents 🚀 |
List documents (AUTO-LOOKUP) | project_id |
create_document 🚀 |
Create document (AUTO-LOOKUP) | project_id, title, content |
update_document |
Edit document | project_id, document_id, content |
get_document |
Get specific document | project_id, document_id |
upload_attachment |
Upload file | file_data, filename, content_type |
get_uploads |
List project uploads | project_id |
👥 Team & People (4 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_people |
Get project team | project_id |
get_all_people |
Get all account people | - |
add_person_to_project |
Grant project access | project_id, person_ids[] |
remove_person_from_project |
Revoke project access | project_id, person_ids[] |
💭 Comments & Collaboration (5 tools)
| Tool | Description | Key Parameters |
|---|---|---|
add_comment_to_recording |
Universal comment tool | project_id, recording_id, content |
add_comment_to_todo |
Comment on todo | project_id, todo_id, content |
add_comment_to_message |
Reply to message | project_id, message_id, content |
add_comment_to_document |
Comment on document | project_id, document_id, content |
add_comment_to_card |
Comment on card | project_id, card_id, content |
💬 Campfire Chat (3 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_campfire |
Get project chat | project_id |
get_campfire_lines |
Get chat messages | project_id, campfire_id |
post_campfire_message |
Post chat message | project_id, campfire_id, content |
📅 Schedule Management (3 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_schedule 🚀 |
Get schedule (AUTO-LOOKUP) | project_id |
get_schedule_entries |
Get schedule events | project_id |
create_schedule_entry |
Create new event | project_id, summary, starts_at |
🎫 Card Tables (4 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_card_table |
Get Kanban board | project_id |
get_cards |
Get cards from table | project_id, card_table_id |
create_card |
Create new card | project_id, card_table_id, title |
update_card |
Update existing card | project_id, card_id, title |
🔗 Webhooks (4 tools)
| Tool | Description | Key Parameters |
|---|---|---|
get_webhooks |
List all webhooks | - |
create_webhook |
Create webhook | payload_url, types[] |
update_webhook |
Update webhook | webhook_id, payload_url |
delete_webhook |
Delete webhook | webhook_id |
🔍 Search & Analytics (2 tools)
| Tool | Description | Key Parameters |
|---|---|---|
search |
Search content | query, project_id (optional) |
get_events |
Get activity/events | project_id (optional) |
🔍 Smart Features
🧠 Auto-Lookup Intelligence
The server automatically finds required resource IDs, eliminating 404 errors:
// Before: Complex resource ID hunting
{
"tool": "get_todo_lists",
"arguments": {
"project_id": "123456",
"todoset_id": "789012" // ← Hard to find manually
}
}
// After: Simple auto-lookup
{
"tool": "get_todo_lists",
"arguments": {
"project_id": "123456" // ← Auto-finds todoset ID
}
}
📈 URL Intelligence
Parse any Basecamp URL to extract project and resource information:
// Input: https://3.basecamp.com/999999/buckets/123456/todolists/789012
// Output:
{
"account_id": "999999",
"project_id": "123456",
"resource_type": "todolists",
"resource_id": "789012",
"suggested_tools": ["get_todos", "create_todo"]
}
🔄 Multi-Authentication Support
Flexible authentication with priority order:
- Arguments:
access_tokenparameter (highest priority) - Headers:
Authorization: Bearer TOKEN - Environment:
BASECAMP_ACCESS_TOKEN(fallback)
⚙️ Configuration
Environment Variables
| Variable | Description | Required |
|---|---|---|
BASECAMP_ACCOUNT_ID |
Your Basecamp account ID | ✅ |
BASECAMP_CLIENT_ID |
OAuth client ID | ✅ (for OAuth) |
BASECAMP_CLIENT_SECRET |
OAuth client secret | ✅ (for OAuth) |
BASECAMP_ACCESS_TOKEN |
Fallback access token | ⚠️ (optional) |
wrangler.toml Example
name = "my-basecamp-mcp-server"
main = "index.ts"
compatibility_date = "2024-08-05"
[vars]
BASECAMP_ACCOUNT_ID = "999999999"
# Note: v7.5 no longer requires KV namespace binding
# All authentication is handled via environment variables
🔒 Security Best Practices
Authentication Security
- Individual Tokens: Each user maintains their own OAuth token
- Secure Headers: All requests use proper authorization headers
- Token Validation: Automatic token validation and error handling
- Environment Isolation: Production secrets separate from code
API Security
- Rate Limiting: Automatic compliance with Basecamp API limits
- Request Validation: Input sanitization and type checking
- Error Handling: Secure error messages without data leaks
- CORS Configuration: Proper cross-origin resource sharing
🚀 Deployment Options
Cloudflare Workers (Recommended)
- Global Edge Network: Sub-100ms response times worldwide
- Automatic Scaling: Handle unlimited traffic
- Built-in Security: DDoS protection, WAF, SSL
- Cost Effective: Pay per request, no idle costs
Alternative Platforms
- Vercel Functions: Serverless deployment
- AWS Lambda: Enterprise-grade infrastructure
- Google Cloud Functions: Google ecosystem integration
- Azure Functions: Microsoft ecosystem integration
Self-Hosted Options
- Node.js Server: Traditional server deployment
- Docker Container: Containerized deployment
- Kubernetes: Container orchestration
🤝 Contributing
We welcome contributions! Here's how to get started:
Development Setup
# Clone the repository
git clone https://github.com/QusaiiSaleem/basecamp-mcp-server.git
cd basecamp-mcp-server
# Install dependencies
npm install
# Set up environment
cp wrangler.toml.example wrangler.toml
# Start development server
npm run dev
Adding New Tools
- Define Tool Schema: Add tool definition to
getAllBasecampTools() - Implement Handler: Add case to
callBasecampTool()switch statement - Test Implementation: Verify with Basecamp API endpoints
- Update Documentation: Add to README tool reference
- Submit Pull Request: Include tests and examples
📊 Performance & Monitoring
Performance Metrics
- Response Time: Average <100ms globally
- Availability: 99.9% uptime SLA
- Throughput: 10,000+ requests per second capability
- Error Rate: <0.1% error rate
Monitoring Features
- Cloudflare Analytics: Request metrics and performance
- Custom Logging: Detailed operation tracking
- Error Reporting: Automated error notifications
- Health Checks: Continuous availability monitoring
❓ Troubleshooting
Common Issues
Authentication Errors
Error: Authentication required
Solution: Ensure your access token is valid. Visit /setup for OAuth flow.
Configuration Missing
Error: BASECAMP_ACCESS_TOKEN not configured
Solution: Set up OAuth credentials or provide token in request headers.
Auto-lookup Failures
Error: Todo lists are not enabled for this project
Solution: Enable todo lists in your Basecamp project settings.
Getting Help
- GitHub Issues: Report bugs and request features
- Discussions: Community support and questions
- Documentation: Comprehensive guides and examples
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🏆 Acknowledgments
- Basecamp Team: For providing an excellent API
- MCP Community: For the Model Context Protocol standard
- Cloudflare: For the edge computing platform
- Contributors: Thank you to all contributors!
📋 Version History
- v7.5.0 (2025-09-30): Claude.ai compatibility + protocol updates - CHANGELOG.md
- v6.0.0 (2024-12-15): Complete 59-tool implementation
- v5.0.0 (2024-10-01): Initial public release
🔗 Links
- 🏠 Homepage: GitHub Repository
- 📖 Documentation: Complete API Reference
- 🚀 Upgrade Guide: UPGRADE-TO-V75.md
- 📝 Changelog: CHANGELOG.md
- 🤖 Claude.ai Setup: CLAUDE-AI-SETUP.md
- 🐛 Issues: Bug Reports
- 💬 Discussions: Community Forum
- 🏕️ Basecamp API: Official Documentation
- 🤖 MCP Protocol: Specification
Transform your Basecamp workflow with complete API automation! 🚀
Now with full Claude.ai compatibility in v7.5! ✨
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。