使用说明
Basecamp MCP服务器(TypeScript)
一种模型上下文协议(MCP)服务器,将Basecamp工具暴露给AI助手(例如,代理模式下的VS代码聊天)。
支持项目、待办事项集/列表、消息(带有渲染内容)和创建待办事项。
特性
-
项目
list_projects--丰富的列表(状态、时间戳、目的、客户端标志、书签、已启用 码头 工具)- 通过HTTP进行分页
Linkheader(暴露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根据RFC5988Link头球再次致电{ "page": <nextPage> }.
故障排除(快速)
- ESM导入错误:确保您的项目已配置为ESM/NodeNext(标准TS/Node设置)。
- 来自API的401/429:验证令牌并减少请求量;客户端重试一次
429使用Retry-After. - 待办事项/留言板:该项目的dock中可能没有启用这些工具。