关于 time-management
time-management 是连接 Pyunto Time Management 账户与助手的 MCP 服务,可读取日程、汇总已记录工时并管理时间块;提供密码时,会在本地处理加密内容。
主要功能
- 01列出项目和任务
- 02读取时间块与汇总
- 03记录和更新工时
- 04删除单个时间块
- 05在本地解密名称和备注
适用场景
- 01按项目或日期查看已记录工时
- 02通过助手记录时间
- 03使用密码读取加密的日程详情
MCP 相关
该服务将 Pyunto Time Management 的账户和日程操作作为 MCP 工具提供,包括项目与任务列表、汇总和时间块变更。它通过 stdio 连接 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @pyunto/tm-mcpPYUNTO_TM_API_KEY密钥API key (ptm_...) minted in Settings → Account → API keys. Required to read or write data; listing the tools works without it.PYUNTO_TM_BASE_URLBase URL, for self-hosted instancesPYUNTO_TM_PASSWORD密钥Account password; unwraps the private key locally so E2EE project and task names decryptPYUNTO_TM_PASSWORD_FILE密钥Path to a file holding the account password, instead of PYUNTO_TM_PASSWORD本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
10收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
@pyunto/tm-mcp
适用于 Pyunto Time Management 的 MCP(Model Context Protocol)服务。可连接 Claude Code、Claude Desktop、Codex CLI、Cursor 及任何其他 MCP 客户端与 Pyunto TM 账户,让助手读取日程、汇总时间去向并记录时间。
面向用户的设置说明位于 https://tm.pyunto.com/docs/mcp.en.md(日本語: https://tm.pyunto.com/docs/mcp.ja.md)。本文面向开发者。
工具
| 工具 | 权限范围 |
|---|---|
whoami — 账户、密钥名称、权限范围、解密状态 | — |
list_projects | projects:read |
list_tasks(按项目或任务涵盖的日期筛选) | projects:read |
list_time_blocks(范围 ≤ 92 天) | blocks:read |
time_summary(按项目/任务/日期分组) | record:read |
log_time(写入) | blocks:write |
update_time_block(写入) | blocks:write |
delete_time_block — 单个 ID,永久删除,并一并删除附件 | blocks:delete |
每个工具都会以文本形式返回 JSON。失败时会返回 isError 结果,消息会说明如何修复(缺少权限范围、密钥错误、E2EE 已锁定),而不是在传输层抛出异常——Agent 可以据此采取行动,而无法处理堆栈跟踪。
安装
npx -y @pyunto/tm-mcp # what an MCP client config runs
从源代码构建
此软件包与其依赖的 SDK 同处于 npm-workspaces 仓库中;请从仓库根目录构建,以使用工作区链接:
npm install
npm run build # both packages
npm test # sdk crypto round-trips + 25 MCP tool checks
结果:mcp/dist/cli.js,可执行的 stdio 服务(dist/index.js 仍是无副作用、可供测试导入的模块)。
配置
仅使用环境变量——MCP 客户端会启动进程,并从其配置文件中注入环境变量。
服务无需 API 密钥即可启动并响应 tools/list——客户端或目录可以在任何人注册前查看它提供的功能。没有 API 密钥时调用工具,会返回与 isError 相同的说明,而不是含糊的 401;whoami 也会报告缺少密钥,而不会失败。
| 变量 | 必需 | 默认值 | 用途 |
|---|---|---|---|
PYUNTO_TM_API_KEY | 用于数据 | — | ptm_…,在 Settings → Account → API keys 中创建。无需密钥即可列出工具 |
PYUNTO_TM_BASE_URL | https://tm.pyunto.com | 可自托管的实例 | |
PYUNTO_TM_PASSWORD | 无 | 在本地解包私钥,以解密 E2EE 名称/备注 | |
PYUNTO_TM_PASSWORD_FILE | 无 | 同上,从文件而非环境变量读取 |
{
"mcpServers": {
"pyunto-tm": {
"command": "npx",
"args": ["-y", "@pyunto/tm-mcp"],
"env": { "PYUNTO_TM_API_KEY": "ptm_…" }
}
}
}
如何处理 E2EE
内容字段在用户的浏览器中加密;服务器从不持有明文,默认情况下本进程也不会持有。提供密码后,服务器会在此处于内存中解包由密码封装的私钥数据块(GET /api/v1/keys,权限范围为
keys:read),并用它打开每个项目封存的 DEK。密码绝不会传输,也不会写入磁盘。
没有密码时,服务器仍会响应所有与日程相关的数据——ID、日期、时间、时长、汇总;名称字段则为空,并附上解释原因的 NOTE:,以便模型如实说明限制,而不是编造名称。
目录结构
src/index.ts tool definitions + implementations + server wiring
src/cli.ts the bin: calls start()
test/tools.mjs stub /api/v1 server, exercises every tool and error path
test/cli.mjs spawns the built bin (directly and via symlink) over real MCP
callTool(name, args) 已导出供测试使用;start() 会挂载传输层,且仅由 cli.ts 调用。
delete_time_block 刻意设计为仅支持单个 ID:不提供按范围或筛选条件删除的功能,因为自动化调用方一旦弄错范围,就可能销毁无法恢复的大量数据。该工具的描述要求模型先向用户展示确切的时间块,并取得用户对该时间块的确认。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。