TimeTree-MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TimeTree-MCPShow me my events for this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
timetree-mcp
A personal-use MCP server that lets Claude write events into your shared TimeTree calendar.
Typical flow: paste an event poster → Claude extracts date / location / title and writes a
short description → calls create_event → event shows up in the TimeTree app.
⚠️ Disclaimer (read before using)
TimeTree's official Connect API was shut down on 2023-12-22. This MCP talks to TimeTree's internal web API (the same one the web app uses), reverse-engineered.
This is unofficial and not affiliated with TimeTree, Inc. It may break at any time if TimeTree changes the internal API. Using it may violate TimeTree's Terms of Service.
Use a dedicated TimeTree account, not your main one. Invite that account to the shared calendar(s) you want to manage. If TimeTree flags the account, only the dedicated one is at risk.
Personal use only. Don't publish this, don't run it at scale, don't make commercial use of it.
Endpoint mapping informed by ehs208/TimeTree-MCP (MIT) and eoleedi/TimeTree-Exporter.
Related MCP server: TimeTree MCP Server
Install
Requires Node.js 18+.
cd C:\Users\user\Desktop\timetree-mcp
npm install
npm run buildConfigure
Copy .env.example to .env and fill in your dedicated account:
TIMETREE_EMAIL=dedicated-bot@example.com
TIMETREE_PASSWORD=...
LOG_LEVEL=INFOThe server reads .env from the project root at startup, so you do NOT need
to pass credentials on the claude mcp add command line (that would put them
in PowerShell history). Just register the binary:
claude mcp add timetree node "C:\Users\user\Desktop\timetree-mcp\dist\index.js"Or, if you prefer editing config directly (e.g. ~/.claude/settings.json):
{
"mcpServers": {
"timetree": {
"command": "node",
"args": ["C:\\Users\\user\\Desktop\\timetree-mcp\\dist\\index.js"]
}
}
}Restart Claude Code. /mcp should show timetree with the TimeTree tools,
including list_calendars, list_events, create_event, update_event,
poster_workspace_status, and mark_poster_processed.
Process-level env vars still override the .env file, so CI / one-off
invocations can set TIMETREE_PASSWORD=xxx node dist/index.js to bypass it.
Usage
Poster folder workflow
Use a single poster workspace folder, defaulting to:
C:\Users\daan\Desktop\timetree海報更新The MCP manages this structure:
timetree海報更新
├─ 00_待處理
├─ 10_已新增
├─ 20_已更新既有事件
├─ 90_需人工確認
└─ _logRules:
Put new poster images in
00_待處理.Start by calling
poster_workspace_status; it creates missing folders and lists only pending images.When
create_eventsucceeds with animage_pathfrom00_待處理, the poster is moved to10_已新增.When
update_eventsucceeds with animage_pathfrom00_待處理, the poster is moved to20_已更新既有事件.Use
mark_poster_processedwithstatus: "needs_review"for unclear posters; they move to90_需人工確認.Every move appends a CSV record under
_log.
If someone drops images directly into the workspace root, poster_workspace_status
moves them into 00_待處理 by default so future runs still process only new items.
The intended workflow:
Drop an event poster (image) into a Claude Code conversation.
Ask Claude something like: "請把這張海報的活動加到我的家庭共用行事曆。"
Claude reads the poster, calls
list_calendarsto find the right calendar_id, writes a short description, and callscreate_eventwith an ISO date.Open TimeTree on your phone — the event is there.
Tools
list_calendars
No arguments. Returns {calendars: [{calendar_id, name, members}], total}.
Use this first to know which calendar_id to write into.
create_event
Required: calendar_id (number), title (string), start (ISO 8601 string).
Optional:
end— ISO 8601. Defaults tostart + 1hfor timed events,start(same day) for all-day.all_day— boolean (defaultfalse).timezone— IANA timezone (defaultAsia/Taipei).location— string.description— short note, shows up as the event note in TimeTree.label_id— 1-10. 1=Emerald 2=Cyan 3=Blue 4=Brown 5=Black 6=Red 7=Rose 8=Pink 9=Orange 10=Violet.
Returns the created event with its uuid (useful if you later add update_event / delete_event).
poster_workspace_status
Creates/checks the poster workspace folders, moves loose root-level images into
00_待處理 by default, and returns pending image paths.
mark_poster_processed
Moves a poster out of 00_待處理 and writes the CSV log. This is automatic for
successful create_event and update_event calls when image_path points into
00_待處理, so this tool is mainly for manual corrections and needs_review.
Troubleshooting
Invalid email or password— TimeTree returned 401. Check the dedicated account credentials. If the account uses social login (Google / Apple), it won't have an email/password and this MCP can't authenticate it. Use a TimeTree account created with email/password signup.CSRF token missing or invalid— usually means the session expired between calls. The client auto-reauths once on 403; if you see this twice in a row, TimeTree may have changed the CSRF token location.Empty
list_calendarsresult — make sure the dedicated account is actually a member of at least one shared calendar.Build fails on Windows with esbuild ENOENT — known npm 10.8.x bug. Try
npm install --no-package-lockor upgrade npm to 10.9+.
Project structure
src/
index.ts # MCP server entry (stdio transport)
timetree.ts # auth + HTTP + API client + logger
tools.ts # MCP tools: list_calendars, create_event
types.ts # Zod schemas and TS typesFour files, ~700 LOC. MVP scope. Extend by adding more handlers to buildTools in tools.ts.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Alvin0919/TimeTree-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server