mcpField
T
time-management

time-management

本地服务
tm.pyunto.com生产力02 周前更新

关于 time-management

time-management 是连接 Pyunto Time Management 账户与助手的 MCP 服务,可读取日程、汇总已记录工时并管理时间块;提供密码时,会在本地处理加密内容。

主要功能

  1. 01列出项目和任务
  2. 02读取时间块与汇总
  3. 03记录和更新工时
  4. 04删除单个时间块
  5. 05在本地解密名称和备注

适用场景

  1. 01按项目或日期查看已记录工时
  2. 02通过助手记录时间
  3. 03使用密码读取加密的日程详情

MCP 相关

该服务将 Pyunto Time Management 的账户和日程操作作为 MCP 工具提供,包括项目与任务列表、汇总和时间块变更。它通过 stdio 连接 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"com-pyunto-time-management": {
"command": "npx",
"args": [
"-y",
"@pyunto/tm-mcp"
],
"env": {
"PYUNTO_TM_API_KEY": "<PYUNTO_TM_API_KEY>",
"PYUNTO_TM_BASE_URL": "<PYUNTO_TM_BASE_URL>",
"PYUNTO_TM_PASSWORD": "<PYUNTO_TM_PASSWORD>",
"PYUNTO_TM_PASSWORD_FILE": "<PYUNTO_TM_PASSWORD_FILE>"
}
}
}
}
启动命令npx -y @pyunto/tm-mcp
需要配置的环境变量
PYUNTO_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 instances
PYUNTO_TM_PASSWORD密钥Account password; unwraps the private key locally so E2EE project and task names decrypt
PYUNTO_TM_PASSWORD_FILE密钥Path to a file holding the account password, instead of PYUNTO_TM_PASSWORD

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@pyunto/tm-mcp0.3.6

工具

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_projectsprojects: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_URLhttps://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:不提供按范围或筛选条件删除的功能,因为自动化调用方一旦弄错范围,就可能销毁无法恢复的大量数据。该工具的描述要求模型先向用户展示确切的时间块,并取得用户对该时间块的确认。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。