Basecamp项目管理服务器

一个基于FastMCP 2.0构建的MCP服务器,提供与Basecamp API交互的工具,用于项目发现、任务管理和团队协作。

  • by aayush1maggo
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aayush1maggo/basecamp-mcp-server

使用说明

Basecamp MCP服务器

使用FastMCP 2.0构建的MCP服务器,提供与Basecamp API交互的工具。

特性

  • 项目发现:列出每个可见的Basecamp项目,并自动分页(无15个项目上限)
  • 项目详细视图:获取单个项目,包括其dock元数据和工具端点
  • 做概述:使用与项目相同的分页支持浏览待办事项集和列表
  • 任务向下钻取:使用丰富的元数据、任务分配和日程安排检查个人待办事项列表和任务
  • 任务管理:待办事项的完整CRUD操作-创建、读取、更新、完成和不完成任务
  • 任务和日程安排:设置任务的指定人员、完成订阅者、截止日期和开始日期
  • 自动令牌刷新:OAuth令牌过期时会自动刷新(无需手动干预)

工具

list_projects

使用完整分页列出经过身份验证的用户可见的所有项目,这样您就不会错过项目。

参数

  • status (可选):按状态筛选项目;接受 archived 或 trashed。默认为活动状态。

退货 JSON有效载荷 total_projects、应用的筛选器和完整的项目列表。

get_project

获取单个项目,包括显示启用了哪些Basecamp工具的停靠信息。

参数

  • project_id (必填):项目的数字ID。

退货 JSON blob使用元数据、停靠条目和URL镜像Basecamp API响应。

get_todoset

检索给定项目(bucket)的待办事项集。使用此功能可发现集合中可用的待办事项列表。

参数

  • bucket_id (必填):项目或桶ID(与 project_id).
  • todoset_id (必填):待办事项集的ID,可从以下网址获得 get_project.

退货 JSON对象,包含用于下游查询的待办事项集元数据、统计信息和URL。

get_todolists

列出待办事项集中的所有待办事项列表,并自动处理分页。

参数

  • bucket_id (必填):项目/桶ID。
  • todoset_id (必填):设置ID。
  • status (可选):按以下条件筛选列表 archived 或 trashed。默认为活动状态。

退货 带有计数、过滤器和完整列表集合的JSON有效负载。

get_todolist

获取一个包含完整元数据和导航链接的待办事项列表。

参数

  • bucket_id (必填):项目/桶ID。
  • todolist_id (必填):列表的ID。

退货 描述列表、完成信息、父引用和URL的JSON对象。

get_todos

检索列表中的每个待办事项,支持状态和完成过滤器。

参数

  • bucket_id (必填):项目/桶ID。
  • todolist_id (必填):父列表的ID。
  • status (可选):筛选条件 archived 或 trashed.
  • completed (可选): true 对于已完成的任务, false 等待。

退货 JSON有效负载,包括总计、过滤器和所有匹配待办事项。

get_todo

获取一个包含完整细节的待办事项,包括任务分配、可见性、日程安排和操作URL。

参数

  • bucket_id (必填):项目/桶ID。
  • todo_id (必填):待办事项的ID。

退货 反映Basecamp待办事项模式的JSON对象。

create_todo

在列表中创建一个新的待办事项,支持与Basecamp的API一致的可选元数据。

参数

  • bucket_id (必填):项目/桶ID。
  • todolist_id (必填):目的地列表ID。
  • content (必填):任务标题/摘要。
  • description (可选):丰富的HTML描述。
  • assignee_ids (可选):要分配的人员ID列表。
  • completion_subscriber_ids (可选):完成后通知的人。
  • notify (可选):用于触发分配通知的布尔值。
  • due_on (可选):到期日 YYYY-MM-DD.
  • starts_on (可选):开始日期 YYYY-MM-DD.

退货 JSON有效负载,包括创建的待办事项数据和状态标记。

update_todo

用新值更新现有待办事项。

参数

  • bucket_id (必填):项目/桶ID。
  • todo_id (必填):要更新的待办事项的ID。
  • content (必填):任务标题/摘要(不能为空)。
  • description (可选):丰富的HTML描述。
  • assignee_ids (可选):要分配的人员ID列表。
  • completion_subscriber_ids (可选):完成后通知的人。
  • notify (可选):用于触发分配通知的布尔值。
  • due_on (可选):到期日 YYYY-MM-DD.
  • starts_on (可选):开始日期 YYYY-MM-DD.

退货 带有更新的待办事项数据的JSON有效载荷。

重要:您必须传递所有现有参数以及正在更新的参数。省略参数将清除其值。先拿待办事项 get_todo() 以保持现有价值。

complete_todo

将待办事项标记为已完成。

参数

  • bucket_id (必填):项目/桶ID。
  • todo_id (必填):要完成的待办事项的ID。

退货 JSON确认待办事项已标记为完成。

uncomplete_todo

通过删除已完成的待办事项的完成状态重新打开该待办事项。

参数

  • bucket_id (必填):项目/桶ID。
  • todo_id (必填):待完成的待办事项的ID。

退货 JSON确认待办事项标记为未完成。

get_people

检索Basecamp帐户中经过身份验证的用户可见的所有人员。

参数

  • 无

退货 JSON有效载荷 total_people 人员对象的计数和数组,包括:

  • 基本信息(id、姓名、电子邮件、职务、个人简介、位置)
  • 角色标志(管理员、所有者、客户、员工)
  • 权限(can_manage_projects、can_manage_people)
  • 配置文件数据(avatar_url、时区、公司)
  • 可用于查找要在中使用的人员ID assignee_ids 创建/更新待办事项时

设置

地方发展

  1. 安装依赖项:
pip install -r requirements.txt
  1. 创建一个 .env 将您的Basecamp凭据归档:
cp .env.example .env
  1. 获取您的Basecamp证书:

    • OAuth 应用:创建时间https://launchpad.37signals.com/integrations
    • 帐户ID:在您的大本营URL中找到它(https://3.basecamp.com/YOUR_ACCOUNT_ID)
  2. 使用配置身份验证 两种方法之一:

    方法A:token.json文件 (建议当地使用)

    • 通过OAuth流获取OAuth令牌
    • 创建 token.json 具有以下结构:
    {
      "basecamp": {
        "access_token": "your_access_token",
        "refresh_token": "your_refresh_token",
        "expires_at": "2025-12-31T23:59:59Z",
        "account_id": "your_account_id"
      }
    }
    

    方法B:环境变量 (建议用于云部署)

    • 将这些设置在您的 .env 文件:
    BASECAMP_ACCESS_TOKEN=your_access_token_here
    BASECAMP_REFRESH_TOKEN=your_refresh_token_here
    BASECAMP_TOKEN_EXPIRES_AT=2025-12-31T23:59:59Z
    BASECAMP_ACCOUNT_ID=your_account_id_here
    BASECAMP_CLIENT_ID=your_client_id
    BASECAMP_CLIENT_SECRET=your_client_secret
    BASECAMP_REDIRECT_URI=your_redirect_uri
    USER_AGENT="Your App Name (your@email.com)"
    

FastMCP云部署

对于FastMCP Cloud,仅使用环境变量:

所需的环境变量:

BASECAMP_ACCESS_TOKEN=your_access_token
BASECAMP_REFRESH_TOKEN=your_refresh_token
BASECAMP_TOKEN_EXPIRES_AT=2025-12-31T23:59:59Z
BASECAMP_ACCOUNT_ID=your_account_id
BASECAMP_CLIENT_ID=your_oauth_client_id
BASECAMP_CLIENT_SECRET=your_oauth_client_secret
BASECAMP_REDIRECT_URI=your_redirect_uri
USER_AGENT="Your App Name (your@email.com)"

服务器将在令牌过期时自动刷新令牌(只要提供OAuth凭据)。

运行服务器

python server.py

服务器运行时使用 HTTP传输 上 http://0.0.0.0:8000,适用于FastMCP云部署。

注: 如果您需要stdio传输用于本地MCP客户端集成(例如,Claude Desktop),请更改中的第604行 server.py:

# For FastMCP Cloud (current):
mcp.run(transport="http", host="0.0.0.0", port=8000)

# For local MCP client:
mcp.run(transport="stdio")

分页

服务器通过以下方式自动处理Basecamp的分页:

  • 跟随 Link 下一页的标题(根据Basecamp API指南)
  • 汇总所有页面的结果
  • 停止时 Link 页眉为空(到达最后一页)

这确保您获得所有项目,而不仅仅是API返回的前15个项目。

API文档

基于 Basecamp 4 API文件