
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
A Model Context Protocol (MCP) server for interacting with macOS Calendar.
Clone the repository and install:
git clone https://github.com/HongpengM/calendar-sse-mcp.git # or your fork
cd calendar-sse-mcp
pip install -e .
You can install directly using uv, a fast Python package installer:
uv pip install git+https://github.com/HongpengM/calendar-sse-mcp.git
Note: This package will be available on PyPI in the future.
uv pip install calendar-sse-mcp
uvx
install the Launch Agent and run commandsThe easiest way to install and run the calendar service is with uvx:
# Install the server as a Launch Agent with default settings (port 27212)
uvx --from calendar-sse-mcp calendar-sse server install
# Customize the installation
uvx --from calendar-sse-mcp calendar-sse server install --port 5000 --logdir ~/logs
# Install a development server on port 27213
uvx --from calendar-sse-mcp calendar-sse server install --dev
# Start the server (if not already running)
uvx --from calendar-sse-mcp calendar-sse server start
# Stop the server
uvx --from calendar-sse-mcp calendar-sse server stop
# Restart the server
uvx --from calendar-sse-mcp calendar-sse server restart
# Check server logs
uvx --from calendar-sse-mcp calendar-sse server logs
uvx --from calendar-sse-mcp calendar-sse server logs --level error # Show only error logs
# Uninstall the server
uvx --from calendar-sse-mcp calendar-sse server uninstall
# Run the server directly in the foreground (for testing)
uvx --from calendar-sse-mcp calendar-sse server run
The installation process:
Alternative, you could also run an alternative instance from the pip installed or the local repository. With installing the server first:
# Install the server first
pip install -e . # In your package repository, install the package (which you will have `calendar-mcp` as a shell command if you set the pip packages in PATH)
calendar-mcp server install # This install the server as a Launch Agent
# Then you could run commandline commands
calendar-mcp cli --help
If you don't want to install the package in global space, you could also run directly from the repository
python -m src.calendar_sse_mcp server install # This will not install the package in global
python -m src.calendar_sse_mcp cli --help
To add this calendar service to Claude, create the following JSON configuration:
{
"schema_version": "v1",
"name": "Calendar",
"description": "Access and manage events in macOS Calendar.app",
"provider_uri": "http://localhost:27212",
"provider_type": "mcp_server",
"tools": [
{
"name": "list_all_calendars",
"description": "List all available calendars in Calendar.app"
},
{
"name": "search_events",
"description": "Search for events in Calendar.app by query, calendar name, and date range"
},
{
"name": "create_calendar_event",
"description": "Create a new event in Calendar.app"
},
{
"name": "update_calendar_event",
"description": "Update an existing event in Calendar.app"
},
{
"name": "delete_calendar_event",
"description": "Delete an event from Calendar.app"
}
]
}
Save this as calendar-mcp.json
and add it to Claude in your settings.
The package provides a comprehensive command-line interface:
# Using uvx (recommended)
uvx --from calendar-sse-mcp calendar-sse [command] [options]
# Or directly with the module
python -m calendar_sse_mcp [command] [options]
The tool provides two main subcommands:
cli
: For direct calendar operations (creating/updating events, searching, etc.)server
: For managing the server (install, start, stop, view logs, etc.)# Install and start the Launch Agent
uvx --from calendar-sse-mcp calendar-sse server install
# Customize port and log directory during installation
uvx --from calendar-sse-mcp calendar-sse server install --port 5000 --logdir ~/logs
# Install a development server on port 27213
uvx --from calendar-sse-mcp calendar-sse server install --dev
# Start the server (if not already running)
uvx --from calendar-sse-mcp calendar-sse server start
# Stop the server
uvx --from calendar-sse-mcp calendar-sse server stop
# Restart the server
uvx --from calendar-sse-mcp calendar-sse server restart
# Check server logs
uvx --from calendar-sse-mcp calendar-sse server logs
uvx --from calendar-sse-mcp calendar-sse server logs --level error # Show only error logs
# Uninstall the server
uvx --from calendar-sse-mcp calendar-sse server uninstall
# Run the server directly in the foreground (for testing)
uvx --from calendar-sse-mcp calendar-sse server run
Use the cli
subcommand for direct calendar operations:
# List all calendars
uvx --from calendar-sse-mcp calendar-sse cli calendars
# Connect to a development server on port 27213
uvx --from calendar-sse-mcp calendar-sse cli --dev calendars
# Get events from a calendar
uvx --from calendar-sse-mcp calendar-sse cli events "Work"
# Create a new event
uvx --from calendar-sse-mcp calendar-sse cli create --event "Team Meeting" --cal "Work" --start "10:00" --duration "1h"
# Create an event with flexible date/time formats
uvx --from calendar-sse-mcp calendar-sse cli create --event "Lunch with John" --cal "Personal" \
--date "next Monday" --start "12pm" --duration "1.5 hours" \
--location "Joe's Restaurant" --description "Discuss project"
# Update an event
uvx --from calendar-sse-mcp calendar-sse cli update "Work" "EVENT_ID" --summary "Updated Meeting"
# Delete an event
uvx --from calendar-sse-mcp calendar-sse cli delete "Work" "EVENT_ID"
# Search for events
uvx --from calendar-sse-mcp calendar-sse cli search "meeting" --calendar "Work" --start-date "next Monday" --duration "7d"
For more details, see the CLI Tools Documentation.
The first time you run the server and it attempts to access Calendar.app, macOS will prompt you to grant permissions. You must grant these permissions for the script to work.
IMPORTANT: This software requires full access to your macOS Calendar.app and all its data. Please be aware of the following:
uv
, Python, or your terminal applicationBy installing and using this software, you acknowledge:
If you're uncomfortable with these permissions, please do not proceed with installation.
calendars://list
- List all available calendarscalendar://{name}
- Get information about a specific calendarevents://{calendar_name}
- Get all events in a calendarevents://{calendar_name}/{start_date}/{end_date}
- Get events in a date rangeevent://{calendar_name}/{event_id}
- Get a specific event by IDSee API Endpoints Documentation for detailed information.
api://calendars
- Get all calendars as a standardized JSON responseapi://events/{calendar_name}
- Get events from a calendar as JSONapi://events/{calendar_name}/{start_date}/{end_date}
- Get events in a date rangeapi://events/create/{calendar_name}/{summary}/{start_date}/{end_date}
- Create a new eventapi://events/update/{event_id}/{calendar_name}
- Update an eventapi://events/delete/{event_id}/{calendar_name}
- Delete an eventlist_all_calendars()
- List all available calendarssearch_events(query, calendar_name?, start_date?, end_date?)
- Search for eventscreate_calendar_event(calendar_name, summary, start_date, end_date, location?, description?)
- Create a new eventupdate_calendar_event(event_id, calendar_name, summary?, start_date?, end_date?, location?, description?)
- Update an eventdelete_calendar_event(event_id, calendar_name)
- Delete an eventcreate_event_prompt(calendar_name, summary, date?, start_time?, end_time?, duration_minutes?, location?, description?)
- Prompt to create a new eventsearch_events_prompt(query, calendar_name?, start_date?, end_date?)
- Prompt to search for eventsserver
command.calendar-mcp
.This package uses the dateparser
library for robust date parsing, which provides:
Example date formats supported:
The package uses Pydantic v2 for data validation, providing:
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
A Model Context Protocol server for macOS Calendar.app
We found that calendar-sse-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.