这是一个用于管理 JIRA 中 Tempo 工时记录的 Model Context Protocol (MCP) 服务器。该服务器使 AI 助手能够与 Tempo 的时间跟踪系统进行交互,支持工时记录的检索、创建、批量操作和管理。
{
"mcpServers": {
"tempo-filler": {
"command": "npx",
"args": ["@tranzact/tempo-filler-mcp-server"],
"env": {
"TEMPO_BASE_URL": "https://your-jira-instance.com",
"TEMPO_PAT": "your-personal-access-token"
}
}
}
}
这里有一个实际对话示例,展示了交互的自然性和强大性:
👤 用户:
将我的十月工作时间填入与九月相同的项目
🤖 AI 助手:
我会帮助你在十月的工作时间中填入与九月相同的项目。让我先检查你的九月工时记录以了解模式,然后相应地填充十月。
🔧 mcp_tempo-filler-_get_worklogs({
"startDate": "2025-09-01",
"endDate": "2025-09-30"
})
完美!我可以看到你在九月为 PROJ-1234 (Tempo MCP 服务器) 工作了200小时。现在让我获取你的十月工作计划,看看哪些天需要被填充。
🔧 mcp_tempo-filler-_get_schedule({
"startDate": "2025-10-01",
"endDate": "2025-10-31"
})
很好!我现在有了所需的所有信息。让我用每天8小时的工作时间,在十月的23个工作日内填充Tempo MCP 服务器项目。
🔧 mcp_tempo-filler-_bulk_post_worklogs({
"billable": true,
"worklogs": [
{"issueKey": "PROJ-1234", "hours": 8, "date": "2025-10-01", "description": "Tempo MCP 服务器开发"},
{"issueKey": "PROJ-1234", "hours": 8, "date": "2025-10-02", "description": "Tempo MCP 服务器开发"},
// ... 其余21个条目对应所有工作日
]
})
✅ 十月工作时间成功填充
- 项目:PROJ-1234 (Tempo MCP 服务器)
- 总工时:23个工作日共184小时
- 每日工时:8小时(符合标准工作时间)
- 状态:所有条目创建成功,无失败
调用工具:
get_worklogs- 检索九月模式(PROJ-1234,200小时)get_schedule- 查找十月的23个工作日(184小时容量)bulk_post_worklogs- 创建23个条目在一个操作中你现在完成了十月的时间表,并且与你在九月使用的项目模式相同!
🎯 发生了什么:
get_worklogs → get_schedule → bulk_post_worklogs⏱️ 节省时间:这个单一的自然语言请求触发了3次MCP工具调用,并替换了数小时的手动时间表录入!
这个 MCP 服务器仅用了3个小时使用 AI 助力的开发工具构建,展示了现代 AI 辅助编程的强大之处:
规范阶段
实现阶段
精炼阶段
这个项目展示了如何利用 AI 助力的开发可以极大地加速创建健壮、生产就绪的工具。
最简单的方式是使用 npx - 不需要安装:
npx @tranzact/tempo-filler-mcp-server
只需配置您的 AI 助手,使其使用 npx @tranzact/tempo-filler-mcp-server 作为命令。
对于开发或定制:
克隆仓库:
git clone https://github.com/TRANZACT/tempo-filler-mcp-server
cd TempoFiller
安装依赖项并构建:
npm install && npm run build
服务器需要环境变量来进行认证和配置:
TEMPO_BASE_URL:您的 JIRA 实例 URL(例如,https://jira.company.com)TEMPO_PAT:用于认证的个人访问令牌TEMPO_DEFAULT_HOURS:每个工作日的默认工时(默认:8)TEMPO_PAT 使用get_worklogs - 检索时间记录根据日期范围检索工时记录,可选过滤。
参数:
startDate(字符串):YYYY-MM-DD 格式的起始日期endDate(字符串,可选):结束日期,默认为起始日期issueKey(字符串,可选):按特定问题键过滤示例用法:
"获取我的七月工时"
→ 返回:总计:184小时(23条记录)
• PROJ-1234:184.0小时(23条记录)
"显示我在七月的 PROJ-1234 工时记录"
→ 过滤结果到特定问题
post_worklog - 记录单条为特定问题和日期创建新的工时记录条目。
参数:
issueKey(字符串):JIRA 问题键(例如,“PROJ-1234”)hours(数字):工作小时数(小数,0.1-24)startDate(字符串):YYYY-MM-DD 格式的日期endDate(字符串,可选):多日条目的结束日期billable(布尔值,可选):是否计费时间(默认:true)description(字符串,可选):工作描述示例用法:
"记录7月10日 PROJ-1234 的8小时"
→ 返回:✅ 工时记录创建成功
问题:PROJ-1234 - 示例项目任务
工时:8小时
日期:2025-07-10
工时记录ID:1211549
bulk_post_worklogs - 创建多条高效创建多个工时记录条目,使用并发处理。
参数:
worklogs(数组):工时对象数组:
issueKey(字符串):JIRA 问题键hours(数字):工作小时数date(字符串):YYYY-MM-DD 格式的日期description(字符串,可选):工作描述billable(布尔值,可选):所有条目是否计费时间示例用法:
"从7月11日至15日每天在 PROJ-1234 上记录8小时"
→ 返回:✅ 批量工时记录创建开始
正在处理3个工时记录条目...
✅ 成功:3
❌ 失败:0
📊 总工时:24
"在七月的所有工作日上每天记录8小时在 PROJ-1234 上"
→ 为该月的所有工作日创建23个条目
delete_worklog - 删除条目通过ID删除现有工时记录条目。
参数:
worklogId(字符串):要删除的 Tempo 工时记录ID示例用法:
"删除ID为1211547的工时记录"
→ 移除指定的工时记录条目
get_schedule - 检索工作时间表检索工作时间表信息,显示工作日、非工作日以及每天预期的工时。
参数:
startDate(字符串):YYYY-MM-DD 格式的起始日期endDate(字符串,可选):结束日期,默认为起始日期示例用法:
"2025年10月的工作时间表是什么?"
→ 返回:## 工作时间表(2025-10-01 至 2025-10-31)
**期间总结:**
- 总天数:31
- 工作日:23
- 非工作日:8
- 总需工时:184小时
"显示本周的工作日"
→ 返回当前周的时间表,包括工作日和非工作日的分解
💡 集成技巧:在批量工时记录操作之前使用此工具来识别工作日,避免在周末/假期记录时间。
基于成功的实施,这里有一些实用场景:
# 使用 VS Code 和 GitHub Copilot:
用户:"今天在 PROJ-1234 上记录8小时"
AI:✅ 工时记录创建成功
问题:PROJ-1234 - 示例项目任务
工时:8小时
日期:2025-08-01
工时记录ID:1211550
花费时间:1天
# 推荐:先检查时间表,然后创建条目:
用户:"检查我的十月时间表,然后在所有工作日上每天记录8小时在 PROJ-1234 上"
AI:## 工作时间表(2025-10-01 至 2025-10-31)
**期间总结:**
- 工作日:23
- 非工作日:8
- 总需工时:184小时
✅ 批量工时记录创建开始
正在处理23个工时记录条目(仅限工作日)...
✅ 成功:23
❌ 失败:0
📊 总工时:184
# 直接批量操作(可能包括非工作日):
用户:"在七月的所有工作日上每天记录8小时在 PROJ-1234 上"
AI:✅ 批量工时记录创建开始
正在处理23个工时记录条目...
✅ 成功:23
❌ 失败:0
📊 总工时:184
# 智能时间规划工作流程:
用户:"这个月我的容量是多少,我应该如何分配我的时间?"
AI:## 工作时间表(2025-10-01 至 2025-10-31)
- 工作日:23
- 总需工时:184小时
- 平均每日工时:8