Desktop Calendar Tauri
БесплатноНе проверенMCP server for a desktop calendar that allows AI agents to manage events, check schedules, and avoid conflicts via standard MCP tools.
Описание
MCP server for a desktop calendar that allows AI agents to manage events, check schedules, and avoid conflicts via standard MCP tools.
README
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 refresh
Tech 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 |
List events in a fixed time range and optionally return an events-list widget. |
get_event |
Fetch a single event and optionally return an event-detail widget. |
create_event |
Create an event with validation and UI sync. |
update_event |
Update an event. Supports clear_fields for nullable fields. |
delete_event |
Soft-delete an event. |
get_free_slots |
Query free slots for a YYYY-MM-DD date and optionally return a widget. |
MCP time inputs use fixed string formats:
- Date time:
YYYY-MM-DD HH:mm - Date:
YYYY-MM-DD - Time zone: interpreted as
Asia/Shanghai - Internal 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/health
Quick Start
Prerequisites:
- Node.js
- Rust toolchain
- Tauri system dependencies for your platform
Install dependencies:
npm install
Run the frontend dev server:
npm run dev
Run the Tauri desktop app:
npm run tauri dev
Build the frontend:
npm run build
Run tests:
npm test
cd src-tauri
cargo test
Project 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.md
Platform 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
中文
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 工具
| 工具 | 说明 |
|---|---|
list_events |
按固定时间范围查询事件,可返回事件列表 Widget。 |
get_event |
查询单个事件详情,可返回事件详情 Widget。 |
create_event |
创建事件,并进行参数校验和界面同步。 |
update_event |
更新事件,支持用 clear_fields 清空可空字段。 |
delete_event |
软删除事件。 |
get_free_slots |
按 YYYY-MM-DD 查询空闲时间段,可返回空闲时间 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
Установка Desktop Calendar Tauri
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/tianjiashu/desktop-calendar-tauriFAQ
Desktop Calendar Tauri MCP бесплатный?
Да, Desktop Calendar Tauri MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Desktop Calendar Tauri?
Нет, Desktop Calendar Tauri работает без API-ключей и переменных окружения.
Desktop Calendar Tauri — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Desktop Calendar Tauri в Claude Desktop, Claude Code или Cursor?
Открой Desktop Calendar Tauri на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Notion
Read and write pages in your workspace
автор: NotionLinear
Issues, cycles, triage — from Claude
автор: LinearGoogle Drive
Search and read your Drive files
автор: Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
автор: mindsdbCompare Desktop Calendar Tauri with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории productivity
