关于 Teamwork MCP
Teamwork MCP 将 Teamwork API 接入 MCP,为项目、任务、人员、报告和工时数据提供操作工具。它支持按工具或类别筛选暴露内容,适合需要在 MCP 客户端中管理 Teamwork 工作数据的团队。
主要功能
- 01读取和创建项目
- 02查询、创建、更新及删除任务
- 03管理评论、公司和人员
- 04提供报告与工时查询
- 05按工具或类别筛选能力
适用场景
- 01在 MCP 客户端中查看和更新任务
- 02创建 Teamwork 项目及子任务
- 03查询人员利用率和任务完成报告
- 04限制客户端可用的工具范围
MCP 相关
该 MCP 服务向客户端暴露 Teamwork 项目、任务、人员、报告、评论和工时相关工具。可通过工具筛选控制哪些能力可见和可执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
36收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| updatedAfter | string | 否 | 筛选此日期时间之后更新的项目(格式:ISO 8601) |
| timeMode | enum | 否 | 盈利能力时间模式timelogs | estimated |
| searchTerm | string | 否 | 按项目名称筛选 |
| reportType | enum | 否 | 指定报告类型project | health |
| reportTimezone | string | 否 | 配置报告日期的显示时区 |
| reportFormat | enum | 否 | 指定报告格式csv | html | pdf | xls |
| projectType | string | 否 | 按项目类型筛选 |
| orderMode | enum | 否 | 排序模式asc | desc |
| orderBy | enum | 否 | 排序字段companyname | datecreated | duedate | lastactivity | name | namecaseinsensitive | ownercompany | starred | categoryname |
| notCompletedBefore | string | 否 | 筛选在指定日期之前尚未完成的项目(格式:YYYY-MM-DD) |
| minLastActivityDate | string | 否 | 按最早最后活动日期筛选(格式:YYYY-MM-DD) |
| maxLastActivityDate | string | 否 | 按最晚最后活动日期筛选(格式:YYYY-MM-DD) |
| userId | integer | 否 | 按用户 ID 筛选 |
| pageSize | integer | 否 | 每页项目数(生成报告时不使用) |
| page | integer | 否 | 页码(生成报告时不使用) |
| orderByCustomFieldId | integer | 否 | 当 orderBy 等于 customfield 时,按自定义字段 ID 排序 |
| minBudgetCapacityUsedPercent | integer | 否 | 按最低预算使用率筛选 |
| maxBudgetCapacityUsedPercent | integer | 否 | 按已用预算容量的最大值筛选 |
| includeArchivedProjects | boolean | 否 | 包含已归档项目 |
| includeCompletedProjects | boolean | 否 | 包含已完成项目 |
| includeProjectOwner | boolean | 否 | 包含项目所有者 |
| includeProjectCreator | boolean | 否 | 包含项目创建者 |
| includeProjectCompany | boolean | 否 | 包含项目公司 |
| includeProjectCategory | boolean | 否 | 包含项目类别 |
| includeProjectTags | boolean | 否 | 包含项目标签 |
| includeProjectStatus | boolean | 否 | 包含项目状态 |
| includeProjectHealth | boolean | 否 | 包含项目健康状况 |
| includeProjectBudget | boolean | 否 | 包含项目预算 |
| includeProjectProfitability | boolean | 否 | 包含项目盈利能力 |
| includeProjectCustomFields | boolean | 否 | 包含项目自定义字段 |
| includeProjectBillingMethod | boolean | 否 | 包含项目计费方式 |
| includeProjectRateCards | boolean | 否 | 包含项目费率卡 |
| includeProjectRateCardRates | boolean | 否 | 包含项目费率卡费率 |
| includeProjectRateCardCurrencies | boolean | 否 | 包含项目费率卡币种 |
| includeProjectRateCardUsers | boolean | 否 | 包含项目费率卡用户 |
| includeProjectRateCardUserRates | boolean | 否 | 包含项目费率卡用户费率 |
| includeProjectRateCardUserCurrencies | boolean | 否 | 包含项目费率卡用户币种 |
| includeProjectRateCardTasks | boolean | 否 | 包含项目费率卡任务 |
| includeProjectRateCardTaskRates | boolean | 否 | 包含项目费率卡任务费率 |
| includeProjectRateCardTaskCurrencies | boolean | 否 | 包含项目费率卡任务货币 |
详细介绍
Teamwork MCP
一个连接 Teamwork API 的 MCP 服务,提供简化的接口,用于与 Teamwork 项目和任务交互。
功能
- 连接 Teamwork API
- 获取项目和任务
- 创建、更新和删除任务
- RESTful API 端点
- 错误处理和日志记录
- 用于与 Cursor 和其他应用程序集成的 MCP 服务
前提条件
- Node.js(v14.17 或更高版本,建议使用 18+,或更好的最新 LTS 版本)
- npm 或 yarn
- 拥有 API 访问权限的 Teamwork 账户
可用的 Teamwork MCP 工具
可通过 MCP 服务使用以下工具:
项目工具
getProjects- 获取 Teamwork 中的所有项目getCurrentProject- 获取当前项目的详细信息createProject- 在 Teamwork 中创建新项目
任务工具
getTasks- 获取 Teamwork 中的所有任务getTasksByProjectId- 获取 Teamwork 中指定项目的所有任务getTaskListsByProjectId- 获取 Teamwork 中指定项目的所有任务列表getTasksByTaskListId- 获取 Teamwork 中指定任务列表 ID 下的所有任务getTaskById- 根据 ID 从 Teamwork 获取指定任务createTask- 在 Teamwork 中创建新任务createSubTask- 在 Teamwork 中为父任务创建新子任务updateTask- 更新 Teamwork 中的现有任务deleteTask- 删除 Teamwork 中的任务getTasksMetricsComplete- 获取 Teamwork 中已完成任务的总数getTasksMetricsLate- 获取 Teamwork 中逾期任务的总数getTaskSubtasks- 获取 Teamwork 中指定任务的所有子任务getTaskComments- 获取 Teamwork 中指定任务的评论
评论工具
createComment- 创建与任务/消息/笔记本相关的评论
公司工具
getCompanies- 获取 Teamwork 中的所有公司,可选筛选getCompanyById- 根据 ID 获取指定公司createCompany- 在 Teamwork 中创建新公司updateCompany- 更新现有公司的信息deleteCompany- 删除 Teamwork 中的公司
人员工具
getPeople- 获取 Teamwork 中的所有人员getPersonById- 根据 ID 从 Teamwork 获取指定人员getProjectPeople- 获取 Teamwork 中分配到指定项目的所有人员addPeopleToProject- 将人员添加到 Teamwork 中的指定项目deletePerson- 删除 Teamwork 中的人员updatePerson- 更新人员信息(时区、姓名、电子邮件等)getProjectsPeopleMetricsPerformance- 获取人员绩效指标getProjectsPeopleUtilization- 获取人员利用率getProjectPerson- 获取项目中的指定人员
报告工具
getProjectsReportingUserTaskCompletion- 获取用户任务完成情况报告getProjectsReportingUtilization- 获取多种格式的利用率报告,包括 CSV 和 HTML
时间工具
getTime- 获取所有时间记录getProjectsAllocationsTime- 获取项目分配时间getTimezones- 获取 Teamwork 中所有可用的时区(更新用户时区时很有用)
安装
使用 NPX(推荐)
使用 Teamwork MCP 最简单的方法是通过 npx。此方法无需克隆仓库或在本地构建代码:
npx @vizioz/teamwork-mcp
你也可以直接传入配置选项:
npx @vizioz/teamwork-mcp --domain=your-company [email protected] --pass=your-password
配置
设置凭据
你可以通过三种方式提供 Teamwork 凭据:
-
环境变量:在环境中设置
TEAMWORK_DOMAIN、TEAMWORK_USERNAME和TEAMWORK_PASSWORD。 -
.env 文件:创建包含所需变量的
.env文件:TEAMWORK_DOMAIN=your-company [email protected] TEAMWORK_PASSWORD=your-password -
命令行参数:运行应用程序时传入凭据:
npx @vizioz/teamwork-mcp --teamwork-domain=your-company [email protected] --teamwork-password=your-password或使用简写形式:
npx @vizioz/teamwork-mcp --domain=your-company [email protected] --pass=your-password
日志配置
默认情况下,Teamwork MCP 服务会在 logs 目录中创建日志文件,以便调试和监控。你可以通过以下方法完全禁用日志记录:
-
命令行参数:
npx @vizioz/teamwork-mcp --disable-logging或使用替代形式:
npx @vizioz/teamwork-mcp --no-logging -
环境变量:
DISABLE_LOGGING=true npx @vizioz/teamwork-mcp
启用日志记录后,服务会在 logs 目录中创建两个日志文件:
error.log- 仅包含错误级别的消息combined.log- 包含所有日志消息(信息、警告、错误)
每个日志文件都包含一个标题,其中说明了如何在需要时禁用日志记录。
工具筛选
你可以使用以下命令行参数控制 MCP 服务可用的工具:
-
允许列表:仅公开指定的工具:
npx @vizioz/teamwork-mcp --allow-tools=getProjects,getTasks,getTaskById或使用简写形式:
npx @vizioz/teamwork-mcp --allow=getProjects,getTasks,getTaskById -
拒绝列表:公开除指定工具之外的所有工具:
npx @vizioz/teamwork-mcp --deny-tools=deleteTask,updateTask或使用简写形式:
npx @vizioz/teamwork-mcp --deny=deleteTask,updateTask
使用分组筛选工具
现在,你可以指定工具组进行筛选,从而更灵活地控制 MCP 服务可用的工具。可用的分组如下:
- Projects:包含所有与项目相关的工具。
- Tasks:包含所有与任务相关的工具。
- People:包含所有与人员相关的工具。
- Reporting:包含所有与报告相关的工具。
- Time:包含所有与时间相关的工具。
- Comments:包含特定的评论工具。
在工具筛选中使用分组
你可以在允许列表或拒绝列表中指定这些分组,以包含或排除组内的所有工具。例如:
-
使用分组的允许列表:仅公开指定分组中的工具:
npx @vizioz/teamwork-mcp --allow-tools=Tasks,People或使用简写形式:
npx @vizioz/teamwork-mcp --allow=Tasks,People -
使用分组的拒绝列表:公开除指定分组中的工具之外的所有工具:
npx @vizioz/teamwork-mcp --deny-tools=Reporting,Time或使用简写形式:
npx @vizioz/teamwork-mcp --deny=Reporting,Time
默认情况下,如果未提供允许列表或拒绝列表,则会公开所有工具。如果同时提供两者,则以允许列表为准。
为增强安全性,工具筛选会在两个层面强制执行:
- 列出可用工具时(不在允许列表中或位于拒绝列表中的工具不会显示)
- 执行工具调用时(尝试调用经过筛选的工具会被拒绝并返回错误)
设置 Teamwork 项目
若要将当前解决方案关联到 Teamwork 项目,可以使用以下方法:
使用配置文件
你可以在项目根目录中创建一个 .teamwork 文件,内容结构如下:
PROJECT_ID = YourTeamworkProjectID
这个简单的配置文件会将你的解决方案关联到特定的 Teamwork 项目;我们可能会在未来用它存储更多详细信息。
配置完成后,MCP 就能找到你的 Teamwork 项目,并将其关联到当前解决方案,从而减少获取项目以及与你正在处理的解决方案相关任务所需的 API 调用次数。
添加到 MCP 客户端
Cursor
将此 MCP 服务添加到 Cursor:
0.47 之前的版本
- 打开 Cursor Settings > Features > MCP
- 点击“+ Add New MCP Server”
- 输入服务名称(例如,“Teamwork API”)
- 选择“stdio”作为传输类型
- 输入运行服务的命令:
npx @vizioz/teamwork-mcp,并添加上文提到的凭据和域名命令行参数。- 你可以添加工具筛选选项:
--allow=getProjects,getTasks或--deny=deleteTask
- 你可以添加工具筛选选项:
- 点击“Add”
0.47 之后的版本(手动编辑配置)
"Teamwork": {
"command": "npx",
"args": [
"-y",
"@vizioz/teamwork-mcp",
"--domain",
"yourdomain",
"--user",
"[email protected]",
"--pass",
"yourPassword"
]
}
要在 Cursor 中禁用日志记录,请添加 --disable-logging 参数:
"Teamwork": {
"command": "npx",
"args": [
"-y",
"@vizioz/teamwork-mcp",
"--domain",
"yourdomain",
"--user",
"[email protected]",
"--pass",
"yourPassword",
"--disable-logging"
]
}
如果你想添加上文提到的允许或拒绝参数,只需按以下方式添加即可。你可以添加上文中的任一示例,也可以像下面这样同时添加分组和单个工具:
"Teamwork": {
"command": "npx",
"args": [
"-y",
"@vizioz/teamwork-mcp",
"--domain",
"yourdomain",
"--user",
"[email protected]",
"--pass",
"yourPassword",
"--allow",
"Tasks,Projects",
"--deny",
"getProjectsPeopleMetricsPerformance,getProjectsPeopleUtilization"
]
}
现在,Cursor Composer 中的 Agent 就可以使用 Teamwork MCP 工具了。
Claude Desktop
要将此 MCP 服务添加到 Claude Desktop,请编辑 Claude Desktop 配置文件:
Windows:%APPDATA%\Claude\claude_desktop_config.json
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"teamwork": {
"command": "npx",
"args": [
"-y",
"@vizioz/teamwork-mcp",
"--domain",
"yourdomain",
"--user",
"[email protected]",
"--pass",
"yourPassword"
]
}
}
}
Windsurf
要将此 MCP 服务添加到 Windsurf,请按照与 Cursor 类似的步骤,通过 npx 命令和凭据添加 MCP 服务配置。
从源代码构建
注意:只有在计划为项目做贡献或提交拉取请求时,才需要按照这些说明操作。常规使用请使用上文所述的 NPX 安装方法。
本地开发环境设置
-
克隆仓库:
git clone https://github.com/readingdancer/teamwork-mcp.git cd teamwork-mcp -
安装依赖:
npm install -
根据
.env.example文件创建.env文件:cp .env.example .env -
使用你的 Teamwork 凭据更新
.env文件:PORT=3000 NODE_ENV=development LOG_LEVEL=info TEAMWORK_DOMAIN=your-company [email protected] TEAMWORK_PASSWORD=your-password
构建应用程序
构建应用程序:
npm run build
此操作将编译 TypeScript 代码,使其可用作 MCP 服务。
作为 MCP 服务运行(本地构建)
如果你使用 .env 文件配置用户名、密码和 url,或已将它们保存为环境变量,要将其作为 MCP 服务运行以集成到 Cursor 和其他应用程序中:
注意:请务必根据仓库的保存位置更改驱动器和路径信息。
node C:/your-full-path/build/index.js
或者,你也可以通过行参数传递它们:
node C:/your-full-path/build/index.js --teamwork-domain=your-company [email protected] --teamwork-password=your-password
你也可以使用简写形式:
node C:/your-full-path/build/index.js --domain=your-company [email protected] --pass=your-password
使用 MCP Inspector
运行 MCP inspector 以进行调试:
npm run inspector
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
免责声明
本项目与 Teamwork.com 无关,也未获得其认可或赞助。软件包名称(@vizioz/teamwork-mcp)中使用“Teamwork”一词仅用于描述,以表明本项目与 Teamwork.com API 兼容。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。