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 TimeTree events for tomorrow."
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
TimeTree MCP is an unofficial Model Context Protocol server that accesses TimeTree calendars over HTTPS. It uses the Python direct client by default and does not launch a browser; the browser transport is kept only as a compatibility fallback. Session cookies and CSRF tokens exist only in the MCP process memory.
Important: TimeTree's official Connect App/API has been discontinued. This project uses TimeTree Web's non-public endpoint, which may stop working when the service changes. Please assess the risks yourself and comply with TimeTree's terms and policies.
Features
Read calendars, events, memos, comments, labels, and members.
Create, update, and delete events and memos.
Add, update, and delete event comments.
Update calendar labels using merge mode.
Monitor calendar changes in the background and send MCP notifications.
All write operations require explicitly passing
confirm: true.Credentials are not placed in MCP tool arguments; the authenticated session is kept only in memory.
Related MCP server: TimeTree MCP Server
Requirements
Python 3.10 or later.
A TimeTree account.
macOS is required to use the Keychain helper; other platforms can use environment variables or a password file.
Installation
git clone <repository-url>
cd timetree-mcp
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --editable .The runtime uses only the Python standard library. After installation, the timetree-mcp and timetree-credentials commands are available.
Using the NPM wrapper
The NPM wrapper requires Node.js 18+ and Python 3.10+; it launches the Python MCP server bundled with the package and forwards MCP's stdin/stdout:
npx --yes timetree-mcpIt can also be installed globally:
npm install --global timetree-mcp
timetree-mcpSetting up credentials
Using the Keychain on macOS is recommended. When setting it up, the password is only entered hidden in the terminal; it does not enter shell history, MCP arguments, or source code:
./scripts/setup_timetree_keychain.sh
timetree-credentials statusMCP automatically reads the email/password in the Keychain. status only reports whether they exist and does not return values; clear both Keychain items:
timetree-credentials clearIf you are not using the Keychain, you can also use environment variables:
export TIMETREE_EMAIL='your-email@example.com'
export TIMETREE_PASSWORD='your-password'An even better option is to use a password file with permissions of 600:
chmod 600 /absolute/path/to/timetree-password
export TIMETREE_EMAIL='your-email@example.com'
export TIMETREE_PASSWORD_FILE='/absolute/path/to/timetree-password'Registering with Codex
Replace /absolute/path/to/timetree-mcp with your checkout location. If a timetree server with the same name already exists, remove it and then add it again:
codex mcp remove timetree
codex mcp add timetree \
--env TIMETREE_EMAIL=your-email@example.com \
--env TIMETREE_PASSWORD_FILE=/absolute/path/to/timetree-password \
-- python3 /absolute/path/to/timetree-mcp/src/timetree_mcp/server.pyDo not put the actual password in shell history, MCP tool arguments, the README, or source code.
When registering with the NPM wrapper, change the server command to:
codex mcp add timetree \
--env TIMETREE_EMAIL=your-email@example.com \
--env TIMETREE_PASSWORD_FILE=/absolute/path/to/timetree-password \
-- npx --yes timetree-mcpMCP tools
Login and read
timetree_login,timetree_logout,timetree_statustimetree_keychain_statustimetree_list_calendars,timetree_list_events,timetree_list_memostimetree_list_event_commentstimetree_get_calendar_labels,timetree_get_calendar_members,timetree_get_calendar_virtual_members
Writes
timetree_create_event,timetree_update_event,timetree_delete_eventtimetree_create_memo,timetree_update_memo,timetree_delete_memotimetree_add_event_comment,timetree_update_event_comment,timetree_delete_event_commenttimetree_update_calendar_labels
Time can be passed as an ISO-8601 string or Unix milliseconds; all write tools must explicitly pass confirm: true. Member invitation/removal endpoints are not yet verified, so they are intentionally not included.
If some older calendars' TimeTree sync endpoint returns -425, event queries skip that calendar and report it in the skipped_calendars field, without causing the whole batch of other readable calendars to fail.
Background monitoring
timetree_start_monitor: Starts background polling, with an interval of 30–3600 seconds.timetree_monitor_status: Views monitoring status, last poll, errors, and notification count.timetree_stop_monitor: Stops monitoring.
The first poll only establishes a baseline; afterward, when additions, modifications, or removals are detected, the server sends MCP notifications/message. The monitor is tied to the MCP process and also stops when the client exits.
Project structure
src/timetree_mcp/ Python package 與 MCP server
bin/ NPM wrapper launcher
scripts/ 本機設定輔助腳本
tests/ standard-library unittest 測試
test/ NPM wrapper 測試
.github/workflows/ci.yml Continuous integrationTesting
python3 -m unittest discover -s tests -v
npm testThe legacy ego-browser transport is kept at src/timetree_mcp/browser.py as a compatibility fallback, but the server does not load it by default.
License
This project is licensed under the MIT License.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables creating and managing Google Calendar events through OAuth 2.0 authentication, supporting event details like title, time, location, description, and attendees.6
- AlicenseAqualityAmaintenanceUnofficial MCP server for accessing and managing TimeTree calendar data, including events, memos, and comments, with secure email/password authentication.1811MIT
- FlicenseAqualityCmaintenanceUnofficial MCP server for accessing and managing TimeTree calendar data, supporting events, memos, and comments via email/password authentication.6
- AlicenseNot gradedqualityDmaintenanceEnables calendar management through Google Calendar API with OAuth2 authentication, multi-account support, and features like event creation, availability checking, and attendee management.MIT
Related MCP Connectors
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Publish public calendars and events others subscribe to: RSVPs, feeds and add-to-calendar links.
Connect your Oura Ring account securely in minutes. Enable authorized access to your sleep, activi…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/ap311036/timetree-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server