Skylight Calendar for Claude — family events, chores, and rewards.
Skylight Calendar for Claude — family events, chores, and rewards.
Valid MCP server (1 strong, 1 medium validity signals). 1 code issue detected. No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (38/38 approved). 1 finding(s) downgraded by scanner intelligence.
5 files analyzed · 2 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: SKYLIGHT_EMAIL
Environment variable: SKYLIGHT_PASSWORD
Environment variable: SKYLIGHT_FRAME_ID
Environment variable: SKYLIGHT_NAME
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-chrischall-skylight-mcp": {
"env": {
"SKYLIGHT_NAME": "your-skylight-name-here",
"SKYLIGHT_EMAIL": "your-skylight-email-here",
"SKYLIGHT_FRAME_ID": "your-skylight-frame-id-here",
"SKYLIGHT_PASSWORD": "your-skylight-password-here"
},
"args": [
"-y",
"skylight-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
MCP server for Skylight Calendar — 37 tools across calendar events (read+write), shared lists (read+write), chores and rewards (read+write), task-box items (read+write), meals (read), messages and albums (read), and frame/device info (read).
The server uses a headless email+password OAuth2 authorization-code flow — no SSO, no 2FA, no browser extension required. Credentials are always SKYLIGHT_EMAIL + SKYLIGHT_PASSWORD.
On first tool call, the server performs four steps against https://app.ourskylight.com:
GET /auth/session/new — fetch the Rails CSRF token and session cookie.POST /auth/session — log in with email + password (must happen before OAuth authorize).GET /oauth/authorize — receive the one-time authorization code via redirect.POST /oauth/token — exchange the code for a bearer access_token + refresh_token (7-day expiry).The client then refreshes the token proactively (~60 s before expiry) and reactively on any 401. No bot wall has been observed — the headless flow works directly from Node.
No env vars → clean start: if credentials are not set, the server still starts without error. Auth is deferred to the first tool call, so MCP hosts can complete install-time tool listing before credentials are configured.
All data in Skylight is scoped to a frame (the family hub device). On first use the client auto-discovers the single frame on the account. If the account has more than one frame, set SKYLIGHT_FRAME_ID to the frame ID you want. Every tool that reads frame-scoped data accepts an optional frameId arg to override the default.
| Module | Tool | R/W | Description |
|---|---|---|---|
| frames | skylight_list_frames | R | List all frames on the account |
| frames | skylight_get_frame | R | Get details for a specific frame |
| frames | skylight_list_frame_members | R | List members associated with a frame |
| frames | skylight_list_devices | R | List physical devices linked to a frame |
| frames | skylight_get_plus_access | R | Get Skylight Plus subscription / entitlement status |
| frames | skylight_get_reward_points | R | Get reward-point balances per family member |
| frames | skylight_get_household_config | R | Get household configuration for the frame |
| frames | skylight_list_calendars | R | List the frame's calendar accounts and active calendars |
| frames | skylight_get_event_notification_settings | R | Get the frame's calendar-event notification settings |
| events | skylight_list_events | R | List calendar events within a date range |
| events | skylight_get_event | R | Get details for a specific event |
| events | skylight_create_event | W | Create a new calendar event |
| events | skylight_update_event | W | Update an existing calendar event |
| events | skylight_delete_event | W | Delete a calendar event |
| events | skylight_list_categories | R | List event categories for a frame |
| events | skylight_list_source_calendars | R | List external source calendars linked to a frame |
| events | skylight_list_recent_invited_emails | R | List recently-invited email addresses |
| lists | skylight_list_lists | R | List all shared lists on a frame |
| lists | skylight_get_list_items | R | Get items in a specific shared list |
| lists | skylight_create_list | W | Create a new shared list (label + color + kind) |
| lists | skylight_update_list | W | Update a list's name, color, or type |
| lists | skylight_delete_list | W | Delete a shared list |
| lists | skylight_add_list_item | W | Add an item to a shared list |
| lists | skylight_update_list_item | W | Rename a list item or check/uncheck it |
| lists | skylight_delete_list_item | W | Delete an item from a shared list |
| chores | skylight_list_chores | R | List chores within a date range |
| chores | skylight_create_chore | W | Create a new chore (summary + category) |
| chores | skylight_complete_chore | W | Mark a chore complete |
| chores | skylight_list_rewards | R | List rewards configured for a frame |
| meals | skylight_list_recipes | R | List meal recipes for the frame |
| meals | skylight_list_meal_categories | R | List meal categories for the frame |
| messages | skylight_list_messages | R | List messages posted to the frame |
| messages | skylight_list_albums | R | List photo albums on the frame |
| tasks | skylight_list_tasks | R | List task-box items |
| tasks | skylight_create_task | W | Create a task-box item |
| tasks | skylight_update_task | W | Update a task-box item |
| tasks | skylight_delete_task | W | Delete a task-box item |
SKYLIGHT_EMAIL=you@example.com
SKYLIGHT_PASSWORD=your-password
| Env var | Default | Purpose |
|---|---|---|
SKYLIGHT_FRAME_ID | auto-discovered | Force a specific frame when the account has multiple |
SKYLIGHT_NAME | (none) | Friendly label used in startup logs |
SKYLIGHT_BASE_URL | https://app.ourskylight.com/api | Override the API base URL |
Treat .env like a password file — it is gitignored, do not commit it.
npm install
npm run build
npm test
npm run dev # requires .env with credentials
Tests: vitest, 100% line/branch/function/statement coverage enforced. All tests are mocked — no network calls in CI.
Developed and maintained by AI (Claude). Use at your own discretion.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.