`mcp-caldav`로 AI에 실제 캘린더 슈퍼파워 제공

발행: (2026년 1월 14일 오후 06:04 GMT+9)
11 min read
원문: Dev.to

Source: Dev.to

저장소: https://github.com/madbonez/caldav-mcp

TL;DR

“AI가 실제로 내 캘린더를 보고 관리하도록 할 수 있을까?”

mcp‑caldav는 CalDAV 호환 캘린더(Nextcloud, iCloud, FastMail, Yandex 등)를 AI 도구와 연결하는 MCP 서버입니다. 그럼 AI는 다음을 할 수 있습니다:

  • 캘린더 목록 조회
  • 일정 읽기
  • 이벤트 생성(알림, 참석자, 반복 일정 포함)
  • UID로 이벤트 검색 또는 삭제

이 프로젝트는 이미 인기 있는 awesome‑mcp‑servers 컬렉션에 포함되어 있어, 단순한 장난이 아니라는 것을 증명합니다.

프로젝트가 하는 일

방향역할
CalDAV캘린더 언어 – 이벤트, UID, RRULE, 참석자, 알림, 카테고리, 우선순위와 대화합니다.
MCPLLM이 호출할 수 있는 깔끔한 도구 세트를 제공 – 캘린더 목록, 이벤트 생성, 이벤트 가져오기, 검색, 삭제.

예시 워크플로우

  • “이번 주 내 캘린더에 뭐가 있나요?”
  • “내일 오후에 Alex와 30분 회의를 만들어요.”
  • “다음 달에 #deep‑work 태그가 달린 모든 이벤트를 보여줘.”
  • “방금 만든 Test meeting을 삭제해.”

마법 같은 건 없습니다 – 단지 캘린더와 AI 사이의 견고한 연결일 뿐입니다.

저장소 레이아웃

caldav-mcp/
├─ src/
│   └─ mcp_caldav/
│       ├─ __init__.py      # main entry point / CLI
│       ├─ server.py        # MCP server (tools, protocol wiring)
│       └─ client.py        # CalDAV client wrapper (auth, HTTP, (de)serialization)
├─ tests/
│   ├─ test_server.py
│   └─ test_client.py
├─ e2e/                     # end‑to‑end tests against a real CalDAV server
├─ pyproject.toml          # packaging & dependency config
├─ Makefile                # dev commands (make test, make check, …)
├─ README.md
├─ USAGE.md
└─ QUICKSTART.md

깨끗하고 중간 수준 개발자 친화적인 레이아웃: 명확한 진입점, 관심사의 분리, 그리고 실제 테스트 스위트.

Core Design Points

  • Strict typingmypy with strict rules
  • Fast linting/formattingruff
  • Pre‑commit hooks – keep style & checks consistent

mcp‑caldav 실행

uv 사용 (권장)

git clone https://github.com/madbonez/caldav-mcp.git
cd caldav-mcp

# Install runtime + dev deps, create .venv, generate uv.lock
uv sync --dev

서버 실행:

uv run mcp-caldav          # from a local checkout

체크아웃 없이 배포된 패키지를 실행하려면:

uvx mcp-caldav

pip 사용

pip install -e .
mcp-caldav

모든 방법은 일반적인 Python CLI 진입점을 제공합니다.

구성

서버는 환경 변수에서 설정을 읽습니다:

export CALDAV_URL="https://caldav.example.com/"
export CALDAV_USERNAME="your-username"
export CALDAV_PASSWORD="your-password"

일반적인 CalDAV 엔드포인트

제공자URL
Yandex Calendarhttps://caldav.yandex.ru/
Google Calendar (CalDAV + OAuth)https://apidata.googleusercontent.com/caldav/v2/
Nextcloudhttps://your-domain.com/remote.php/dav/calendars/username/
ownCloudhttps://your-domain.com/remote.php/dav/calendars/username/
Apple iCloudhttps://caldav.icloud.com/ (보통 앱 전용 비밀번호와 함께 사용)
FastMailhttps://caldav.fastmail.com/dav/calendars/user/

참고: Yandex는 공격적인 속도 제한을 적용합니다 (≈ 60 초당 1 MB). 쓰기 작업이 많을 경우 504 타임아웃이 발생할 수 있습니다. 더 높은 처리량이 필요하면 Nextcloud 또는 Google을 사용하는 것이 좋습니다. 자세한 내용은 PROVIDER_NOTES.md를 참고하세요.

Cursor와 통합 (또는 MCP 인식 클라이언트와 통합)

mcp‑caldav를 전역 MCP 서버로 추가하여 AI가 캘린더 도구를 자동으로 호출할 수 있게 합니다.

uvx 사용 (로컬 체크아웃 없이)

{
  "mcpServers": {
    "mcp-caldav": {
      "command": "uvx",
      "args": ["mcp-caldav"],
      "env": {
        "CALDAV_URL": "https://caldav.example.com/",
        "CALDAV_USERNAME": "your-username",
        "CALDAV_PASSWORD": "your-password"
      }
    }
  }
}

로컬 체크아웃 사용

{
  "mcpServers": {
    "mcp-caldav": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/Users/you/dev/caldav-mcp",
        "mcp-caldav"
      ],
      "env": {
        "CALDAV_URL": "https://caldav.example.com/",
        "CALDAV_USERNAME": "your-username",
        "CALDAV_PASSWORD": "your-password"
      }
    }
  }
}

구성을 마치면 Cursor(또는 MCP 지원 클라이언트)는 다음 도구들을 LLM에 제공하게 됩니다.

노출된 MCP 도구

ToolDescription
caldav_list_calendars액세스할 수 있는 모든 캘린더(개인, 업무, 공유 등)를 반환합니다. AI가 대상 캘린더를 선택하거나 사용 가능한 캘린더를 탐색하는 데 유용합니다.
caldav_create_event새 이벤트를 생성합니다:
• 제목, 설명, 위치
• 시작/종료 타임스탬프 또는 기간
• 반복 규칙(매일/매주/매월/매년)
• 카테고리/태그
• 우선순위(0‑9)
• 상태가 있는 참석자
• 다중 알림
caldav_get_events날짜 범위 내의 이벤트를 가져옵니다. UID, 카테고리, 우선순위, 참석자 및 상태, 반복 상세 정보, 알림 등을 반환합니다.
caldav_get_today_events오늘의 모든 이벤트를 반환합니다(하루 종일 일정 포함). “목요일에 뭐가 있나요?”와 같은 질문에 적합합니다.
caldav_search_events키워드, 태그 또는 기타 메타데이터로 검색합니다.
caldav_delete_eventUID로 이벤트를 삭제합니다.

These tools give you a full CRUD interface to any CalDAV calendar from within your LLM‑driven workflow.

빠른 요약

  1. Clone / install 저장소를 복제/설치합니다 (uv 또는 pip).
  2. Set environment variables CalDAV 서버에 대한 환경 변수를 설정합니다.
  3. Run mcp-caldav.
  4. Configure MCP 클라이언트(Cursor 등)를 서버를 가리키도록 설정합니다.
  5. Ask AI에게 자연어 캘린더 질문을 하면 – 내부에서 적절한 MCP 도구를 호출합니다.

AI의 뇌에 진정으로 살아있는 캘린더를 즐겨보세요!

CalDAV MCP 도구 개요

caldav_get_week_events

현재 주의 이벤트를 반환합니다.

  • 주가 **“오늘”**부터 시작할지 월요일부터 시작할지 정의하는 옵션.
  • 주간‑계획 프롬프트에 적합합니다.

고급 작업

caldav_get_event_by_uid

UID 로 단일 이벤트를 조회합니다.

사용 사례: “방금 언급한 마지막 회의에 대한 자세한 정보를 보여줘.”

caldav_delete_event

UID 로 이벤트를 삭제합니다.

사용 사례: 테스트 이벤트를 정리하거나 회의를 프로그래밍 방식으로 취소할 때.

caldav_search_events

다음 항목으로 검색:

  • 텍스트 (제목 / 설명)
  • 위치
  • 참석자

예시:

  • “올해 제목에 ‘performance review’ 가 포함된 모든 이벤트를 찾아줘.”
  • “지난 달에 Alice 와 있는 회의를 보여줘.”
  • “다음 분기에 #deep‑work 로 태그된 모든 이벤트를 목록으로 보여줘.”

개발 도구

프로젝트는 견고한 품질 보증 스택을 구성합니다:

도구목적
ruff빠른 린팅 + 포맷팅
mypy정적 타입 검사
pre‑commit커밋하기 전에 검사를 실행합니다

시작하기

# Install all dependencies (including dev group)
uv sync --group dev

일반적인 Make 명령

명령설명
make check전체 품질 검사를 실행
make lint린팅만 실행
make format코드 포맷팅
make type-check정적 타입 검사 실행
make test전체 테스트 실행
make test-unit단위 테스트만 실행
make test-e2e엔드‑투‑엔드 테스트 실행 (실제 CalDAV 서버 필요)
make test-cov터미널에 커버리지 표시
make coverage-htmlHTML 커버리지 보고서 생성 (htmlcov/)

엔드‑투‑엔드 테스트 설정

  1. 예시 env 파일을 복사합니다:

    cp .env.e2e.example .env.e2e
  2. .env.e2e에 실제 CalDAV 자격 증명을 입력합니다.

  3. 테스트를 실행합니다:

    make test-e2e

awesome-mcp-servers Listing

awesome-mcp-servers 목록은 고품질 MCP 서버들을 선별합니다. mcp-caldav가 적합한 이유는 다음과 같습니다:

  • 표준 프로토콜을 통해 AI를 실제 데이터(캘린더)와 연결합니다.
  • 깔끔하고 비교적 작은 코드베이스라 탐색이 쉽습니다.
  • 충분한 테스트 구성(단위 테스트 + E2E).
  • 유용한 문서(README.md, USAGE.md, QUICKSTART.md, PROVIDER_NOTES.md).

왜 이 레포를 참고용으로 사용할까?

  • 관심사의 분리: 전송 계층(MCP) vs. 도메인 로직(CalDAV 클라이언트).
  • 표현력 있는 툴 인터페이스: 작지만 강력한 API.
  • 플러그‑인‑플레이: 휠을 다시 만들 필요 없이 기존 CalDAV 서버와 바로 작동.

AI가 단순 채팅을 넘어 실제로 일정 관리까지 하게 하고 싶다면 mcp-caldav가 탄탄한 출발점이 됩니다:

  • 표준 프로토콜(CalDAV)을 사용합니다.
  • 명확히 정의된 MCP 툴을 제공합니다.
  • awesome-mcp-servers에 소개될 만큼 충분히 검증되었습니다.

🔗 https://github.com/madbonez/caldav-mcp

자신만의 설정에 자유롭게 연결하거나 확장해 보세요(예: 업데이트/패치 작업 추가 또는 더 풍부한 검색 기능). 이는 MCP 기반 워크플로를 진지하게 구축하려는 사람이 기대하는 바로 그 작업입니다.

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...