Skip to main content
Glama

Basecamp MCP Server (TypeScript)

A Model Context Protocol (MCP) server that exposes Basecamp tools to AI assistants (e.g., VS Code Chat in Agent mode).
Supports projects, to‑do sets/lists, messages (with rendered content), and creating to‑dos.


Features

  • Projects

    • list_projects — rich listing (status, timestamps, purpose, client flags, bookmarks, enabled dock tools)

    • Pagination via HTTP Link header (exposes nextPage)

    • Optional raw dock objects

  • To‑do sets / lists

    • Resolves a project’s to‑do set from the project dock

    • get_todoset — returns to‑do set id/url; optional lists

    • list_todolists — lists to‑do lists for a project’s to‑do set

  • Messages

    • list_messages — resolves the project Message Board from dock, lists messages with pagination

    • Optional full content rendering (markdown/html/text)

    • get_message — fetch a single message (rendered or raw JSON)

  • To‑dos

    • create_todo — create a to‑do in a list (title, description, optional due_on)


Related MCP server: Basecamp MCP Server

Project layout

src/
├─ lib/
│  └─ basecamp.ts          # Basecamp client (auth refresh, requests, pagination)
├─ tools/
│  ├─ projects.ts          # list_projects
│  ├─ todosets.ts          # get_todoset, list_todolists
│  ├─ messages.ts          # list_messages, get_message
│  └─ todos.ts             # create_todo
└─ basecamp-mcp.ts         # entrypoint (register tools, start stdio server)

Quick start

# 1) Install dependencies
npm install

# 2) Build
npm run build

# 3) (Optional) sanity check
node build/basecamp-mcp.js
# (MCP servers sit and wait on stdio; no output is expected here)

Environment variables

Add your required values in a .env file at the project root.
This file is referenced by the MCP server configuration below.

Do not commit your .env file to version control.


Configure in VS Code (MCP)

Create .vscode/mcp.json in this project:

{
  "servers": {
    "basecamp": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/build/basecamp-mcp.js"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

Now restart the server from VS Code:

  • Command Palette → “MCP: List Servers” → basecamp → Start/Restart

  • Open Chat, switch to Agent, enable the basecamp tools.


Example tool calls (Agent mode)

Projects (JSON with dock):

Run basecamp.list_projects with { "format": "json", "dock_detail": true, "limit": 5 }

or natural language

retrieve all project information

Resolve to‑do set and lists:

Run basecamp.get_todoset with { "project_id": 123456789 }
Run basecamp.list_todolists with { "project_id": 123456789 }

Natural language example

show todo sets and lists for project "{{prpjectName / Id}}"

Create a to‑do:

Run basecamp.create_todo with { "project_id": 123456789, "todolist_id": 222222222, "content": "Kickoff", "due_on": "2025-09-30" }

Natural language example

create a to-do in the "{to do list name}", titled "Update README.md"

Messages (rendered content):

Run basecamp.list_messages with { "project_id": 123456789, "page": 1, "format": "markdown", "include_body": true }
Run basecamp.get_message with { "project_id": 123456789, "message_id": 987654321, "render": "markdown" }

or

get all messages from TestMCP project
get content for this message "{messageId / title"

Pagination: responses include nextPage from the RFC5988 Link header. Call again with { "page": <nextPage> }.


Troubleshooting (quick)

  • ESM import errors: make sure your project is configured for ESM/NodeNext (standard TS/Node setup).

  • 401/429 from API: verify tokens and reduce request volume; the client retries once on 429 using Retry-After.

  • No to‑do set / message board: that project may not have those tools enabled in its dock.


License

ISC

Acknowledgments

Available Tools

6 tools
create_todoCreate a to-doC

Create a new to-do in the given list.

Inputs: project_id (required), todolist_id (required), content (required), description, +1 more.

get_messageGet a messageB

Fetch a single message by ID; render body as markdown/html/text, or return raw JSON.

Inputs: project_id (required), message_id (required), render.

get_todosetGet a project's to-do set (via dock)C

Resolves the project's to-do set by reading the dock; can include lists.

Inputs: project_id (required), include_lists.

list_messagesList messagesC

Resolves the project's message board from the dock, then lists messages with pagination. Optionally include full content.

Inputs: project_id (required), page, limit, format, +2 more.

list_projectsList Basecamp projects (rich)B

Returns id, name, status, timestamps, purpose, clients_enabled, bookmarked, and enabled dock tools. Supports pagination and JSON output.

Inputs: limit, page, include_archived, include_dock, +2 more.

list_todolistsList to-do lists for a projectC

Resolves the project's to-do set from dock, then lists its to-do lists.

Inputs: project_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 6 tools

    Disambiguation4/5

    The tools are mostly distinct, with clear separation between to-do, message, and project operations. However, 'get_todoset' and 'list_todolists' could be slightly confusing as both relate to to-do lists, though 'get_todoset' focuses on resolving the set while 'list_todolists' lists the lists within it, which helps mitigate overlap.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., create_todo, get_message, list_projects), using snake_case throughout. This predictability makes it easy for agents to understand and navigate the tool set without confusion.

    Tool Count4/5

    With 6 tools, the count is reasonable for a Basecamp server, covering core operations like creating to-dos and listing projects. It's slightly lean but well-scoped, though it could benefit from additional tools for updates or deletions to enhance completeness.

    Completeness3/5

    The tools cover basic read and create operations for to-dos, messages, and projects, but there are notable gaps. For example, there are no update or delete tools for to-dos or messages, and operations like creating messages or projects are missing, which could limit agent workflows in a CRUD context.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables seamless integration with Basecamp 3 through 46 comprehensive API tools, allowing users to manage projects, todos, card tables, documents, campfire messages, and other Basecamp features through natural language interactions in Claude Desktop and Cursor IDE.
      33
      5
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Connects Basecamp workspaces to AI tools, enabling management of projects, messages, todos, and schedules through natural language interactions. Features persistent caching and supports both reading workspace data and performing actions like creating messages and updating todos.
      10
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables LLMs to interact with Basecamp projects, managing messages, todos, comments, people, and kanban boards through natural language. Supports comprehensive Basecamp operations including creating, reading, updating content with flexible output formats and URL parsing capabilities.
      57
      95 npm
      2
      MIT