skills$openclaw/basecamp-cli
drkraft7.0k

by drkraft

basecamp-cli – OpenClaw Skill

basecamp-cli is an OpenClaw Skills integration for coding workflows. CLI and MCP server for Basecamp 4. Use when you need to interact with Basecamp projects, todos, messages, schedules, kanban cards, documents, or campfires. Provides 76 MCP tools for AI-driven project management workflows.

7.0k stars1.4k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namebasecamp-cli
descriptionCLI and MCP server for Basecamp 4. Use when you need to interact with Basecamp projects, todos, messages, schedules, kanban cards, documents, or campfires. Provides 76 MCP tools for AI-driven project management workflows. OpenClaw Skills integration.
ownerdrkraft
repositorydrkraft/basecamp-cli-mcp
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @drkraft/basecamp-cli-mcp
last updatedFeb 7, 2026

Maintainer

drkraft

drkraft

Maintains basecamp-cli in the OpenClaw Skills directory.

View GitHub profile
File Explorer
70 files
.
scripts
release.sh
1.4 KB
validate.ts
9.4 KB
src
__tests__
mocks
handlers.ts
43.8 KB
cardtables.test.ts
8.4 KB
comments.test.ts
2.4 KB
config.test.ts
9.7 KB
documents.test.ts
2.1 KB
events.test.ts
1.3 KB
example.test.ts
1.6 KB
mcp.test.ts
686 B
messages.test.ts
1.0 KB
pagination.test.ts
8.2 KB
projects.test.ts
6.6 KB
recordings.test.ts
2.6 KB
retry.test.ts
14.5 KB
schedules.test.ts
12.2 KB
search.test.ts
2.1 KB
setup.ts
1.4 KB
subscriptions.test.ts
9.1 KB
todogroups.test.ts
3.5 KB
todolists.test.ts
8.3 KB
todos.test.ts
10.3 KB
uploads.test.ts
2.0 KB
vaults.test.ts
2.0 KB
webhooks.test.ts
9.9 KB
commands
auth.ts
7.1 KB
campfires.ts
5.2 KB
cardtables.ts
18.0 KB
comments.ts
8.0 KB
documents.ts
7.5 KB
events.ts
2.1 KB
messages.ts
4.9 KB
people.ts
4.9 KB
projects.ts
5.0 KB
recordings.ts
5.7 KB
schedules.ts
9.5 KB
search.ts
2.6 KB
subscriptions.ts
4.8 KB
todos.ts
20.8 KB
uploads.ts
8.4 KB
vaults.ts
6.9 KB
webhooks.ts
10.2 KB
lib
api.ts
32.2 KB
auth.ts
7.7 KB
config.ts
7.2 KB
version.ts
197 B
mcp
tools
index.ts
53.0 KB
server.ts
2.0 KB
types
index.ts
11.5 KB
index.ts
2.4 KB
mcp.ts
179 B
_meta.json
281 B
CHANGELOG.md
2.6 KB
CONTRIBUTING.md
2.7 KB
package-lock.json
148.8 KB
package.json
1.5 KB
README.md
11.4 KB
SKILL.md
5.1 KB
tsconfig.json
455 B
tsup.config.ts
392 B
vitest.config.ts
367 B
SKILL.md

name: basecamp-cli description: CLI and MCP server for Basecamp 4. Use when you need to interact with Basecamp projects, todos, messages, schedules, kanban cards, documents, or campfires. Provides 76 MCP tools for AI-driven project management workflows. mcp: true metadata: {"openclaw":{"emoji":"🏕️","homepage":"https://github.com/drkraft/basecamp-cli","primaryEnv":"BASECAMP_CLIENT_SECRET","requires":{"bins":["basecamp-mcp"],"env":["BASECAMP_CLIENT_ID","BASECAMP_CLIENT_SECRET"]},"install":[{"id":"npm","kind":"node","package":"@drkraft/basecamp-cli","bins":["basecamp","basecamp-mcp"],"label":"Install @drkraft/basecamp-cli (npm)","global":true}]}}

Basecamp CLI

Full-featured CLI and MCP server for Basecamp 4 API.

Features

  • 21 CLI command groups covering all Basecamp 4 domains
  • 76 MCP tools for AI assistant integration
  • Automatic pagination and retry with exponential backoff
  • OAuth 2.0 authentication with PKCE

Installation

npm install -g @drkraft/basecamp-cli

Requirements

  • Node.js >= 20

Authentication Setup

  1. Create an OAuth app at https://launchpad.37signals.com/integrations
    • Set redirect URI to http://localhost:9292/callback
  2. Configure credentials:
basecamp auth configure --client-id <your-client-id>
export BASECAMP_CLIENT_SECRET="<your-client-secret>"
export BASECAMP_CLIENT_ID="<your-client-id>"
  1. Login:
basecamp auth login

MCP Server Configuration

Add to your MCP config (e.g., ~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "basecamp": {
      "command": "basecamp-mcp",
      "env": {
        "BASECAMP_CLIENT_ID": "<your-client-id>",
        "BASECAMP_CLIENT_SECRET": "<your-client-secret>"
      }
    }
  }
}

Available MCP Tools (76)

CategoryTools
Projectsbasecamp_list_projects, basecamp_get_project, basecamp_create_project, basecamp_archive_project
Todo Listsbasecamp_list_todolists, basecamp_get_todolist, basecamp_create_todolist, basecamp_delete_todolist
Todo Groupsbasecamp_list_todolist_groups, basecamp_create_todolist_group
Todosbasecamp_list_todos, basecamp_get_todo, basecamp_create_todo, basecamp_update_todo, basecamp_complete_todo, basecamp_uncomplete_todo, basecamp_delete_todo, basecamp_move_todo
Messagesbasecamp_list_messages, basecamp_get_message, basecamp_create_message
Peoplebasecamp_list_people, basecamp_get_person, basecamp_get_me
Commentsbasecamp_list_comments, basecamp_get_comment, basecamp_create_comment, basecamp_update_comment, basecamp_delete_comment
Vaultsbasecamp_list_vaults, basecamp_get_vault, basecamp_create_vault, basecamp_update_vault
Documentsbasecamp_list_documents, basecamp_get_document, basecamp_create_document, basecamp_update_document
Uploadsbasecamp_list_uploads, basecamp_get_upload, basecamp_create_upload, basecamp_update_upload
Schedulesbasecamp_get_schedule, basecamp_list_schedule_entries, basecamp_get_schedule_entry, basecamp_create_schedule_entry, basecamp_update_schedule_entry, basecamp_delete_schedule_entry
Card Tablesbasecamp_get_card_table, basecamp_get_column, basecamp_create_column, basecamp_update_column, basecamp_delete_column, basecamp_list_cards, basecamp_get_card, basecamp_create_card, basecamp_update_card, basecamp_move_card, basecamp_delete_card
Searchbasecamp_search
Recordingsbasecamp_list_recordings, basecamp_archive_recording, basecamp_restore_recording, basecamp_trash_recording
Subscriptionsbasecamp_list_subscriptions, basecamp_subscribe, basecamp_unsubscribe
Webhooksbasecamp_list_webhooks, basecamp_get_webhook, basecamp_create_webhook, basecamp_update_webhook, basecamp_delete_webhook, basecamp_test_webhook
Eventsbasecamp_list_events
Campfiresbasecamp_list_campfires, basecamp_get_campfire_lines, basecamp_send_campfire_line
# Projects
basecamp projects list
basecamp projects get <id>

# Todos
basecamp todolists list --project <id>
basecamp todos list --project <id> --list <list-id>
basecamp todos create --project <id> --list <list-id> --content "Task"
basecamp todos complete <id> --project <id>
basecamp todos delete <id> --project <id>
basecamp todos move <id> --project <id> --list <target-list-id>

# Messages
basecamp messages list --project <id>
basecamp messages create --project <id> --subject "Title" --content "<p>Body</p>"

# Kanban
basecamp cardtables get --project <id>
basecamp cardtables cards --project <id> --column <col-id>
basecamp cardtables create-card --project <id> --column <col-id> --title "Card"

# Search
basecamp search "keyword"
basecamp search "keyword" --type Todo --project <id>

All commands support --format json for JSON output.

README.md

@drkraft/basecamp-cli

A comprehensive command-line interface and MCP server for Basecamp 4. Manage projects, to-dos, messages, schedules, kanban boards, and more from your terminal or AI assistant.

npm version License: MIT codecov

Features

  • Full CLI - 21 command groups covering the complete Basecamp 4 API
  • MCP Server - 76 tools for AI assistant integration (Claude, etc.)
  • Multiple Output Formats - Table or JSON output for all commands
  • Pagination & Retry - Automatic handling of large datasets and rate limits
  • OAuth 2.0 - Secure authentication via browser

Installation

npm install -g @drkraft/basecamp-cli

Or with bun:

bun add -g @drkraft/basecamp-cli

Requirements

  • Node.js >= 20

Quick Start

1. Create a Basecamp Integration

  1. Go to Basecamp Integrations
  2. Click "Register another application"
  3. Fill in the details:
    • Name: Your app name
    • Company: Your company
    • Website: Your website
    • Redirect URI: http://localhost:9292/callback
  4. Note your Client ID and Client Secret

2. Configure Credentials

export BASECAMP_CLIENT_ID="your-client-id"
export BASECAMP_CLIENT_SECRET="your-client-secret"

Or configure via CLI:

basecamp auth configure --client-id "your-client-id"

3. Login

basecamp auth login

This opens your browser for OAuth authentication.

Authentication

basecamp auth login          # Login via OAuth
basecamp auth status         # Check auth status
basecamp auth logout         # Logout

Accounts

basecamp accounts            # List available accounts
basecamp account set <id>    # Set current account
basecamp account current     # Show current account

Projects

basecamp projects list                                    # List all projects
basecamp projects get <id>                                # Get project details
basecamp projects create --name "Project" --description "Desc"  # Create project
basecamp projects archive <id>                            # Archive project

To-do Lists & To-dos

# To-do lists
basecamp todolists list --project <id>
basecamp todolists create --project <id> --name "Tasks"
basecamp todolists delete <id> --project <project-id>

# To-dos
basecamp todos list --project <id> --list <list-id>
basecamp todos list --project <id> --list <list-id> --completed
basecamp todos get <id> --project <project-id>
basecamp todos create --project <id> --list <list-id> --content "Task"
basecamp todos create --project <id> --list <list-id> --content "Task" \
  --due "2025-12-31" --assignees "123,456"
basecamp todos update <id> --project <project-id> --content "Updated"
basecamp todos complete <id> --project <project-id>
basecamp todos uncomplete <id> --project <project-id>
basecamp todos delete <id> --project <project-id>
basecamp todos move <id> --project <project-id> --list <target-list-id>

# To-do groups
basecamp todogroups list --project <id>
basecamp todogroups create --project <id> --name "Sprint 1"

Messages

basecamp messages list --project <id>
basecamp messages get <id> --project <project-id>
basecamp messages create --project <id> --subject "Subject" --content "<p>HTML</p>"

Campfires (Chat)

basecamp campfires list --project <id>
basecamp campfires lines --project <id> --campfire <campfire-id>
basecamp campfires send --project <id> --campfire <campfire-id> --message "Hello!"

Comments

basecamp comments list --project <id> --recording <recording-id>
basecamp comments get <id> --project <project-id>
basecamp comments create --project <id> --recording <recording-id> --content "<p>Comment</p>"
basecamp comments update <id> --project <project-id> --content "<p>Updated</p>"
basecamp comments delete <id> --project <project-id>

Documents & Vaults

# Vaults (folders)
basecamp vaults list --project <id>
basecamp vaults get <id> --project <project-id>
basecamp vaults create --project <id> --vault <parent-vault-id> --title "Folder Name"

# Documents
basecamp documents list --project <id> --vault <vault-id>
basecamp documents get <id> --project <project-id>
basecamp documents create --project <id> --vault <vault-id> --title "Doc" --content "<p>...</p>"
basecamp documents update <id> --project <project-id> --title "New Title"

# Uploads
basecamp uploads list --project <id> --vault <vault-id>
basecamp uploads get <id> --project <project-id>

Schedules

basecamp schedules get --project <id>
basecamp schedules entries --project <id>
basecamp schedules entries --project <id> --status upcoming
basecamp schedules create-entry --project <id> --summary "Meeting" \
  --starts-at "2025-02-15T10:00:00" --ends-at "2025-02-15T11:00:00"
basecamp schedules update-entry <id> --project <project-id> --summary "Updated"
basecamp schedules delete-entry <id> --project <project-id>

Card Tables (Kanban)

basecamp cardtables get --project <id>
basecamp cardtables columns --project <id>
basecamp cardtables create-column --project <id> --title "In Progress"
basecamp cardtables cards --project <id> --column <column-id>
basecamp cardtables create-card --project <id> --column <column-id> --title "Card"
basecamp cardtables move-card <card-id> --project <id> --column <new-column-id>

Webhooks

basecamp webhooks list --project <id>
basecamp webhooks get <id> --project <project-id>
basecamp webhooks create --project <id> --payload-url "https://..."
basecamp webhooks update <id> --project <project-id> --active false
basecamp webhooks delete <id> --project <project-id>

Recordings & Events

# Recordings (cross-project content)
basecamp recordings list --type Todo
basecamp recordings list --type Message --status archived
basecamp recordings archive <id> --project <project-id>
basecamp recordings restore <id> --project <project-id>
basecamp recordings trash <id> --project <project-id>

# Events (activity feed)
basecamp events list --project <id> --recording <recording-id>

Subscriptions

basecamp subscriptions list --project <id> --recording <recording-id>
basecamp subscriptions subscribe --project <id> --recording <recording-id>
basecamp subscriptions unsubscribe --project <id> --recording <recording-id>
basecamp search "keyword"
basecamp search "keyword" --type Todo
basecamp search "keyword" --project <id>

People

basecamp people list
basecamp people list --project <id>
basecamp people get <id>
basecamp people me

Output Formats

All commands support --format flag:

basecamp projects list --format table   # Default, human-readable
basecamp projects list --format json    # JSON for scripting

Global Options

basecamp --verbose projects list   # Enable debug output
basecamp -v people me              # Short form

MCP Server

The CLI includes an MCP (Model Context Protocol) server for AI assistant integration.

Starting the Server

basecamp-mcp
# Or
bun run mcp

Available Tools (76)

CategoryTools
Projectsbasecamp_list_projects, basecamp_get_project, basecamp_create_project, basecamp_archive_project
Todo Listsbasecamp_list_todolists, basecamp_get_todolist, basecamp_create_todolist, basecamp_delete_todolist
Todo Groupsbasecamp_list_todolist_groups, basecamp_create_todolist_group
Todosbasecamp_list_todos, basecamp_get_todo, basecamp_create_todo, basecamp_update_todo, basecamp_complete_todo, basecamp_uncomplete_todo, basecamp_delete_todo, basecamp_move_todo
Messagesbasecamp_list_messages, basecamp_get_message, basecamp_create_message
Peoplebasecamp_list_people, basecamp_get_person, basecamp_get_me
Commentsbasecamp_list_comments, basecamp_get_comment, basecamp_create_comment, basecamp_update_comment, basecamp_delete_comment
Vaultsbasecamp_list_vaults, basecamp_get_vault, basecamp_create_vault, basecamp_update_vault
Documentsbasecamp_list_documents, basecamp_get_document, basecamp_create_document, basecamp_update_document
Uploadsbasecamp_list_uploads, basecamp_get_upload, basecamp_create_upload, basecamp_update_upload
Schedulesbasecamp_get_schedule, basecamp_list_schedule_entries, basecamp_get_schedule_entry, basecamp_create_schedule_entry, basecamp_update_schedule_entry, basecamp_delete_schedule_entry
Card Tablesbasecamp_get_card_table, basecamp_get_column, basecamp_create_column, basecamp_update_column, basecamp_delete_column, basecamp_list_cards, basecamp_get_card, basecamp_create_card, basecamp_update_card, basecamp_move_card, basecamp_delete_card
Searchbasecamp_search
Recordingsbasecamp_list_recordings, basecamp_archive_recording, basecamp_restore_recording, basecamp_trash_recording
Subscriptionsbasecamp_list_subscriptions, basecamp_subscribe, basecamp_unsubscribe
Webhooksbasecamp_list_webhooks, basecamp_get_webhook, basecamp_create_webhook, basecamp_update_webhook, basecamp_delete_webhook, basecamp_test_webhook
Eventsbasecamp_list_events
Campfiresbasecamp_list_campfires, basecamp_get_campfire_lines, basecamp_send_campfire_line

Using with OpenCode/Claude

Add to your MCP configuration:

{
  "mcpServers": {
    "basecamp": {
      "command": "basecamp-mcp",
      "env": {
        "BASECAMP_CLIENT_ID": "<your-client-id>",
        "BASECAMP_CLIENT_SECRET": "<your-client-secret>"
      }
    }
  }
}

Or with explicit path:

{
  "mcpServers": {
    "basecamp": {
      "command": "node",
      "args": ["/path/to/node_modules/@drkraft/basecamp-cli/dist/mcp.js"]
    }
  }
}

Environment Variables

VariableDescription
BASECAMP_CLIENT_IDOAuth Client ID (required)
BASECAMP_CLIENT_SECRETOAuth Client Secret (required)
BASECAMP_REDIRECT_URIOAuth Redirect URI (default: http://localhost:9292/callback)

API Coverage

This CLI covers the complete Basecamp 4 API Tier 1 domains:

DomainStatus
ProjectsComplete
TodolistsComplete
TodosComplete
Todolist GroupsComplete
MessagesComplete
CampfiresComplete
CommentsComplete
VaultsComplete
DocumentsComplete
UploadsComplete
SchedulesComplete
Card TablesComplete
WebhooksComplete
RecordingsComplete
EventsComplete
SearchComplete
SubscriptionsComplete
PeopleComplete

Development

# Clone the repo
git clone https://github.com/drkraft/basecamp-cli
cd basecamp-cli

# Install dependencies
bun install

# Build
bun run build

# Run tests
bun test

# Run validation against real Basecamp
bun run scripts/validate.ts

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT - see LICENSE for details.

Credits

Originally forked from @emredoganer/basecamp-cli.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

- Node.js >= 20

Configuration

Add to your MCP config (e.g., `~/.config/claude/claude_desktop_config.json`): ```json { "mcpServers": { "basecamp": { "command": "basecamp-mcp", "env": { "BASECAMP_CLIENT_ID": "<your-client-id>", "BASECAMP_CLIENT_SECRET": "<your-client-secret>" } } } } ```

FAQ

How do I install basecamp-cli?

Run openclaw add @drkraft/basecamp-cli-mcp in your terminal. This installs basecamp-cli into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/drkraft/basecamp-cli-mcp. Review commits and README documentation before installing.