项目管理协议服务器

一个Model Context Protocol (MCP)服务器,将Basecamp工具暴露给AI助手,支持项目管理、待办事项、消息处理和待办事项创建。

  • by craigashields
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 craigashields/basecamp-mcp

使用说明

Basecamp MCP服务器(TypeScript)

一种模型上下文协议(MCP)服务器,将Basecamp工具暴露给AI助手(例如,代理模式下的VS代码聊天)。
支持项目、待办事项集/列表、消息(带有渲染内容)和创建待办事项。


特性

  • 项目

    • list_projects --丰富的列表(状态、时间戳、目的、客户端标志、书签、已启用 码头 工具)
    • 通过HTTP进行分页 Link header(暴露 nextPage)
    • 可选的原始停靠对象
  • 待办事项集/列表

    • 解决项目的 待办事项设置 从项目 码头
    • get_todoset --返回-do set id/url;可选列表
    • list_todolists --列出项目待办事项集的待办事项列表
  • 消息

    • list_messages --从dock解析项目留言板,列出带分页的消息
    • 可选的 完整内容渲染 (markdown/html/text)
    • get_message --获取单个消息(渲染或原始JSON)
  • 待办事项

    • create_todo --在列表中创建待办事项(标题、描述、可选 due_on)

项目布局

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)

快速启动

# 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)

环境变量

添加所需值 在一个 .env 文件 在项目的根。
以下MCP服务器配置引用了此文件。

做 不 承诺你的 .env 文件到版本控制。


在VS代码中配置(MCP)

创建 .vscode/mcp.json 在本项目中:

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

现在从VS代码重新启动服务器:

  • 命令面板→ “MCP:列出服务器”→ 大本营→ 启动/重新启动
  • 打开 聊天,切换到 代理,启用 大本营 工具。

示例工具调用(代理模式)

项目(带dock的JSON):

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

或自然语言

retrieve all project information

决心要做的事情和清单:

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

自然语言示例

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

创建待办事项:

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

自然语言示例

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

消息(渲染内容):

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" }

或

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

分页:答复包括 nextPage 根据RFC5988 Link 头球再次致电 { "page": <nextPage> }.


故障排除(快速)

  • ESM导入错误:确保您的项目已配置为ESM/NodeNext(标准TS/Node设置)。
  • 来自API的401/429:验证令牌并减少请求量;客户端重试一次 429 使用 Retry-After.
  • 待办事项/留言板:该项目的dock中可能没有启用这些工具。

许可证

国际协调委员会

致谢