desktop-calendar-tauri
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., "@desktop-calendar-tauriwhat's my schedule for next Monday?"
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.
DayPilot
DayPilot is a local-first desktop calendar for both humans and AI agents. Humans manage schedules through a lightweight desktop UI, while agents use the built-in local MCP server to read and write the same SQLite calendar database.
English
Highlights
Floating desktop widget that starts near the bottom-right area and shows today's date and events.
Expandable 7-day week view with time grid, event cards, editing, deletion, and drag updates.
Local SQLite storage shared by the GUI and MCP tools.
Built-in Streamable HTTP MCP server at
http://127.0.0.1:18765/mcp.MCP Apps Widgets for interactive event lists, event details, and free-slot results.
Real-time sync between GUI writes and MCP writes.
Single-instance desktop startup: opening the executable again focuses the existing app.
System tray menu for show, hide, and quit.
System theme aware dark mode.
Architecture
Human user
-> Tauri desktop window
-> React UI
-> Zustand store
-> Tauri IPC
-> SQLite
AI agent
-> MCP client
-> Local MCP HTTP server
-> MCP tools
-> SQLite
-> db:events_changed
-> React UI refreshTech Stack
Layer | Technology |
Desktop shell | Tauri 2 |
Frontend | React 18, TypeScript, Vite 6 |
UI | Phosphor Icons, Geist Sans/Mono, CSS variables |
State | Zustand |
Database | SQLite, rusqlite |
Agent protocol | rmcp Streamable HTTP Server, MCP Apps Widgets |
Tests | Vitest, Cargo test |
MCP Tools
Tool | Description |
| List events in a fixed time range and optionally return an events-list widget. |
| Fetch a single event and optionally return an event-detail widget. |
| Create an event with validation and UI sync. |
| Update an event. Supports |
| Soft-delete an event. |
| Query free slots for a |
MCP time inputs use fixed string formats:
Date time:
YYYY-MM-DD HH:mmDate:
YYYY-MM-DDTime zone: interpreted as
Asia/ShanghaiInternal storage: Unix milliseconds
MCP Client Configuration
Start the desktop app first. The MCP server starts with the app.
{
"mcpServers": {
"desktop-calendar": {
"type": "http",
"url": "http://127.0.0.1:18765/mcp"
}
}
}Health check:
http://127.0.0.1:18765/healthQuick Start
Prerequisites:
Node.js
Rust toolchain
Tauri system dependencies for your platform
Install dependencies:
npm installRun the frontend dev server:
npm run devRun the Tauri desktop app:
npm run tauri devBuild the frontend:
npm run buildRun tests:
npm test
cd src-tauri
cargo testProject Structure
desktop-calendar-tauri/
├─ src/
│ ├─ components/
│ │ ├─ Calendar/ # Event cards, dialog, tooltip
│ │ ├─ Common/ # Error boundary, toast, diagnostics, status bar
│ │ ├─ WeekView/ # Week grid, header, time line, day columns
│ │ └─ Widget/ # Floating desktop widget
│ ├─ hooks/ # Stateful frontend workflows
│ ├─ services/ # Tauri IPC boundary
│ ├─ stores/ # Zustand global state
│ ├─ utils/ # Pure utilities
│ ├─ constants/ # Shared constants
│ └─ types/ # TypeScript types
├─ src-tauri/
│ ├─ src/
│ │ ├─ commands/ # Tauri IPC commands
│ │ ├─ db/ # SQLite schema, migrations, repositories
│ │ ├─ mcp/ # MCP server, tools, resources, widgets
│ │ └─ models/ # Rust data models
│ └─ tests/ # Rust integration tests
├─ docs/
│ └─ DEVELOPMENT-GUIDELINES.md
└─ README.mdPlatform Status
Platform | Status | Notes |
Windows | Verified | Tray, transparent window, bottom-right positioning, single instance, and MCP server are tested. |
macOS | Expected, not fully verified | Core stack is cross-platform, but menu bar tray icon, Dock behavior, transparent always-on-top windows, signing, and notarization still need validation. |
Linux | Not verified | Core stack is cross-platform, but tray and transparent-window behavior depend on the desktop environment. |
Development Guidelines
Project-specific rules live in docs/DEVELOPMENT-GUIDELINES.md.
Key boundaries:
App.tsxis composition only.UI components should not call Tauri IPC directly.
Stores call
src/services/tauriCommands.ts, not rawinvokeSafeorinvokeOrThrow.Feature CSS belongs next to the feature, not in
App.css.Temporary logs, generated outputs, coverage files, and local scripts should not be committed.
License
MIT
Related MCP server: Temporal Cortex MCP
中文
DayPilot 是一个面向人类用户和 AI Agent 的本地优先桌面日历。 人类通过轻量桌面界面管理日程,Agent 通过内置本地 MCP Server 读写同一份 SQLite 日历数据库。
项目亮点
默认停靠在右下区域的悬浮桌面 Widget,展示日期和今日日程概览。
可展开的 7 日周视图,支持时间网格、事件卡片、编辑、删除和拖拽更新时间。
GUI 和 MCP 工具共享同一份本地 SQLite 数据。
内置 Streamable HTTP MCP Server,默认地址为
http://127.0.0.1:18765/mcp。支持 MCP Apps Widget,可在 Agent 对话中展示事件列表、事件详情和空闲时间。
GUI 写入和 MCP 写入会实时同步。
单实例启动,重复打开 exe 会唤起已有窗口。
系统托盘菜单支持显示、隐藏和退出。
暗色模式跟随系统主题。
架构概览
人类用户
-> Tauri 桌面窗口
-> React UI
-> Zustand store
-> Tauri IPC
-> SQLite
AI Agent
-> MCP client
-> 本地 MCP HTTP server
-> MCP tools
-> SQLite
-> db:events_changed
-> React UI 刷新技术栈
层级 | 技术 |
桌面壳 | Tauri 2 |
前端 | React 18, TypeScript, Vite 6 |
UI | Phosphor Icons, Geist Sans/Mono, CSS variables |
状态管理 | Zustand |
数据库 | SQLite, rusqlite |
Agent 协议 | rmcp Streamable HTTP Server, MCP Apps Widgets |
测试 | Vitest, Cargo test |
MCP 工具
工具 | 说明 |
| 按固定时间范围查询事件,可返回事件列表 Widget。 |
| 查询单个事件详情,可返回事件详情 Widget。 |
| 创建事件,并进行参数校验和界面同步。 |
| 更新事件,支持用 |
| 软删除事件。 |
| 按 |
MCP 时间入参使用固定字符串格式:
日期时间:
YYYY-MM-DD HH:mm日期:
YYYY-MM-DD时区:按
Asia/Shanghai解读内部存储:Unix milliseconds
MCP 客户端配置
先启动桌面应用,MCP Server 会随应用自动启动。
{
"mcpServers": {
"desktop-calendar": {
"type": "http",
"url": "http://127.0.0.1:18765/mcp"
}
}
}健康检查:
http://127.0.0.1:18765/health快速开始
前置要求:
Node.js
Rust toolchain
当前平台所需的 Tauri 系统依赖
安装依赖:
npm install启动前端开发服务:
npm run dev启动 Tauri 桌面应用:
npm run tauri dev构建前端:
npm run build运行测试:
npm test
cd src-tauri
cargo test项目结构
desktop-calendar-tauri/
├─ src/
│ ├─ components/
│ │ ├─ Calendar/ # 事件卡片、弹窗、Tooltip
│ │ ├─ Common/ # 错误边界、Toast、诊断面板、状态栏
│ │ ├─ WeekView/ # 周视图网格、头部、时间线、日列
│ │ └─ Widget/ # 悬浮桌面 Widget
│ ├─ hooks/ # 前端状态流程
│ ├─ services/ # Tauri IPC 边界
│ ├─ stores/ # Zustand 全局状态
│ ├─ utils/ # 纯工具函数
│ ├─ constants/ # 共享常量
│ └─ types/ # TypeScript 类型
├─ src-tauri/
│ ├─ src/
│ │ ├─ commands/ # Tauri IPC 命令
│ │ ├─ db/ # SQLite schema、迁移、仓库层
│ │ ├─ mcp/ # MCP server、tools、resources、widgets
│ │ └─ models/ # Rust 数据模型
│ └─ tests/ # Rust 集成测试
├─ docs/
│ └─ DEVELOPMENT-GUIDELINES.md
└─ README.md平台兼容性
平台 | 状态 | 说明 |
Windows | 已验证 | 托盘、透明窗口、右下角定位、单实例和 MCP Server 均已测试。 |
macOS | 理论兼容,尚未完整验证 | 核心技术栈跨平台,但菜单栏图标、Dock 行为、透明置顶窗口、签名和 notarization 仍需验证。 |
Linux | 未验证 | 核心技术栈跨平台,但托盘和透明窗口行为依赖桌面环境。 |
开发规范
项目专用开发规范见 docs/DEVELOPMENT-GUIDELINES.md。
关键边界:
App.tsx只做组合,不承载业务细节。UI 组件不直接调用 Tauri IPC。
Store 统一调用
src/services/tauriCommands.ts,不直接调用invokeSafe或invokeOrThrow。功能样式放在对应功能目录,不再塞回
App.css。临时日志、生成产物、覆盖率文件和本地实验脚本不提交。
License
MIT
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/tianjiashu/desktop-calendar-tauri'
If you have feedback or need assistance with the MCP directory API, please join our Discord server