Tempo Filler MCP 服务器是一个用于在 JIRA 中管理 Tempo 工作日志的模型上下文协议(MCP)服务器。该服务器使 AI 助手能够与 Tempo 的时间跟踪系统进行交互,支持工作日志的检索、创建、批量操作和管理。
# 克隆仓库
git clone https://github.com/TRANZACT/tempo-filler-mcp-server.git
cd tempo-filler-mcp-server
# 或者从 GitHub 下载并解压 ZIP 文件
npm install && npm run build
{
"servers": {
"tempo-filler": {
"type": "stdio",
"command": "node",
"args": ["/full/path/to/tempo-filler-mcp-server/dist/index.js"],
"env": {
"TEMPO_BASE_URL": "https://jira.company.com",
"TEMPO_PAT": "your-personal-access-token"
}
}
}
}
# 选项 1:使用 Git 克隆
git clone https://github.com/TRANZACT/tempo-filler-mcp-server.git
cd tempo-filler-mcp-server
# 选项 2:下载 ZIP 文件
# - 访问 GitHub 仓库页面
# - 点击 “Code” → “Download ZIP”
# - 解压并进入该文件夹
npm install
npm run build
服务器需要环境变量进行身份验证和配置:
TEMPO_BASE_URL:你的 JIRA 实例 URL(例如,https://jira.company.com)TEMPO_PAT:用于身份验证的个人访问令牌TEMPO_DEFAULT_HOURS:每个工作日的默认工作小时数(默认值:8)TEMPO_PAT。添加到你的 MCP 服务器配置文件(例如,mcp.json):
{
"servers": {
"tempo-filler": {
"type": "stdio",
"command": "node",
"args": [
"/full/path/to/tempo-filler-mcp-server/dist/index.js"
],
"env": {
"TEMPO_BASE_URL": "https://jira.company.com",
"TEMPO_PAT": "your-personal-access-token-here"
}
}
}
}
添加到你的 Claude Desktop 配置文件:
{
"mcpServers": {
"tempo-filler": {
"command": "node",
"args": ["/full/path/to/tempo-filler-mcp-server/dist/index.js"],
"env": {
"TEMPO_BASE_URL": "https://jira.company.com",
"TEMPO_PAT": "your-personal-access-token"
}
}
}
}
npm run builddist/index.js 文件的完整路径:# 获取完整路径(在 macOS/Linux 上使用 pwd,在 Windows 上使用 cd)
pwd # 应该显示类似 /Users/yourname/tempo-filler-mcp-server 的内容
/dist/index.js)服务器使用个人访问令牌(PAT)进行安全身份验证:
TEMPO_BASE_URL:你的 JIRA URL(例如,https://jira.company.com)TEMPO_PAT:你的个人访问令牌get_worklogs - 检索时间日志检索指定日期范围内的工作日志,支持可选过滤。 参数:
startDate(字符串):开始日期,格式为 YYYY-MM-DDendDate(字符串,可选):结束日期,默认为开始日期issueKey(字符串,可选):按特定问题键过滤示例用法:
"Get my July hours"
→ 返回结果:总计:184 小时(23 条记录)
• PROJ-1234:184.0 小时(23 条记录)
"Show me my worklogs for PROJ-1234 in July"
→ 将结果过滤到特定问题
post_worklog - 记录单个条目为特定问题和日期创建新的工作日志条目。 参数:
issueKey(字符串):JIRA 问题键(例如,“PROJ-1234”)hours(数字):工作小时数(小数,范围 0.1 - 24)startDate(字符串):日期,格式为 YYYY-MM-DDendDate(字符串,可选):多日条目的结束日期billable(布尔值,可选):时间是否可计费(默认值:true)description(字符串,可选):工作描述示例用法:
"Log 8 hours to PROJ-1234 for July 10th"
→ 返回结果:✅ 工作日志创建成功
问题:PROJ-1234 - 示例项目任务
小时数:8 小时
日期:2025-07-10
工作日志 ID:1211549
bulk_post_worklogs - 创建多个条目利用并发处理高效创建多个工作日志条目。 参数:
worklogs(数组):工作日志对象数组:
issueKey(字符串):JIRA 问题键hours(数字):工作小时数date(字符串):日期,格式为 YYYY-MM-DDdescription(字符串,可选):工作描述billable(布尔值,可选):所有条目时间是否可计费示例用法:
"Post 8 hours a day every weekday from July 11 to 15 on PROJ-1234"
→ 返回结果:✅ 批量工作日志创建开始
正在处理 3 个工作日志条目...
✅ 成功:3
❌ 失败:0
📊 总小时数:24
"Fill all weekdays in July with 8 hours on PROJ-1234"
→ 为该月的所有工作日创建 23 个条目
delete_worklog - 移除条目按 ID 删除现有的工作日志条目。 参数:
worklogId(字符串):要删除的 Tempo 工作日志 ID示例用法:
"Delete worklog with ID 1211547"
→ 移除指定的工作日志条目
"Get my July hours"
→ 返回 7 月所有工作日志的摘要,按问题和日期汇总
"Show me my worklogs for July 2025"
→ 使用 get_worklogs 检索详细的工作日志信息
"What did I work on last week?"
→ 获取上周的工作日志,并按问题细分
"Log 8 hours to PROJ-1234 for July 10th"
→ 创建单个工作日志条目:
✅ 问题:PROJ-1234 - 示例项目任务
✅ 小时数:8 小时(可计费)
✅ 日期:2025-07-10
✅ 工作日志 ID:1211549
"Post 6.5 hours on PROJ-123 for today with description 'Bug fixes and testing'"
→ 使用 post_worklog 并添加自定义描述
"Post 8 hours a day every weekday from July 11 to 15 on PROJ-1234"
→ 创建 5 个工作日志条目(跳过周末):
✅ 7 月 11 日(星期五):8 小时
✅ 7 月 14 日(星期一):8 小时
✅ 7 月 15 日(星期二):8 小时
总计:3 个工作日共 24 小时
"Fill my timesheet for this week - 4 hours PROJ-1111 and 4 hours PROJ-2222 each day"
→ 使用 bulk_post_worklogs 处理每天多个问题
"Finish filling up the days until July 31st"
→ 自动填充该月剩余的工作日
"Log time for the entire month of July:
- PROJ-1234: 8 hours every weekday
- Skip weekends
- All time should be billable"
→ 为 7 月的所有工作日创建 22 个工作日志条目
"Fill my Q2 timesheet with 8 hours daily split between:
- 60% on PROJ-1234 (development)
- 40% on PROJ-5678 (meetings)"
→ 计算小时数并为该季度创建条目
"Delete worklog with ID 1211547"
→ 移除指定的工作日志条目
"Show me a summary of my July hours by issue"
→ 按问题分组工作日志,显示总计和百分比
基于成功的实现,以下是一些实际场景:
# 在 VS Code 中使用 GitHub Copilot:
用户:"Log 8 hours on PROJ-1234 for today"
AI:✅ 工作日志创建成功
问题:PROJ-1234 - 示例项目任务
小时数:8 小时
日期:2025-08-01
工作日志 ID:1211550
花费时间:1 天
# 整月的批量操作:
用户:"Fill all weekdays in July with 8 hours on PROJ-1234"
AI:✅ 批量工作日志创建开始
正在处理 23 个工作日志条目...
✅ 成功:23
❌ 失败:0
📊 总小时数:184
# 每月摘要:
用户:"Get my July hours"
AI:📊 总小时数:184 小时(23 条记录)
按问题细分:
• PROJ-1234:184.0 小时(23 条记录)
每日模式:每个工作日 8 小时
完成情况:100%(所有工作日已填充)
src/
├── index.ts # 主 MCP 服务器入口点
├── tempo-client.ts # 带有 PAT 身份验证的 Tempo API 客户端
├── tools/ # 工具实现
│ ├── get-worklogs.ts
│ ├── post-worklog.ts
│ ├── bulk-post.ts
│ └── delete-worklog.ts
└── types/ # TypeScript 类型定义
├── tempo.ts
├── mcp.ts
└── index.ts
npm run build:将 TypeScript 编译为 JavaScriptnpm run dev:构建并运行服务器npm run typecheck:进行类型检查但不编译可以使用 MCP Inspector 或与兼容的 AI 助手集成来测试服务器。
此服务器与以下版本兼容:
找不到服务器 / 路径问题:
dist/index.js 的 完整绝对路径。C:\Users\YourName\tempo-filler-mcp-server\dist\index.js/Users/YourName/tempo-filler-mcp-server/dist/index.jsls dist/index.js(应显示该文件)构建失败:
node --version(应为 16 或更高)npm cache clean --force && npm install && npm run buildAI 助手未加载服务器:
ISC 许可证 - 详情请参阅 package.json。
欢迎贡献代码!请遵循现有的代码风格,并确保所有工具与真实的 Tempo API 端点正常工作。