article
README
🚀 MCP日历服务器
这是一个基于ADT(代数数据类型)的MCP日历管理系统,利用Model Context Protocol(MCP)管理日历事件,通过函数式编程范式和ADT确保类型安全性和可预测性。
🚀 快速开始
本项目是一个使用Model Context Protocol (MCP) 来管理日历事件的服务器。它运用函数式编程范式和ADT,保证了类型的安全性和可预测性。
✨ 主要特性
- ✅ 支持日历事件的CRUD操作。
- ✅ 可按类别(学习、工作、休息、活动)对事件进行分类。
- ✅ 能够管理事件状态(计划中、已完成、已取消)。
- ✅ 集成了耐力系统。
- ✅ 具备时间冲突预防机制。
- ✅ 支持按日期或类别查询事件。
📦 安装指南
要求
- Python 3.10+
- uv 包管理器
安装
# 安装依赖项
uv sync
# 包含开发依赖项的安装
uv sync --extra dev
运行
# 启动MCP服务器
uv run python main.py
# 或者直接运行
uv run python src/main.py
📚 详细文档
API 工具 (Tools)
1. get_all_events()
用于查询所有日历事件。
2. get_event_by_id(event_id: int)
根据特定的 ID 查询事件。
3. create_calendar_event(...)
创建新的日历事件。 参数:
title:事件标题start_time:开始时间(ISO 格式:2025-08-02T10:00:00)duration:持续时间(分钟)category:类别(STUDY, WORK, REST, ACTIVITY)description:事件描述(可选)location:地点(可选)stamina_cost:耐力消耗(默认值:0)
4. update_calendar_event(event_id: int, ...)
修改现有的事件。
5. delete_calendar_event(event_id: int)
删除事件。
6. complete_event(event_id: int, stamina_after: int)
将事件状态更改为已完成。
7. get_events_by_category(category: str)
按类别查询事件。
8. get_events_by_date(date: str)
查询特定日期的事件。
数据模型
EventCategory
STUDY:学习WORK:工作REST:休息ACTIVITY:活动
EventStatus
PLANNED:计划中COMPLETED:已完成CANCELED:已取消
CalendarEvent
日历事件的核心实体,包含以下字段:
- ID、用户 ID、标题、描述、地点
- 开始时间、持续时间、类别
- 耐力消耗、状态、完成后的耐力
- 创建时间
项目结构
ittae-MCP/
├── src/
│ ├── __init__.py
│ ├── main.py # MCP服务器主程序
│ ├── models/
│ │ └── __init__.py # 数据模型定义
│ ├── services/
│ │ ├── __init__.py
│ │ └── calendar_service.py # 业务逻辑
│ └── exceptions/
│ └── __init__.py # 异常处理
├── tests/ # 测试文件
├── main.py # 入口点
├── pyproject.toml # 项目配置
└── README.md
💻 使用示例
基础用法
创建事件
create_calendar_event(
title="团队会议",
start_time="2025-08-02T10:00:00",
duration=60,
category="WORK",
description="每周团队会议",
location="会议室A",
stamina_cost=20
)
按日期查询事件
get_events_by_date("2025-08-02")
处理事件完成状态
complete_event(event_id=1, stamina_after=80)
🔧 技术细节
开发
运行测试
uv run pytest
代码格式化
uv run black src/
uv run ruff check src/
📄 许可证
本项目根据 MIT 许可证进行分发。
微信扫一扫