kbhalerao/basecamp-mcp
3.2
If you are the rightful owner of basecamp-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Connect your Basecamp workspace to Claude and other AI tools via the Model Context Protocol.
Tools
10
Resources
0
Prompts
0
Basecamp MCP Server
Connect your Basecamp workspace to Claude and other AI tools via the Model Context Protocol.
Setup
1. Get Basecamp API Credentials
- Go to Basecamp and log in
- Click your profile ā "Settings" ā "Personal access tokens" (or "Integrations & apps" ā "API credentials")
- Create a new token (it needs "all access")
- Copy the token
- Find your Account ID in the URL when you're in your workspace (e.g.,
https://3.basecamp.com/ACCOUNT_ID
)
2. Set Environment Variables
export BASECAMP_API_TOKEN="your_token_here"
export BASECAMP_ACCOUNT_ID="your_account_id_here"
Or create a .env
file in the project root (add to .gitignore
):
BASECAMP_API_TOKEN=your_token_here
BASECAMP_ACCOUNT_ID=your_account_id_here
3. Install Dependencies
uv sync
4. Run the Server
uv run python -m basecamp_mcp.server
Or run it directly:
uv run python src/basecamp_mcp/server.py
Features
Tools (Functions Claude Can Call)
get_projects
- List all Basecamp projectsget_project_details
- Get detailed info about a projectget_messages
- Get recent messages from a projectget_message_with_comments
- Get a specific message with all commentsget_todos
- Get todo items (with optional filtering by completion)create_message
- Create a new message in a projectupdate_todo
- Mark a todo as complete/incompleteget_schedules
- Get schedules from a projectclear_cache
- Clear all cached dataget_cache_stats
- View cache statistics
Resources (Data Claude Can Read)
basecamp://projects
- List of all projectsbasecamp://project/{project_id}/summary
- Project summary with recent activity
Caching
The server uses SQLite for persistent caching with TTL (Time To Live):
- Projects: 5 minutes cache
- Messages: 2 minutes cache
- Todos: 2 minutes cache
- Project details: 10 minutes cache
Use get_cache_stats
to see cache hit rates and size, or clear_cache
to force fresh data.
Project Structure
BaseCampMCP/
āāā src/
ā āāā basecamp_mcp/
ā āāā __init__.py
ā āāā server.py # Main MCP server with tools & resources
ā āāā cache.py # SQLite cache manager
āāā pyproject.toml # Project configuration
āāā README.md
Integration with Claude Desktop
To use with Claude Desktop:
- Edit
~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or the Windows equivalent - Add the server:
{
"mcpServers": {
"basecamp": {
"command": "uv",
"args": ["run", "--with", "mcp", "python", "-m", "basecamp_mcp.server"],
"cwd": "/Users/kaustubh/Documents/BaseCampMCP"
}
}
}
- Restart Claude Desktop
Development
Testing the Server
# Run with verbose logging
uv run python -m basecamp_mcp.server
Viewing Cache
The cache database is stored in basecamp_cache.db
in your working directory. You can inspect it with:
sqlite3 basecamp_cache.db
sqlite> SELECT key, hits, expires_at FROM cache ORDER BY hits DESC;
API Reference
Basecamp API v1 Endpoints Used
GET /projects.json
- List projectsGET /projects/{id}.json
- Get project detailsGET /projects/{id}/messages.json
- List messagesGET /projects/{id}/messages/{message_id}.json
- Get messageGET /projects/{id}/messages/{message_id}/comments.json
- Get commentsGET /projects/{id}/todos.json
- List todosGET /projects/{id}/todolists/{list_id}/todos.json
- Get todos from listPUT /projects/{id}/todos/{todo_id}.json
- Update todoPOST /projects/{id}/messages.json
- Create messageGET /projects/{id}/schedules.json
- List schedules
License
MIT