MFP:大本营主力巡逻队
用于Basecamp 3/4 API的全覆盖Ruby MCP服务器。与官方合作建造 MCP Ruby SDK 设计用于与Claude Desktop、Claude Code和任何兼容MCP的客户端配合使用。
以主力巡逻队命名 *疯狂的麦克斯* --因为必须有人把法律和秩序带到未完成的大本营整合的荒地上。
为什么选择MFP
每个现有的Basecamp MCP服务器都不完整。最好的Python实现包含64个工具。Node.js的“完整”版本没有文档记录,也没有经过测试。尽管Basecamp是由Ruby商店构建的,但没有一个是用Ruby编写的。
MFP发货 146工具 覆盖整个Basecamp 4 API表面。
| 专题 | mcp大本营(PyPI) | 乔治亚托诺普洛斯 | MFP |
|---|---|---|---|
| 语言 | Python | Python | Ruby |
| 工具 | ~15 | 64 | 146 |
| 卡片表 | 否 | 否 | 是 |
| 客户端访问 | 否 | 否 | 是 |
| Webhooks | 否 | 否 | 是 |
| 篝火/聊天 | 否 | 部分 | 是 |
| 文件和保险库 | 否 | 部分 | 是 |
| 计划 | 否 | 部分 | 是 |
| 时间表 | 否 | 部分 | 是 |
| 富文本处理 | 基本 | 基本 | 完整(为AI去除HTML) |
| 分页 | 否 | 是 | 是(自动) |
| 速率限制 | 否 | 否 | 是(自动重试) |
| 令牌刷新 | 否 | 是 | 是(自动) |
工具(146)
人员(4个工具)
list_people get_person get_my_profile list_pingable_people
项目(5个工具)
list_projects get_project create_project update_project trash_project
模板(5个工具)
list_templates get_template create_template update_template trash_template
留言板(1个工具)
get_message_board
消息(7个工具)
list_messages get_message create_message update_message trash_message pin_message unpin_message
消息类型(5个工具)
list_message_types get_message_type create_message_type update_message_type trash_message_type
篝火/聊天(5工具)
get_campfire list_campfire_lines get_campfire_line create_campfire_line trash_campfire_line
聊天机器人(6个工具)
list_chatbots get_chatbot create_chatbot update_chatbot trash_chatbot create_chatbot_line
待办事项集(1个工具)
get_todoset
待办事项列表(5个工具)
list_todolists get_todolist create_todolist update_todolist trash_todolist
待办事项列表组(4个工具)
list_todolist_groups get_todolist_group create_todolist_group reposition_todolist_group
To Dos(8工具)
list_todos get_todo create_todo update_todo complete_todo uncomplete_todo reposition_todo trash_todo
卡片桌/看板(19个工具)
get_card_table list_card_table_columns get_card_table_column create_card_table_column update_card_table_column trash_card_table_column list_cards get_card create_card update_card move_card trash_card list_card_steps get_card_step create_card_step complete_card_step uncomplete_card_step reposition_card_step trash_card_step
文档(5个工具)
list_documents get_document create_document update_document trash_document
保险库/文件夹(5个工具)
list_vaults get_vault create_vault update_vault trash_vault
上传和附件(6个工具)
list_uploads get_upload create_upload update_upload trash_upload create_attachment
计划表(6个工具)
get_schedule list_schedule_entries get_schedule_entry create_schedule_entry update_schedule_entry trash_schedule_entry
签到(5个工具)
get_questionnaire list_questions get_question list_question_answers get_question_answer
电子邮件收件箱(5个工具)
get_inbox list_inbox_forwards get_forward list_inbox_replies get_inbox_reply
客户端访问(9个工具)
list_client_visible_recordings toggle_client_visibility get_client_approval list_client_approval_responses list_client_correspondences get_client_correspondence create_client_correspondence list_client_replies get_client_reply
评论(5个工具)
list_comments get_comment create_comment update_comment trash_comment
录音(4个工具)
list_recordings trash_recording archive_recording unarchive_recording
订阅(4个工具)
list_subscriptions subscribe unsubscribe update_subscription
事件/活动日志(2个工具)
list_events get_event
排队标记(4个工具)
list_lineup_markers create_lineup_marker update_lineup_marker trash_lineup_marker
时间表(6工具)
get_timesheet list_time_entries get_time_entry create_time_entry update_time_entry trash_time_entry
Webhooks(5个工具)
list_webhooks get_webhook create_webhook update_webhook trash_webhook
需求
- Ruby>=3.1.0
- Basecamp 3或4帐户
- Basecamp API令牌(请参阅 认证)
安装
克隆存储库并安装依赖项:
git clone https://github.com/merovex/mfp-basecamp.git
cd mfp-basecamp
bundle install认证
MFP支持两种身份验证方法。
选项A:API密钥(最简单)
如果您已经有一个Basecamp API密钥,请通过环境变量直接传递它。这是快速设置的推荐方法。
你需要三个值:
- API密钥 --您的Basecamp OAuth令牌。您可以在以下位置生成一个 https://launchpad.37signals.com/integrations.
- 账户ID --Basecamp URL中的数字ID(例如。,
https://3.basecamp.com/5516303/表示帐户ID为5516303). - 用户代理 --Basecamp需要一个User-Agent标头,其中包含您的应用程序名称和联系人电子邮件。
选项B:OAuth安装流程
运行交互式设置命令来遍历完整的OAuth 2.0流程:
ruby bin/basecamp-mcp setup这将:
- 提示您输入OAuth客户端ID和客户端密码
- 打开浏览器,使用Basecamp进行授权
- 交换访问/刷新令牌的授权码
- 将凭据保存到
~/.basecamp-mcp/credentials.json(模式0600)
401响应会自动刷新令牌。
配置
克劳德桌面版
Claude Desktop以最小的成本推出MCP服务器 PATH 通常仅包括 /usr/bin。如果您使用Ruby版本管理器(mise、rbenv、asdf、rvm),Claude Desktop将找不到您的托管Ruby——它将找到旧系统Ruby,并且无法加载gem。
修复方法是使用包含的包装器脚本,该脚本设置了正确的Ruby路径:
# First, edit the wrapper to match your Ruby path:
# Open bin/mfp-basecamp-wrapper and update the PATH line
# to point at your Ruby installation.然后将MFP添加到Claude Desktop配置中 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mfp-basecamp": {
"command": "/path/to/mfp-basecamp/bin/mfp-basecamp-wrapper",
"args": [],
"env": {
"BASECAMP_API_KEY": "your-api-token-here",
"BASECAMP_ACCOUNT_ID": "your-account-id",
"BASECAMP_USER_AGENT": "MFP Basecamp (you@example.com)"
}
}
}
}如果你是 不 使用版本管理器和默认值 ruby 如果是3.1+,您可以跳过包装器并使用 ruby 直接:
{
"mcpServers": {
"mfp-basecamp": {
"command": "ruby",
"args": ["/path/to/mfp-basecamp/bin/basecamp-mcp"],
"env": {
"BASECAMP_API_KEY": "your-api-token-here",
"BASECAMP_ACCOUNT_ID": "your-account-id",
"BASECAMP_USER_AGENT": "MFP Basecamp (you@example.com)"
}
}
}
}或者生成启动器配置:
ruby bin/basecamp-mcp config克劳德代码
添加到您的Claude Code MCP设置中:
claude mcp add mfp-basecamp -- ruby /path/to/mfp-basecamp/bin/basecamp-mcp在shell配置文件中设置所需的环境变量或使用 --env 旗帜。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
BASECAMP_API_KEY | 是\* | Basecamp OAuth访问令牌 |
BASECAMP_ACCOUNT_ID | 是\* | Basecamp URL中的数字帐户ID |
BASECAMP_USER_AGENT | 否 | 用户代理字符串(默认值: BasecampMCP (basecamp-mcp@example.com)) |
BASECAMP_BASE_URL | 没有 | API基本URL(默认值: https://3.basecampapi.com) |
BASECAMP_ACCESS_TOKEN | 是\* | 别名 BASECAMP_API_KEY |
BASECAMP_REFRESH_TOKEN | 否 | 用于自动续订的OAuth刷新令牌 |
BASECAMP_CLIENT_ID | 否 | OAuth客户端ID(令牌刷新需要) |
BASECAMP_CLIENT_SECRET | 否 | OAuth客户端密钥(令牌刷新需要) |
\*要么 BASECAMP_API_KEY 或 BASECAMP_ACCESS_TOKEN 是必需的(除非使用 ~/.basecamp-mcp/credentials.json).
用法
配置后,MFP工具可供您的AI助手使用。你可以问的例子:
项目概况:
“列出我所有正在进行的Basecamp项目”
做管理:
“显示项目12345中的待办事项列表” 在项目12345的待办事项列表67890中创建一个待办事项“查看拉取请求”,周五到期 “在项目12345中将待办事项11111标记为已完成”
信息:
在项目12345的留言板上发布一条名为“Sprint Recap”的消息 “列出项目12345留言板中的所有消息”
评论:
“在项目12345中的待办事项11111中添加评论‘我觉得很好’”
人:
“谁在这个大本营账户上?”
查找ID
大多数工具都需要 project_id.首先列出项目:
- 使用
list_projects查找您的项目ID - 使用
get_project使用该ID可以查看项目的“dock”,其中包含留言板、待办事项集、日程表等的ID。 - 使用这些坞站ID来访问特定工具(例如。,
list_todolists使用todoset ID)
建筑
lib/
basecamp_mcp.rb # Top-level require
basecamp_mcp/
client.rb # Faraday HTTP client with auto-pagination
token_store.rb # Credential management (env vars + file)
html_utils.rb # HTML-to-text stripping for AI readability
tool_helpers.rb # Shared helpers for all tool classes
server.rb # MCP server bootstrap (STDIO transport)
setup.rb # OAuth setup flow (lazy-loaded)
middleware/
token_refresh.rb # Auto-refresh on 401
rate_limit_retry.rb # Auto-retry on 429 with Retry-After
tools/ # 27 tool files, 146 tools total
people.rb # 4 tools
projects.rb # 5 tools
templates.rb # 5 tools
message_boards.rb # 1 tool
messages.rb # 7 tools
message_types.rb # 5 tools
campfire.rb # 5 tools
chatbots.rb # 6 tools
todosets.rb # 1 tool
todolists.rb # 5 tools
todolist_groups.rb # 4 tools
todos.rb # 8 tools
card_tables.rb # 19 tools
documents.rb # 5 tools
vaults.rb # 5 tools
uploads.rb # 6 tools
schedule.rb # 6 tools
checkins.rb # 5 tools
inbox.rb # 5 tools
client_access.rb # 9 tools
comments.rb # 5 tools
recordings.rb # 4 tools
subscriptions.rb # 4 tools
events.rb # 2 tools
lineup.rb # 4 tools
timesheets.rb # 6 tools
webhooks.rb # 5 tools工具在启动时自动发现。添加新域意味着在中创建文件 tools/ 并将其名称添加到 TOOL_FILES 数组in tools.rb。无需手动注册。
构建于
- MCP Ruby SDK v0.7——官方模型上下文协议实现
- 法拉第 v2——带中间件的HTTP客户端
- Basecamp 4 API --我们正在包装的API
许可证
麻省理工学院
