Skip to main content

MCP server for querying TimeEdit ICS schedules with filtering and fuzzy search

Project description

TimeEdit MCP Server

MCP server for TimeEdit .ics schedules.

The server accepts a TimeEdit ICS link at startup, downloads/parses events, and caches results for up to 24 hours.

Useful for connecting MCP clients (like Claude) to TimeEdit schedules, enabling you to ask for info regarding exam halls, lecture dates, etc. without manual calendar browsing.

Get your .ics link

How to find the TimeEdit .ics link

  1. Go to your institution's TimeEdit page and find the calendar you want to query.
  2. Look for the "Subscribe" option (see image).
  3. Copy the provided .ics URL (it should end with .ics)

Note: This is the URL you will provide as an argument at startup.

Quick start (PyPI)

Install uv first: https://docs.astral.sh/uv/getting-started/installation/

Add this to claude_desktop_config.json (no source checkout needed):

{
  "mcpServers": {
    "timeedit-mcp": {
      "command": "uvx",
      "args": ["timeedit-mcp"],
      "env": {
        "TIMEEDIT_ICS_URL": "https://...your-timeedit-link....ics",
        "TIMEEDIT_OUTPUT_TIMEZONE": "Europe/Stockholm"
      }
    }
  }
}

Development (from source)

git clone git@github.com:ekvanox/timeedit-mcp.git
cd timeedit-mcp
uv sync
uv run main.py --ics-url "https://...your-timeedit-link....ics"

# Alternative with env vars
# TIMEEDIT_ICS_URL="https://...your-timeedit-link....ics" TIMEEDIT_OUTPUT_TIMEZONE="Europe/Stockholm" uv run main.py

Docker

The container uses uv for dependency installation and startup. Docker uses an HTTP entrypoint on port 8888.

docker build -t timeedit-mcp .
docker run -d --name timeedit-mcp --restart unless-stopped \
  -p 8888:8888 \
  -e TIMEEDIT_ICS_URL="https://...your-timeedit-link....ics" \
  -e TIMEEDIT_OUTPUT_TIMEZONE="Europe/Stockholm" \
  timeedit-mcp

Connect to Claude Desktop (MCP server)

  1. Open ~/Library/Application Support/Claude/claude_desktop_config.json
  2. Add this server entry:
{
  "mcpServers": {
    "timeedit-mcp": {
      "command": "uv",
      "args": ["run", "/PATH/TO/PROJECT/timeedit-mcp/main.py"],
      "env": {
        "TIMEEDIT_ICS_URL": "https://...your-timeedit-link....ics",
        "TIMEEDIT_OUTPUT_TIMEZONE": "Europe/Stockholm"
      }
    }
  }
}
  1. Restart Claude Desktop.

Claude skill

This repo includes a ready-to-use skill file at SKILL.md.

Easiest way to add it to Claude

  1. Create a skill folder named timeedit-mcp under your Claude skills directory.
  2. Copy this repo's SKILL.md into that folder as SKILL.md.
  3. Restart Claude (or reload customizations) so it picks up the new skill.

Typical location on macOS:

  • ~/.claude/skills/timeedit-mcp/SKILL.md

Available MCP tools

Response format

All tools return TOON data (token efficient JSON alternative).

Tool reference

Endpoint Input Output
list_programs
  • include_program_id (optional)
  • name
  • event_count
  • course_count
  • id (optional)
list_courses_for_program
  • program_query (name substring or exact id)
  • limit (optional)
  • course
  • codes
  • programs
  • event_count
search_courses_fuzzy
  • query (free-text)
  • limit (optional)
  • score
  • course
  • codes
  • programs
  • event_count
list_events_for_course
  • course_query
  • start_date / end_date (optional, YYYY-MM-DD)
  • group_query (optional)
  • limit (optional)
  • include_uid (optional)
  • include_program_id (optional)
  • start / end (configured timezone)
  • location
  • url
  • course_code
  • course_codes
  • groups
  • course_names
  • event_type
  • programs
  • summary
  • uid (optional)
list_events_for_program
  • program_query (name or id)
  • start_date / end_date (optional, YYYY-MM-DD)
  • group_query (optional)
  • limit (optional)
  • include_uid (optional)
  • include_program_id (optional)
  • start / end (configured timezone)
  • location
  • url
  • course_code
  • course_codes
  • groups
  • course_names
  • event_type
  • programs
  • summary
  • uid (optional)
list_events_filtered
  • at least one of: text_query, location_query, course_query, program_query, group_query
  • start_date / end_date (optional, YYYY-MM-DD)
  • limit (optional)
  • include_uid (optional)
  • include_program_id (optional)
  • start / end (configured timezone)
  • location
  • url
  • course_code
  • course_codes
  • groups
  • course_names
  • event_type
  • programs
  • summary
  • uid (optional)

Notes

  • Cache is stored under ~/.cache/timeedit-mcp/.
  • Cache TTL is max 24 hours.
  • Event times default to the server system timezone. Override with --output-timezone IANA_NAME (e.g. --output-timezone Europe/Stockholm) or set the TIMEEDIT_OUTPUT_TIMEZONE environment variable at server startup.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timeedit_mcp-0.1.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timeedit_mcp-0.1.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file timeedit_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: timeedit_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for timeedit_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 081ca2de5814fa5b90c530995f2bffa34802dd94ec9da9480ba609a5461fd0db
MD5 4c1af7525f8b0aeb680278bc91c1f997
BLAKE2b-256 0382e0612ddf86c31786bcbf2128608dfca814b179c16adac381bad24d391a50

See more details on using hashes here.

File details

Details for the file timeedit_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for timeedit_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 62d17925914555b4ed7ffcb3784f94b85e3649d77cc169650e1da86715501a6e
MD5 7ea50a5f8bf85ef03825b9b28fdabbc3
BLAKE2b-256 d549372f7163fe5db85f20eaf15e4630c2824c3f5f6c2c08c30c3cdd5f96acbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page