Skip to main content

MCP server that wraps the basecamp CLI.

Project description

basecamp-cli-mcp

A Model Context Protocol (MCP) server that wraps the basecamp CLI. Every non-shortcut CLI action (projects list, todos create, cards update, etc.) is exposed as an MCP tool, so MCP-compatible clients (Claude Code, Claude Desktop, etc.) can drive Basecamp directly.

Requirements

  • Python ≥ 3.11
  • The basecamp CLI on PATH, already authenticated (basecamp setup) — see First-time setup below to do both in one command
  • uv for the recommended install

First-time setup

If you don't have the basecamp CLI installed yet:

uvx basecamp-cli-mcp setup

This checks for the basecamp binary, runs the official installer (curl -fsSL https://basecamp.com/install-cli | bash) after a y/N prompt if it's missing, then runs basecamp setup to walk you through OAuth.

On macOS, after auth completes it offers to:

  1. Add basecamp to your claude_desktop_config.json (with a timestamped backup of any existing file). You'll choose between:
    • Minimal — todos, cards, card tables, card steps (plus projects_list). A focused tool set that's easier for agents to navigate.
    • Full — all 250+ tools.
    • Skip — leave the config alone.
  2. Restart Claude Desktop.

macOS and Linux only for the install/auth — on Windows the command prints the PowerShell installer and exits. The Claude Desktop step is macOS-only.

Run

The fastest way — no install step at all:

uvx basecamp-cli-mcp

uvx resolves the package, runs it in an ephemeral isolated env, and exec's it on stdin/stdout.

To install permanently:

uv tool install basecamp-cli-mcp
basecamp-cli-mcp

Add to Claude Code

claude mcp add basecamp -- uvx basecamp-cli-mcp

Add to Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "basecamp": {
      "command": "uvx",
      "args": ["basecamp-cli-mcp"]
    }
  }
}

If uvx isn't on Desktop's PATH (it strips most of your shell PATH), use the absolute path — which uvx from your shell.

Filtering tools

By default the server exposes all 250+ tools. Most agents only need a handful, and a smaller catalog speeds up tool selection. Filter with --include / --exclude (fnmatch globs against tool names; both flags repeatable):

basecamp-cli-mcp --include 'cards_*' --include 'todos_*'
basecamp-cli-mcp --include '*' --exclude 'webhooks_*' --exclude 'templates_*'

Register multiple profiles in claude_desktop_config.json and turn them on per task:

{
  "mcpServers": {
    "basecamp-cards": {
      "command": "uvx",
      "args": ["basecamp-cli-mcp", "--include", "cards_*", "--include", "projects_list"]
    },
    "basecamp-todos": {
      "command": "uvx",
      "args": ["basecamp-cli-mcp", "--include", "todos_*", "--include", "projects_list"]
    },
    "basecamp-full": {
      "command": "uvx",
      "args": ["basecamp-cli-mcp"]
    }
  }
}

BASECAMP_BIN

If the basecamp CLI isn't on the spawned process's PATH (a real risk under Claude Desktop), set:

"env": { "BASECAMP_BIN": "/absolute/path/to/basecamp" }

How it works

Tool schemas are pre-generated and committed to src/basecamp_cli_mcp/data/tools.json (shipped inside the wheel as package data). At runtime the server loads that file and registers one MCP tool per entry. Each tool:

  1. Builds argv from positional arguments and flags defined in the schema.
  2. Shells out: basecamp <group> <action> <args...> --json.
  3. Returns the parsed data field from the CLI's {ok, data} envelope to the MCP client.

Shortcut commands (todo, done, card, comment, etc.) are intentionally excluded — their underlying actions (todos_create, cards_create, …) are already exposed.

Regenerating tool schemas

After upgrading the basecamp CLI:

uv run basecamp-cli-mcp generate

Review the diff in src/basecamp_cli_mcp/data/tools.json and commit. The generator reads basecamp commands --json and parses basecamp <group> <action> --help for each action.

Development

uv sync
uv run pytest
uv build                       # wheel + sdist into dist/

Layout:

  • src/basecamp_cli_mcp/server.py — wires up the MCP server from data/tools.json
  • src/basecamp_cli_mcp/runner.py — builds argv and shells out
  • src/basecamp_cli_mcp/generator.py — regenerates data/tools.json
  • src/basecamp_cli_mcp/help_parser.py — parses --help text into a schema
  • src/basecamp_cli_mcp/cli.py — entrypoint (basecamp-cli-mcp)
  • src/basecamp_cli_mcp/data/tools.json — generated tool schemas (committed)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

basecamp_cli_mcp-0.7.0.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

basecamp_cli_mcp-0.7.0-py3-none-any.whl (36.3 kB view details)

Uploaded Python 3

File details

Details for the file basecamp_cli_mcp-0.7.0.tar.gz.

File metadata

  • Download URL: basecamp_cli_mcp-0.7.0.tar.gz
  • Upload date:
  • Size: 35.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for basecamp_cli_mcp-0.7.0.tar.gz
Algorithm Hash digest
SHA256 1587920bdb65e6e9a4fbb1854be9844e71cfabc95efb13f16c18bbccf729fd84
MD5 4e719e42d0747d2b840c3d6702ca32d6
BLAKE2b-256 3783640fb5fb2d1ba3ecbfb8b70da68eaf5fad19b3617961aeb6c0dd0881cf1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for basecamp_cli_mcp-0.7.0.tar.gz:

Publisher: release.yml on FutureWorkshops/basecamp-cli-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file basecamp_cli_mcp-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for basecamp_cli_mcp-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db67a31aedd0a6b30c0955bc164c6f400f30c22e41db6e3b2faf67d2eca02ce6
MD5 7c98ba8ecd7f5e27c5adc616d428b4cd
BLAKE2b-256 873434345ee80102b68f54331bed9b07e4045f949d714671e60901f38626b8cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for basecamp_cli_mcp-0.7.0-py3-none-any.whl:

Publisher: release.yml on FutureWorkshops/basecamp-cli-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page