{"_id":"@drpottsy/skylight-mcp","_rev":"4-013630e8742e08389cdf62ab30360e06","name":"@drpottsy/skylight-mcp","dist-tags":{"latest":"2.2.3"},"versions":{"2.1.0":{"name":"@drpottsy/skylight-mcp","version":"2.1.0","keywords":["mcp","skylight","calendar","model-context-protocol","claude","ai","family","chores"],"author":{"url":"https://github.com/pottsy17","name":"pottsy17"},"license":"MIT","_id":"@drpottsy/skylight-mcp@2.1.0","maintainers":[{"name":"drpottsy","email":"kyle@drpottsy.com"}],"contributors":[{"url":"https://github.com/rjhalvorson","name":"rjhalvorson","email":"rjhalvorson@gmail.com"},{"url":"https://github.com/avinashjoshi","name":"avinashjoshi"}],"homepage":"https://github.com/pottsy17/skylight-mcp#readme","bugs":{"url":"https://github.com/pottsy17/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"8de789b45047ff1883619addfc653eeb6795e94d","tarball":"https://registry.npmjs.org/@drpottsy/skylight-mcp/-/skylight-mcp-2.1.0.tgz","fileCount":123,"integrity":"sha512-+/LzTeH1W9AGxMh3JLEVMlnUqAUYqzF9Hszx7CccKDGxL0R+rGAkMrrBnA+hOSJzkfGazs64sN+gqOg4h0RqeA==","signatures":[{"sig":"MEUCIASnYD+RNfl76MjAu+YvVO/qQMpaJN5vEsjorkAxXZSDAiEA3hlIm8LxSBz4oNJkwkZmB7rX1xnTEP5nDwVMpPLP+lA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1412100},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"bc844679f675dbb2c99f4c275b759ab0feda403d","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/","test":"vitest","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage","generate:types":"openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts"},"_npmUser":{"name":"drpottsy","email":"kyle@drpottsy.com"},"repository":{"url":"git+https://github.com/pottsy17/skylight-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server for Skylight Calendar API - enables agentic interactions for calendar, chores, lists, and family management. Maintained fork of @rjhalvorson/skylight-mcp.","directories":{},"_nodeVersion":"24.18.1","dependencies":{"zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^4.1.4","typescript":"^5.4.5","@types/node":"^20.12.2","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_2.1.0_1787334982632_0.950826122317862","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@drpottsy/skylight-mcp","version":"2.1.1","keywords":["mcp","skylight","calendar","model-context-protocol","claude","ai","family","chores"],"author":{"url":"https://github.com/pottsy17","name":"pottsy17"},"license":"MIT","_id":"@drpottsy/skylight-mcp@2.1.1","maintainers":[{"name":"drpottsy","email":"kyle@drpottsy.com"}],"contributors":[{"url":"https://github.com/rjhalvorson","name":"rjhalvorson","email":"rjhalvorson@gmail.com"},{"url":"https://github.com/avinashjoshi","name":"avinashjoshi"}],"homepage":"https://github.com/pottsy17/skylight-mcp#readme","bugs":{"url":"https://github.com/pottsy17/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"c3c23ffbb587cce1fc0508754a7250f5dcbe96e6","tarball":"https://registry.npmjs.org/@drpottsy/skylight-mcp/-/skylight-mcp-2.1.1.tgz","fileCount":123,"integrity":"sha512-sT6Yl3U8ZAXj//SH7xHszRSbEoccoKhfwCK7yXcTJ/by5ymc2sZuzQZICdRlKDjEDYGWv6mL+v7Ch8yyBpNUIA==","signatures":[{"sig":"MEUCIQD46j15VK3hskc6D2mqv+5XHRF97A1J+Izv9yiDROZbeQIgNge7VtxazweIPdDBFj5xqOvr+rN8nIJjJ0+hx8SYfis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1412816},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"00551e6df4ad8cae964f0dc0f1d6117b95822fc2","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/","test":"vitest","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage","generate:types":"openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts"},"_npmUser":{"name":"drpottsy","email":"kyle@drpottsy.com"},"repository":{"url":"git+https://github.com/pottsy17/skylight-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server for Skylight Calendar API - enables agentic interactions for calendar, chores, lists, and family management. Maintained fork of @rjhalvorson/skylight-mcp.","directories":{},"_nodeVersion":"24.18.1","dependencies":{"zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^4.1.4","typescript":"^5.4.5","@types/node":"^20.12.2","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_2.1.1_1787361605764_0.9049443167856746","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@drpottsy/skylight-mcp","version":"2.2.1","keywords":["mcp","skylight","calendar","model-context-protocol","claude","ai","family","chores"],"author":{"url":"https://github.com/pottsy17","name":"pottsy17"},"license":"MIT","_id":"@drpottsy/skylight-mcp@2.2.1","maintainers":[{"name":"drpottsy","email":"kyle@drpottsy.com"}],"contributors":[{"url":"https://github.com/rjhalvorson","name":"rjhalvorson","email":"rjhalvorson@gmail.com"},{"url":"https://github.com/avinashjoshi","name":"avinashjoshi"}],"homepage":"https://github.com/pottsy17/skylight-mcp#readme","bugs":{"url":"https://github.com/pottsy17/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"119538aedd1e36d89dadebe8ed8fd9041674d159","tarball":"https://registry.npmjs.org/@drpottsy/skylight-mcp/-/skylight-mcp-2.2.1.tgz","fileCount":131,"integrity":"sha512-OOnCd5jsS3Dgc6MLKjeCd9HPJy1q8eO/xqBkw4Ah1MS80OrZAgVTwFL3pG6e2vX0225QWEp+GoILv7ADMfW8tg==","signatures":[{"sig":"MEQCIFCMa+rBqTsbbPKaD+6oVI1zbgN+FUTMY6yiT/7OMGmNAiAnPATVTvr+72NFhQDWWcjU59Qkhgw9Sn8Be+gEWZ9hCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1439302},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0eedec9c92e55487d959c381b08ec4e384e32b05","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src/","test":"vitest","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage","generate:types":"openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts"},"_npmUser":{"name":"drpottsy","email":"kyle@drpottsy.com"},"repository":{"url":"git+https://github.com/pottsy17/skylight-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server for Skylight Calendar API - enables agentic interactions for calendar, chores, lists, and family management. Maintained fork of @rjhalvorson/skylight-mcp.","directories":{},"_nodeVersion":"24.18.1","dependencies":{"zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^4.1.4","typescript":"^5.4.5","@types/node":"^20.12.2","openapi-typescript":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_2.2.1_1787375952706_0.8213795344208445","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@drpottsy/skylight-mcp","version":"2.2.3","description":"MCP server for Skylight Calendar API - enables agentic interactions for calendar, chores, lists, and family management. Maintained fork of @rjhalvorson/skylight-mcp.","type":"module","main":"dist/index.js","bin":{"skylight-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsx watch src/index.ts","test":"vitest","test:coverage":"vitest --coverage","lint":"eslint src/","typecheck":"tsc --noEmit","generate:types":"openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts"},"keywords":["mcp","skylight","calendar","model-context-protocol","claude","ai","family","chores"],"author":{"name":"pottsy17","url":"https://github.com/pottsy17"},"contributors":[{"name":"rjhalvorson","email":"rjhalvorson@gmail.com","url":"https://github.com/rjhalvorson"},{"name":"avinashjoshi","url":"https://github.com/avinashjoshi"}],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/pottsy17/skylight-mcp.git"},"bugs":{"url":"https://github.com/pottsy17/skylight-mcp/issues"},"homepage":"https://github.com/pottsy17/skylight-mcp#readme","publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^3.24.1"},"devDependencies":{"@types/node":"^20.12.2","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","eslint":"^8.57.0","openapi-typescript":"^7.0.0","tsx":"^4.7.0","typescript":"^5.4.5","vitest":"^4.1.4"},"engines":{"node":">=20.0.0"},"gitHead":"28ed93f520c073dc32e557c1bfcdaafbf78f71a1","types":"./dist/index.d.ts","_id":"@drpottsy/skylight-mcp@2.2.3","_nodeVersion":"24.18.1","_npmVersion":"12.0.1","dist":{"integrity":"sha512-78SakjS/JyPTfcd46vXUWqkq86oh4nqOHGo+SRk0QM+1IkToZDkriM+PSHBuej/hiP7z94GO+t6n4TE6tIDuxw==","shasum":"8955e339bdb40b020c823768ed3390464468bf46","tarball":"https://registry.npmjs.org/@drpottsy/skylight-mcp/-/skylight-mcp-2.2.3.tgz","fileCount":131,"unpackedSize":1444271,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF3z72dwIA8myYbkITgQ7p3XSwBY2FHofdfZ6y4GpWyiAiEAybYO2nOqZEWuy63fttYjJfF6v+TQL7+ZhRxm68m3eco="}]},"_npmUser":{"name":"drpottsy","email":"kyle@drpottsy.com"},"directories":{},"maintainers":[{"name":"drpottsy","email":"kyle@drpottsy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skylight-mcp_2.2.3_1787465443966_0.9684827474417372"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-21T17:56:22.224Z","modified":"2026-08-23T06:10:44.242Z","2.1.0":"2026-08-21T17:56:22.764Z","2.1.1":"2026-08-22T01:20:05.936Z","2.2.1":"2026-08-22T05:19:12.856Z","2.2.3":"2026-08-23T06:10:44.099Z"},"bugs":{"url":"https://github.com/pottsy17/skylight-mcp/issues"},"author":{"name":"pottsy17","url":"https://github.com/pottsy17"},"license":"MIT","homepage":"https://github.com/pottsy17/skylight-mcp#readme","keywords":["mcp","skylight","calendar","model-context-protocol","claude","ai","family","chores"],"repository":{"type":"git","url":"git+https://github.com/pottsy17/skylight-mcp.git"},"description":"MCP server for Skylight Calendar API - enables agentic interactions for calendar, chores, lists, and family management. Maintained fork of @rjhalvorson/skylight-mcp.","contributors":[{"name":"rjhalvorson","email":"rjhalvorson@gmail.com","url":"https://github.com/rjhalvorson"},{"name":"avinashjoshi","url":"https://github.com/avinashjoshi"}],"maintainers":[{"name":"drpottsy","email":"kyle@drpottsy.com"}],"readme":"# Skylight MCP Server\n\nAn MCP (Model Context Protocol) server for the Skylight Calendar API. Enables AI assistants like Claude to interact with your Skylight family calendar, chores, lists, and more.\n\n> **Note:** This is a maintained continuation of [rjhalvorson/skylight-mcp](https://github.com/rjhalvorson/skylight-mcp), which was itself a continuation of [TheEagleByte/skylight-mcp](https://github.com/TheEagleByte/skylight-mcp). Each upstream went quiet; this repo carries the project forward with ongoing updates and bug fixes. The full commit history and authorship of both predecessors is preserved in git, with thanks to @rjhalvorson and @TheEagleByte for the foundation. Published on npm as `@drpottsy/skylight-mcp`.\n\n## Features\n\n- **Calendar**: Query calendar events (\"What's on my calendar today?\")\n- **Chores**: View and create chores (\"Add emptying dishwasher to chores\")\n- **Lists**: View grocery and to-do lists (\"What's on the grocery list?\")\n- **Tasks**: Add items to the task box (\"Add XYZ to my task list\")\n- **Family**: View family members and devices\n- **Rewards**: Check reward points and available rewards\n\n## Quick Start\n\n### Installation\n\n#### Option 1: Claude Desktop (.mcpb, easiest)\n\n1. Download the latest `skylight-mcp-<version>.mcpb` from the [Releases page](https://github.com/pottsy17/skylight-mcp/releases).\n2. In Claude Desktop, open **Settings → Extensions**, click **Advanced settings**, find the **Extension Developer** section, and click **Install Extension…**. Select the downloaded `.mcpb`. (On macOS/Windows, double-clicking the `.mcpb` file may also trigger the installer.)\n3. Fill in your Skylight email, password, frame ID, and timezone when prompted.\n4. That's it — the Skylight tools are available in Claude Desktop.\n\nNo Node.js install or config editing required. Credentials are stored securely by Claude Desktop.\n\n#### Option 2: npm package\n\n**mcp.json:**\n```json\n{\n  \"mcpServers\": {\n    \"skylight\": {\n      \"command\": \"npx\",\n      \"args\": [\"@drpottsy/skylight-mcp\"],\n      \"env\": {\n        \"SKYLIGHT_EMAIL\": \"your_email@example.com\",\n        \"SKYLIGHT_PASSWORD\": \"your_password\",\n        \"SKYLIGHT_FRAME_ID\": \"your_frame_id\"\n      }\n    }\n  }\n}\n```\n\n**Claude Code:**\n```bash\nclaude mcp add skylight npx @drpottsy/skylight-mcp \\\n  -e SKYLIGHT_EMAIL=your_email@example.com \\\n  -e SKYLIGHT_PASSWORD=your_password \\\n  -e SKYLIGHT_FRAME_ID=your_frame_id\n```\n\n#### Option 3: From source\n\n```bash\ngit clone https://github.com/pottsy17/skylight-mcp.git\ncd skylight-mcp && npm install && npm run build\n```\n\nThen use in mcp.json:\n```json\n{\n  \"mcpServers\": {\n    \"skylight\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/skylight-mcp/dist/index.js\"],\n      \"env\": {\n        \"SKYLIGHT_EMAIL\": \"your_email@example.com\",\n        \"SKYLIGHT_PASSWORD\": \"your_password\",\n        \"SKYLIGHT_FRAME_ID\": \"your_frame_id\"\n      }\n    }\n  }\n}\n```\n\n### Instructions for AI\n\nCopy this into your AI's custom instructions or system prompt:\n\n> You have access to the Skylight MCP server. Skylight is a smart family calendar display that shows calendars, chores, grocery lists, meals, and rewards. Use the Skylight tools to help manage family schedules and organization.\n>\n> Tips:\n> - Call `get_family_members` before assigning chores to get member names\n> - Grocery items default to the main grocery list if no list specified\n> - Dates accept \"today\", \"tomorrow\", day names, or YYYY-MM-DD format\n> - Some tools (rewards, meals, photos) require Skylight Plus subscription\n\n## Prerequisites\n\n- Node.js 20+\n- A Skylight account with an active subscription\n- Your Skylight Frame ID (see [Finding your Frame ID](#finding-your-frame-id))\n\n## Authentication\n\nThe MCP server supports two authentication methods:\n\n### Option 1: Email/Password (Recommended)\n\nUse your Skylight account credentials. The server automatically follows Skylight's web OAuth login flow and manages the returned bearer token for you.\n\n```env\nSKYLIGHT_EMAIL=your_email@example.com\nSKYLIGHT_PASSWORD=your_password\nSKYLIGHT_FRAME_ID=your_frame_id\n```\n\n### Option 2: Manual Token (Legacy)\n\nCapture a bearer or basic token from Skylight traffic using a proxy tool.\n\n```env\nSKYLIGHT_TOKEN=your_token_here\nSKYLIGHT_FRAME_ID=your_frame_id\nSKYLIGHT_AUTH_TYPE=bearer\n```\n\n### Finding your Frame ID\n\nYou still need to find your frame ID (the household identifier):\n\n1. Use a proxy tool ([Proxyman](https://proxyman.io/), [Charles](https://www.charlesproxy.com/), or [mitmproxy](https://mitmproxy.org/))\n2. Capture any API request from the Skylight app\n3. Look at the URL path: `/api/frames/{frameId}/...`\n4. Example: `/api/frames/abc123/chores` → frame ID is `abc123`\n\n## Configuration\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `SKYLIGHT_EMAIL` | Option 1 | Your Skylight account email |\n| `SKYLIGHT_PASSWORD` | Option 1 | Your Skylight account password |\n| `SKYLIGHT_TOKEN` | Option 2 | Your captured API token (if not using email/password) |\n| `SKYLIGHT_AUTH_TYPE` | No | `bearer` (default) or `basic` (for manual token) |\n| `SKYLIGHT_FRAME_ID` | Yes | Your household frame ID |\n| `SKYLIGHT_TIMEZONE` | No | Default timezone (default: `America/New_York`) |\n\n### Auth Notes\n\n- Email/password auth no longer uses the legacy `/api/sessions` token flow.\n- The server now reproduces the Skylight web login flow and exchanges the resulting authorization code for a bearer token.\n- Manual token auth still works if you prefer to provide a captured token directly.\n\n### Example .env file:\n\n```env\n# Email/password auth (recommended)\nSKYLIGHT_EMAIL=your_email@example.com\nSKYLIGHT_PASSWORD=your_password\nSKYLIGHT_FRAME_ID=your_frame_id\nSKYLIGHT_TIMEZONE=America/New_York\n```\n\n## Available Tools\n\n### Calendar Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_calendar_events` | Get calendar events for a date range |\n| `get_source_calendars` | List connected calendar sources (Google, iCloud, etc.) |\n| `create_calendar_event` | Create one event (names or IDs for assignment) |\n| `create_calendar_events` | Bulk-create up to 200 events in one call |\n| `update_calendar_event` / `delete_calendar_event` | Update or remove events |\n\n### Chore Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_chores` | Get chores with optional filters (date, assignee, status) |\n| `create_chore` | Create a new chore with optional recurrence |\n\n### List Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_lists` | Get all available lists |\n| `get_list_items` | Get items from a specific list |\n\n### Task Tools\n\n| Tool | Description |\n|------|-------------|\n| `create_task` | Add a task to the task box |\n\n### Family Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_family_members` | Get family member profiles (with category IDs) |\n| `get_messages` | Read the frame's message/photo feed |\n| `get_frame_info` | Get household/frame information |\n| `get_devices` | List Skylight devices |\n\n### Reward Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_rewards` | Get available rewards |\n| `get_reward_points` | Get reward points balance |\n\n## Example Queries\n\nOnce configured, you can ask Claude things like:\n\n- \"What's on my calendar today?\"\n- \"What chores do I need to do this week?\"\n- \"Add 'take out trash' to my chores for tomorrow\"\n- \"What's on the grocery list?\"\n- \"Add milk to my task list\"\n- \"Who are the family members on Skylight?\"\n- \"How many reward points does each person have?\"\n\n## Development\n\n```bash\n# Run in development mode (with hot reload)\nnpm run dev\n\n# Build\nnpm run build\n\n# Run tests\nnpm test\n\n# Type check\nnpm run typecheck\n```\n\n## API Documentation\n\nThis MCP server is built on top of the reverse-engineered Skylight API. The API endpoints are documented in the upstream [skylight-api](https://github.com/TheEagleByte/skylight-api) project (maintained separately by TheEagleByte), which converts browser network traffic (HAR files) into an OpenAPI specification.\n\n**Upstream API Resources** (hosted by the skylight-api project):\n- [Interactive API Docs (Swagger UI)](https://theeaglebyte.github.io/skylight-api/swagger.html)\n- [API Reference (ReDoc)](https://theeaglebyte.github.io/skylight-api/redoc.html)\n- [OpenAPI Specification](https://theeaglebyte.github.io/skylight-api/openapi/openapi.yaml)\n\nIf you discover new API endpoints or find issues with the API documentation itself, please contribute to the upstream [skylight-api](https://github.com/TheEagleByte/skylight-api) repository. For MCP server issues, use this repo's [issue tracker](https://github.com/pottsy17/skylight-mcp/issues).\n\n## Contributing\n\nContributions are welcome! Here's how you can help:\n\n1. **Fork the repository** and create a feature branch\n2. **Make your changes** with clear, descriptive commits\n3. **Run tests** (`npm test`) and linting (`npm run lint`) before submitting\n4. **Open a pull request** with a description of your changes\n\n### Development Setup\n\n```bash\ngit clone https://github.com/pottsy17/skylight-mcp.git\ncd skylight-mcp\nnpm install\nnpm run dev  # Start with hot reload\n```\n\n### Areas for Contribution\n\n- Adding support for new Skylight API endpoints\n- Improving error handling and edge cases\n- Enhancing documentation\n- Writing additional tests\n\n## Security & Privacy\n\nWhen you install the `.mcpb` in Claude Desktop, you'll see a warning that the extension \"can view everything on your computer.\" This is a blanket warning Claude Desktop shows for **every locally-installed MCP server**, regardless of what the server actually does. MCP servers run as ordinary Node.js processes with the same access as any program you launch.\n\n**What this server actually accesses:**\n\n- Reads the environment variables you configure (`SKYLIGHT_EMAIL`, `SKYLIGHT_PASSWORD`, `SKYLIGHT_FRAME_ID`, `SKYLIGHT_TIMEZONE`, or `SKYLIGHT_TOKEN`).\n- Reads its own `package.json` at startup to report the server version to Claude.\n- Makes outbound HTTPS requests to `app.ourskylight.com` to call the Skylight API on your behalf.\n\n**What this server does not do:**\n\n- Does not read, write, or scan files outside its own install directory.\n- Does not execute shell commands or spawn subprocesses.\n- Does not inspect other applications, processes, or network traffic.\n- Does not phone home to any server other than `app.ourskylight.com`.\n\n**Where your credentials go:**\n\n- When installed via `.mcpb`, Claude Desktop stores your Skylight email/password/frame ID in its secure secret store (macOS Keychain on Mac, credential vault on Windows) — not in a plaintext config file.\n- When installed manually via npm or source, credentials come from environment variables or a local `.env` file you control.\n- Credentials are only transmitted over HTTPS to Skylight's own authentication endpoints.\n- No telemetry, analytics, or third-party services.\n\n**Verifying the bundle you installed:**\n\n- All releases are published to npm with [OIDC-signed provenance](https://docs.npmjs.com/generating-provenance-statements), cryptographically linking each package to the GitHub Actions workflow run that built it.\n- Source code is fully open at [github.com/pottsy17/skylight-mcp](https://github.com/pottsy17/skylight-mcp); the server is under 3k lines of TypeScript and auditable.\n- Skylight's own privacy policy (how they handle the data you retrieve via this server) is at [skylightframe.com/privacy](https://www.skylightframe.com/privacy/).\n\n## Issues & Support\n\n- **Bug reports**: [Open an issue](https://github.com/pottsy17/skylight-mcp/issues/new) with steps to reproduce\n- **Feature requests**: [Open an issue](https://github.com/pottsy17/skylight-mcp/issues/new) describing the use case\n- **Questions**: [Start a discussion](https://github.com/pottsy17/skylight-mcp/discussions) or open an issue\n\nPlease include relevant details like your Node.js version, error messages, and configuration (with sensitive values redacted).\n\n## License\n\nMIT\n\n## Disclaimer\n\nThis is an unofficial integration. The Skylight API is reverse-engineered and may change without notice. Use at your own risk.\n","readmeFilename":"README.md"}