MCP

MCP

🚀 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 许可证进行分发。

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-29 03:33

相似服务问题