Skip to main content
Glama
jameslundie42

Schedule MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NOTION_TOKENYesNotion integration token.
LOCAL_TIMEZONENoTimezone (e.g., 'America/Los_Angeles').
GOOGLE_TOKEN_FILENoPath to Google OAuth token file (auto-generated if not set).
NOTION_TASKS_DB_IDYesNotion Tasks database ID.
GOOGLE_CREDENTIALS_FILEYesPath to Google OAuth credentials JSON file (default: ~/.schedule_mcp/google_credentials.json).
NOTION_APPOINTMENTS_DB_IDYesNotion Appointments database ID.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
gcal_list_calendarsA

List all Google Calendars the user has access to.

Returns: str: JSON array of calendars with id, summary, and primary flag.

gcal_get_eventsA

Fetch Google Calendar events within a date range.

Returns a list of events with their IDs, titles, start/end times, descriptions, and locations. Use the event ID with other tools to update or delete specific events.

Args: params.start_date: Start of the date range (ISO date string). params.end_date: End of the date range (ISO date string). params.calendar_id: Calendar to query (default: primary). params.max_results: Max events to return (default: 50).

Returns: str: JSON array of event dicts.

gcal_create_eventA

Create a new Google Calendar event.

When creating work blocks for Notion tasks, include the task's Notion URL in the description so there's a direct link from the calendar event to the task.

Args: params.title: Event title. params.start: ISO datetime string for start time. params.end: ISO datetime string for end time. params.description: Optional description (include Notion task URL here for task blocks). params.location: Optional location. params.calendar_id: Target calendar (default: primary).

Returns: str: JSON dict of the created event including its 'id'.

gcal_update_eventA

Update one or more fields on an existing Google Calendar event. Only provided fields are changed; omitted fields remain as-is.

Args: params.event_id: ID of the event to update. params.calendar_id: Calendar containing the event. params.title/start/end/description/location: Fields to update.

Returns: str: JSON dict of the updated event.

gcal_delete_eventA

Permanently delete a Google Calendar event.

This action cannot be undone. Confirm the event ID with gcal_get_events before deleting.

Args: params.event_id: ID of the event to delete. params.calendar_id: Calendar containing the event.

Returns: str: Confirmation message.

gcal_find_free_slotsA

Find available time slots of a given duration on a specific date.

Useful for scheduling work blocks, appointments, or any time-bound task. Returns all slots with at least the requested duration available.

Args: params.date: The date to check (ISO date string). params.duration_minutes: How long the slot needs to be (in minutes). params.earliest_hour: Don't suggest slots starting before this hour. params.latest_hour: Don't suggest slots ending after this hour. params.calendar_id: Calendar to check for conflicts.

Returns: str: JSON array of available slots with 'start' and 'end' ISO datetimes.

notion_get_appointmentsA

Query the Notion Appointments database with optional filters.

Returns appointments with Notion ID, title, start/end times, type, status, notes, and linked Google Calendar event ID (if synced).

Args: params.start_date: Only return appointments from this date onwards. params.end_date: Only return appointments up to this date. params.appointment_type: Filter by Medical, Personal, Work, or Other. params.status: Filter by Scheduled, In progress, or Completed.

Returns: str: JSON array of appointment dicts.

notion_create_appointmentA

Create a new appointment in the Notion Appointments database.

When syncing from Google Calendar, always pass the gcal_event_id to prevent duplicates. When creating a new appointment from scratch, omit gcal_event_id and use gcal_create_event separately to sync it to Google Calendar.

Args: params.title: Appointment name. params.start/end: ISO datetime strings. params.appointment_type: Medical, Personal, Work, or Other. params.notes: Optional notes. params.gcal_event_id: Google Calendar event ID (if syncing from GCal). params.gcal_series_id: Google Calendar series ID (for recurring appointments). params.recurring: One-Time, Limited Recurring, or Recurring.

Returns: str: JSON dict of the created appointment including Notion ID.

notion_update_appointmentA

Update fields on an existing Notion appointment. Only provided fields change.

Args: params.notion_id: The Notion page ID (from notion_get_appointments). params.*: Any fields to update.

Returns: str: JSON dict of the updated appointment.

notion_get_appointment_by_gcal_idA

Find a Notion appointment by its linked Google Calendar event ID.

Use this before syncing to check whether a calendar event already has a corresponding Notion record, preventing duplicate entries.

Args: params.gcal_event_id: Google Calendar event ID to search for.

Returns: str: JSON dict of the appointment if found, or a not-found message.

notion_get_tasksA

Query the Notion Tasks database with optional filters.

Returns tasks with their Notion IDs, names, statuses, due dates, and Notion URLs (for linking in calendar event descriptions).

Args: params.status: Filter by Not started, In progress, Done, Archived, or Overdue. params.due_before: Only return tasks due on or before this date. params.due_after: Only return tasks due on or after this date.

Returns: str: JSON array of task dicts.

notion_get_overdue_tasksA

Return all overdue tasks — either explicitly marked Overdue or with a due date in the past that isn't marked Done, Archived, or Overdue.

Returns: str: JSON array of overdue task dicts.

notion_create_taskA

Create a new task in the Notion Tasks database.

Args: params.name: Task name. params.due_date: Optional due date (ISO date string). params.status: Initial status (default: Not started).

Returns: str: JSON dict of the created task including its Notion ID and URL.

notion_update_taskA

Update fields on an existing Notion task. Only provided fields change.

Args: params.notion_id: Notion page ID (from notion_get_tasks). params.name/status/due_date: Fields to update.

Returns: str: JSON dict of the updated task.

schedule_week_overviewA

Get a unified overview of a week: calendar events, Notion appointments, and tasks due that week.

This is the primary 'how does my week look?' tool. It pulls from all three sources and returns a combined view so you can see everything in context — scheduled appointments, work blocks, and upcoming deadlines.

Args: params.date: Any date in the target week (defaults to current week).

Returns: str: JSON with 'week_range', 'calendar_events', 'appointments', 'tasks_due', and 'overdue_tasks' keys.

schedule_task_blockA

Schedule a focused work block for a Notion task on Google Calendar.

Creates a Google Calendar event with the task name as the title and a link to the Notion task in the description. The task itself is NOT modified — this just blocks time and creates a visible pointer.

Typical workflow: 1. notion_get_tasks → find the task and get its ID and URL 2. gcal_find_free_slots → find available time 3. schedule_task_block → create the calendar event with Notion link

Args: params.task_notion_id: Notion page ID of the task. params.task_name: Task name (used as event title). params.task_url: Notion URL (embedded in event description). params.start/end: ISO datetime strings for the work block. params.calendar_id: Target calendar.

Returns: str: JSON with the created calendar event and a confirmation.

schedule_find_conflictsA

Detect overlapping events or tight transitions in a date range.

Checks Google Calendar events for: exact overlaps, events with fewer than 10 minutes between them (tight transitions), and events longer than 4 hours (marathon sessions worth flagging).

Args: params.start_date: Start of the range to scan. params.end_date: End of the range to scan. params.calendar_id: Calendar to check.

Returns: str: JSON with lists of overlaps, tight transitions, and long events.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/jameslundie42/schedule-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server