
Tm Mcp
io.github.pyuntov0.3.4更新于 Sep 29, 2026
Read your Pyunto Time Management schedule and log time from an AI assistant. E2EE project planning.
安装
在 SourceWeft 中
- 打开 控制台中的 Tm Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
@pyunto/tm-mcp
MCP (Model Context Protocol) server for Pyunto Time Management. Connects Claude Code, Claude Desktop, Codex CLI, Cursor and any other MCP client to a Pyunto TM account so an assistant can read the schedule, summarise where the hours went, and log time.
User-facing setup instructions live at https://tm.pyunto.com/docs/mcp.en.md (日本語: https://tm.pyunto.com/docs/mcp.ja.md). This file is the developer view.
Tools
Every tool returns JSON as text. Failures come back as isError results whose
message names the fix (missing scope, wrong key, locked E2EE) rather than
throwing at the transport level — an agent can act on that, a stack trace it
cannot.
Install
Build from source
This package lives in an npm-workspaces repository together with the SDK it depends on; build from the repository root so the workspace link is used:
Result: mcp/dist/cli.js, the executable stdio server (dist/index.js
stays a side-effect-free module the tests can import).
Configuration
Environment only — MCP clients spawn the process and inject env from their config file.
How E2EE is handled
Content fields are encrypted in the user's browser; the server never holds the
plaintext, and neither does this process by default. Given a password, the
server's password-wrapped private key blob (GET /api/v1/keys, scope
keys:read) is unwrapped here, in memory, and used to open each project's
sealed DEK. The password is never transmitted and nothing is written to disk.
Without a password the server still answers everything schedule-shaped — ids,
dates, times, durations, aggregates — and name fields come back empty with a
NOTE: explaining why, so the model reports the limitation instead of inventing
names.
Layout
callTool(name, args) is exported for tests; start() attaches the transport
and is called only by cli.ts.
delete_time_block is deliberately single-id: no range or filter delete is
exposed, because an automated caller getting a range wrong destroys an unbounded
amount of data that has no restore path. Its tool description requires the model
to show the user the exact block first and get a yes for that block.
来源:mcp/README.md,提交 c11ff62
工具
0版本历史
1- v0.3.4最新Sep 29, 2026


