iCal MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iCal MCP Serverlist events from my work calendar this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
iCal MCP Server
A modern Model Context Protocol (MCP) server for managing iCalendar files. This server allows AI assistants to interact with calendar data through a standardized protocol.
Features
Load calendars from:
Local files (
.ics)HTTP/HTTPS URLs
Query events with filters for:
Date ranges
Search text (summary, description, location)
Location
Recurring event expansion
Full CRUD operations:
Create new events
Update existing events
Delete events
Multiple calendar support: Load and manage multiple calendars simultaneously
Read-only mode: HTTP calendars are automatically read-only
Related MCP server: Google Calendar MCP Server
Installation
Using npx (recommended)
You can run the server directly without installation:
npx @jonas/ical-mcpGlobal Installation
npm install -g @jonas/ical-mcp
ical-mcpLocal Development
git clone https://github.com/jnss95/ical-mcp.git
cd ical-mcp
npm install
npm run build
npm startConfiguration
Environment Variables
Calendars are configured using environment variables at startup:
Variable | Description |
| URL or path to a calendar (id defaults to "default") |
| URL or path to a calendar with custom id |
Examples:
Single calendar (id defaults to "default"):
CALENDAR_LINK=https://example.com/calendar.icsMultiple calendars with custom IDs:
CALENDAR_LINK_work=https://example.com/work.ics
CALENDAR_LINK_personal=/path/to/personal.ics
CALENDAR_LINK_holidays=https://example.com/holidays.icsVS Code MCP Configuration
Add to your VS Code settings (.vscode/mcp.json):
{
"servers": {
"ical": {
"type": "stdio",
"command": "npx",
"args": ["@jnss95/ical-mcp"],
"env": {
"CALENDAR_LINK": "https://example.com/your-calendar.ics"
}
}
}
}With multiple calendars:
{
"servers": {
"ical": {
"type": "stdio",
"command": "npx",
"args": ["@jnss95/ical-mcp"],
"env": {
"CALENDAR_LINK_work": "https://example.com/work.ics",
"CALENDAR_LINK_personal": "/path/to/personal.ics"
}
}
}
}Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ical": {
"command": "npx",
"args": ["@jnss95/ical-mcp"],
"env": {
"CALENDAR_LINK": "https://example.com/your-calendar.ics"
}
}
}
}Available Tools
Calendar Management
Tool | Description |
| List all loaded calendars |
| Get metadata about a loaded calendar |
Event Operations
Tool | Description |
| List all events in a calendar |
| Search events with filters |
| Get details of a specific event |
| Create a new event |
| Update an existing event |
| Delete an event |
Tool Examples
List Calendars
{
"tool": "list_calendars",
"arguments": {}
}Search Events
{
"tool": "search_events",
"arguments": {
"calendarId": "work",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-01-31T23:59:59Z",
"searchText": "meeting",
"expandRecurring": true
}
}Create Event
{
"tool": "create_event",
"arguments": {
"calendarId": "work",
"summary": "Team Meeting",
"start": "2024-01-15T10:00:00Z",
"end": "2024-01-15T11:00:00Z",
"description": "Weekly team sync",
"location": "Conference Room A"
}
}Create Recurring Event
{
"tool": "create_event",
"arguments": {
"calendarId": "work",
"summary": "Daily Standup",
"start": "2024-01-15T09:00:00Z",
"end": "2024-01-15T09:15:00Z",
"rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
}
}Update Event
{
"tool": "update_event",
"arguments": {
"calendarId": "work",
"eventId": "event-uid@example.com",
"summary": "Updated Meeting Title",
"location": "New Location"
}
}Development
Running Tests
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watchBuilding
# Build TypeScript
npm run build
# Watch mode
npm run watchProject Structure
ical_mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── calendar/
│ │ ├── calendar.ts # Calendar class (CRUD operations)
│ │ ├── loader.ts # Calendar loading utilities
│ │ └── index.ts # Module exports
│ └── types/
│ ├── calendar.ts # Type definitions
│ ├── ical.d.ts # ical.js type declarations
│ └── index.ts # Type exports
├── build/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── vitest.config.tsLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jnss95/ical-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server