{"_id":"@brandcast_app/cozi-mcp-server","_rev":"6-ac5e6e8eeccf0bdcc60430e5c3e8f723","name":"@brandcast_app/cozi-mcp-server","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"@brandcast_app/cozi-mcp-server","version":"0.1.0","keywords":["mcp","model-context-protocol","cozi","family-organizer","shopping-list","todo","claude","ai-tools"],"author":{"name":"BrandCast Team"},"license":"MIT","_id":"@brandcast_app/cozi-mcp-server@0.1.0","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"homepage":"https://github.com/BrandCast-Signage/cozi-mcp-server#readme","bugs":{"url":"https://github.com/BrandCast-Signage/cozi-mcp-server/issues"},"bin":{"cozi-mcp-server":"dist/index.js"},"dist":{"shasum":"ce4b8cfeb872f8d30fb8729a7d54091af3bb11f2","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-0.1.0.tgz","fileCount":7,"integrity":"sha512-BC5nlTW5Qr2qlXMq4z/2P0h7KNSWiZdTYmby5XYKW3wbdtBiRrEoaVAiv5TDw33aSAEmIb7zJ1f/jysVkwcs+A==","signatures":[{"sig":"MEYCIQCz0ayTFtoPtX5vDA8y1xBuqMMi06u3Jsl0u59iUXWqOwIhAMggOZtHDWPiMw0yBzDUF6dr5MfjWd/FWmMY5C3Rmf3e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28624},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b67a4d4513706b8d2cdd1d83357843c87cdf1d42","scripts":{"build":"tsc","watch":"tsc --watch","prepare":"npm run build"},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"repository":{"url":"git+https://github.com/BrandCast-Signage/cozi-mcp-server.git","type":"git"},"_npmVersion":"10.9.3","description":"MCP server for Cozi Family Organizer - Manage shopping lists and todos through Claude","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","@brandcast_app/cozi-api-client":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cozi-mcp-server_0.1.0_1759710949981_0.007843300686394716","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@brandcast_app/cozi-mcp-server","version":"1.0.1","_id":"@brandcast_app/cozi-mcp-server@1.0.1","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"dist":{"shasum":"9231818b6757d11aa9f1cfadc6bab5e8dbe34288","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-1.0.1.tgz","fileCount":10,"integrity":"sha512-NJzse+mgpindFX1TM1F238wP6z00ppb2FS4aQZnEYd7iM7CXN5e+5NbdWL9SdZUBLAJS0QOelt9GO75lxt6CIQ==","signatures":[{"sig":"MEYCIQCgtIesPxCuoOcw/17x2lMj61+5FPxbdxVlZtfv02ptPgIhAPk5tzldAMMM9isTCLOcpnwNtE4m+6I5JrIYOMIueu9M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32737},"main":"src/index.ts","gitHead":"56071ba4641b8e67133554d2ff6c7298dd9ee152","scripts":{"dev":"wrangler dev","build":"tsc --noEmit","deploy":"wrangler deploy","type-check":"tsc --noEmit"},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"_npmVersion":"11.6.2","description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"wrangler":"^3.93.0","typescript":"^5.7.2","@cloudflare/workers-types":"^4.20241127.0"},"_npmOperationalInternal":{"tmp":"tmp/cozi-mcp-server_1.0.1_1764134534489_0.991257835515303","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@brandcast_app/cozi-mcp-server","version":"1.0.2","_id":"@brandcast_app/cozi-mcp-server@1.0.2","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"bin":{"cozi-mcp-server":"dist/cli.js"},"dist":{"shasum":"42ae9302d0b871518029ccecb38881af96a2424e","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-1.0.2.tgz","fileCount":16,"integrity":"sha512-tc47pttmU7DJ7lKIEN3LE6jHgxp3OEYHB0LpEddc9eFHSuq2vCbU4u1OWWVoxWumBqjI/AIWsdKuTAXasRN4ww==","signatures":[{"sig":"MEYCIQCYbh70DGMFQEo7x4EiFNMBZ5eYR7zpY4fNaNEozf4c6gIhANFERrzUmJZyBWvpiBUDTGLsg31xW/aI/raLJHweseGW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60808},"main":"src/index.ts","type":"module","gitHead":"91093641a3359c2b1903b29c66efd0e34c575ac0","scripts":{"dev":"wrangler dev","build":"tsc --noEmit","deploy":"wrangler deploy","build:cli":"tsc -p tsconfig.cli.json","type-check":"tsc --noEmit"},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"_npmVersion":"11.6.2","description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"wrangler":"^3.93.0","typescript":"^5.7.2","@types/node":"^22.13.5","@cloudflare/workers-types":"^4.20241127.0"},"_npmOperationalInternal":{"tmp":"tmp/cozi-mcp-server_1.0.2_1764135899860_0.4394254690420001","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@brandcast_app/cozi-mcp-server","version":"1.0.3","_id":"@brandcast_app/cozi-mcp-server@1.0.3","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"bin":{"cozi-mcp-server":"dist/cli.js"},"dist":{"shasum":"5e8dc3eae8e8d57ea2943adfdc9b755955f56f78","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-1.0.3.tgz","fileCount":16,"integrity":"sha512-w6ZQdArv2AvLZgjHEbKcMjD1tA2QSMz8qkLzRZGTMSrlTrFBHavSYrJURACjFDmS+SR+E+iTGl1daZh80KKmJg==","signatures":[{"sig":"MEYCIQC5N9xBWnIQB2MW0+VJmnLN5qrV+NG8x5yUHcVGP+Z8RwIhALyU0miCYQsgAw2rHLBdwutn4xZfS2xy+Fxm8G0L3Jmk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60808},"main":"src/index.ts","type":"module","gitHead":"1ec569eb0dd0420b90bc9fcf9d8a2ad5de1445cc","scripts":{"dev":"wrangler dev","build":"tsc --noEmit","deploy":"wrangler deploy","build:cli":"tsc -p tsconfig.cli.json","type-check":"tsc --noEmit"},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"_npmVersion":"11.6.2","description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"wrangler":"^3.93.0","typescript":"^5.7.2","@types/node":"^22.13.5","@cloudflare/workers-types":"^4.20241127.0"},"_npmOperationalInternal":{"tmp":"tmp/cozi-mcp-server_1.0.3_1764136052136_0.7246658455756667","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@brandcast_app/cozi-mcp-server","version":"1.0.4","_id":"@brandcast_app/cozi-mcp-server@1.0.4","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"bin":{"cozi-mcp-server":"dist/cli.js"},"dist":{"shasum":"2ef26661238f5036e3cbdb3a00e729b5d689d8e1","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-1.0.4.tgz","fileCount":16,"integrity":"sha512-UwaN7RZMTY69PiqG6P814TduueghPsc+DblPv34gIBQLZ/3HtzNOlodxgQol8CFmvPBGL6lCPJHtztYOrzz8Ig==","signatures":[{"sig":"MEUCIQDnDN+acu7AQYcZGyDkP+61ZcBGVEYplC12Ngi7aCgOwgIgZsdUTa8489zqiZAHAK+ObqmC49u+VyNk/te/w7tMB9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60806},"main":"src/index.ts","type":"module","gitHead":"e0bed41107d783955f44ffb2fb43e260a8a7f5f0","scripts":{"dev":"wrangler dev","build":"tsc --noEmit","deploy":"wrangler deploy","build:cli":"tsc -p tsconfig.cli.json","type-check":"tsc --noEmit"},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"_npmVersion":"11.6.2","description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"wrangler":"^3.93.0","typescript":"^5.7.2","@types/node":"^22.13.5","@cloudflare/workers-types":"^4.20241127.0"},"_npmOperationalInternal":{"tmp":"tmp/cozi-mcp-server_1.0.4_1764136285984_0.9489789716016672","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@brandcast_app/cozi-mcp-server","version":"1.1.0","description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","type":"module","main":"src/index.ts","bin":{"cozi-mcp-server":"dist/cli.js"},"scripts":{"build":"tsc --noEmit","build:cli":"tsc -p tsconfig.cli.json","dev":"wrangler dev","deploy":"wrangler deploy","type-check":"tsc --noEmit"},"dependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"devDependencies":{"@cloudflare/workers-types":"^4.20241127.0","@types/node":"^22.13.5","typescript":"^5.7.2","wrangler":"^3.93.0"},"gitHead":"18cbf75d2ac24e6fa46f5c6631e103484d9d0330","_id":"@brandcast_app/cozi-mcp-server@1.1.0","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-d0ns2Oqiy3YeSIBAtgWMB/NQ02rnt75XBBFLbqrqPYZuBjQNlj3qDInO9zwyQ4v59FlDpqZ7+8w4p9v3QAmCxw==","shasum":"072eecd175c47636b7e65d7bcf61189977da1d1f","tarball":"https://registry.npmjs.org/@brandcast_app/cozi-mcp-server/-/cozi-mcp-server-1.1.0.tgz","fileCount":16,"unpackedSize":71827,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCbsqjodzssWGPx8P5/Qsw3xjbpa/vc+B9jb8SwmrPbzgIgJBXfjnUX7/3Oky4u6Mu2KPvFQCcQL/BzngaOcvgYbqE="}]},"_npmUser":{"name":"jamieeduncan","email":"jamie@brandcast.app"},"directories":{},"maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cozi-mcp-server_1.1.0_1764137603397_0.21799528765224307"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-06T00:35:49.818Z","modified":"2025-11-26T06:13:23.840Z","0.1.0":"2025-10-06T00:35:50.180Z","1.0.1":"2025-11-26T05:22:14.680Z","1.0.2":"2025-11-26T05:45:00.024Z","1.0.3":"2025-11-26T05:47:32.352Z","1.0.4":"2025-11-26T05:51:26.170Z","1.1.0":"2025-11-26T06:13:23.628Z"},"description":"Cozi MCP Server - Remote Cloudflare Worker for Claude Desktop","maintainers":[{"name":"jamieeduncan","email":"jamie@brandcast.app"}],"readme":"# Cozi MCP Server\n\n[![npm version](https://badge.fury.io/js/%40brandcast_app%2Fcozi-mcp-server.svg)](https://badge.fury.io/js/%40brandcast_app%2Fcozi-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nModel Context Protocol (MCP) server for [Cozi Family Organizer](https://www.cozi.com/). Enables Claude and other MCP clients to manage shopping lists and todo lists through the Cozi API.\n\n## ⚠️ Important Disclaimer\n\n**This is an UNOFFICIAL MCP server.** Cozi does not provide a public API. This implementation uses the unofficial [@brandcast_app/cozi-api-client](https://www.npmjs.com/package/@brandcast_app/cozi-api-client) which is based on reverse engineering.\n\n**Use at your own risk:**\n- The API may change without notice\n- Your Cozi account could be suspended for using unofficial clients\n- This server is provided AS-IS with no warranties\n- Not affiliated with or endorsed by Cozi\n\n## Features\n\n- 📝 **List Management**: Create, read, and delete shopping/todo lists\n- ✅ **Item Operations**: Add, edit, complete, and remove items\n- 🔄 **Real-time Sync**: Changes are immediately reflected in Cozi\n- 🤖 **Claude Integration**: Use natural language to manage your Cozi lists\n- 🔐 **Secure**: Credentials stored in environment variables\n\n## Installation\n\n### Via npm (Recommended)\n\n```bash\nnpm install -g @brandcast_app/cozi-mcp-server\n```\n\n### Via npx (No installation)\n\n```bash\nnpx @brandcast_app/cozi-mcp-server\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/BrandCast-Signage/cozi-mcp-server.git\ncd cozi-mcp-server\nnpm install\nnpm run build\n```\n\n## Configuration\n\n### Claude Desktop\n\nAdd to your Claude Desktop config file:\n\n**MacOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"cozi\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@brandcast_app/cozi-mcp-server\"],\n      \"env\": {\n        \"COZI_USERNAME\": \"your@email.com\",\n        \"COZI_PASSWORD\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\nOr if installed globally:\n\n```json\n{\n  \"mcpServers\": {\n    \"cozi\": {\n      \"command\": \"cozi-mcp-server\",\n      \"env\": {\n        \"COZI_USERNAME\": \"your@email.com\",\n        \"COZI_PASSWORD\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variables\n\n- `COZI_USERNAME` (required): Your Cozi account email\n- `COZI_PASSWORD` (required): Your Cozi account password\n- `DEBUG` (optional): Set to \"true\" to enable debug logging\n\n## Available Tools\n\nThe server exposes the following MCP tools:\n\n### List Operations\n\n#### `cozi_get_lists`\nGet all Cozi lists (shopping and todo) with their items.\n\n**Returns:** Array of lists with items\n\n**Example:**\n```\nUser: Show me all my Cozi lists\n```\n\n#### `cozi_get_list`\nGet a specific list by ID with all its items.\n\n**Parameters:**\n- `listId` (string): The ID of the list\n\n**Example:**\n```\nUser: Show me the details of list abc123\n```\n\n#### `cozi_create_list`\nCreate a new Cozi list.\n\n**Parameters:**\n- `title` (string): The title of the new list\n- `type` (string): Either \"shopping\" or \"todo\"\n\n**Example:**\n```\nUser: Create a new shopping list called \"Costco Run\"\n```\n\n#### `cozi_delete_list`\nDelete a list permanently.\n\n**Parameters:**\n- `listId` (string): The ID of the list to delete\n\n**Example:**\n```\nUser: Delete the Costco Run list\n```\n\n### Item Operations\n\n#### `cozi_add_item`\nAdd a new item to a list.\n\n**Parameters:**\n- `listId` (string): The list ID\n- `text` (string): The item text\n\n**Example:**\n```\nUser: Add \"organic milk\" to my shopping list\n```\n\n#### `cozi_edit_item`\nEdit an existing item's text.\n\n**Parameters:**\n- `listId` (string): The list ID\n- `itemId` (string): The item ID\n- `text` (string): The new text\n\n**Example:**\n```\nUser: Change \"milk\" to \"whole milk\" in my shopping list\n```\n\n#### `cozi_mark_item_complete`\nMark an item as complete/done.\n\n**Parameters:**\n- `listId` (string): The list ID\n- `itemId` (string): The item ID\n\n**Example:**\n```\nUser: Mark \"milk\" as done\n```\n\n#### `cozi_mark_item_incomplete`\nMark an item as incomplete/not done.\n\n**Parameters:**\n- `listId` (string): The list ID\n- `itemId` (string): The item ID\n\n**Example:**\n```\nUser: Uncheck \"milk\" from my list\n```\n\n#### `cozi_remove_item`\nRemove an item from a list permanently.\n\n**Parameters:**\n- `listId` (string): The list ID\n- `itemId` (string): The item ID\n\n**Example:**\n```\nUser: Remove \"milk\" from my shopping list\n```\n\n## Usage Examples\n\n### With Claude Desktop\n\nOnce configured, you can interact with Cozi through natural language:\n\n**View Lists:**\n```\nYou: What's on my shopping list?\nClaude: [Uses cozi_get_lists to fetch and display your lists]\n```\n\n**Add Items:**\n```\nYou: Add bananas, apples, and bread to my shopping list\nClaude: [Uses cozi_add_item for each item]\n```\n\n**Manage Tasks:**\n```\nYou: I finished buying milk, mark it as done\nClaude: [Uses cozi_mark_item_complete]\n```\n\n**Create Lists:**\n```\nYou: Create a new todo list for weekend chores\nClaude: [Uses cozi_create_list]\n```\n\n## Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Watch Mode\n\n```bash\nnpm run watch\n```\n\n### Testing Locally\n\n1. Build the project:\n```bash\nnpm run build\n```\n\n2. Run the server:\n```bash\nCOZI_USERNAME=your@email.com COZI_PASSWORD=yourpass node dist/index.js\n```\n\n3. The server will start and wait for MCP protocol messages on stdin/stdout\n\n### Testing with MCP Inspector\n\n```bash\nnpx @modelcontextprotocol/inspector npx -y @brandcast_app/cozi-mcp-server\n```\n\nThen set environment variables in the inspector UI.\n\n## API Client\n\nThis server is built on top of [@brandcast_app/cozi-api-client](https://www.npmjs.com/package/@brandcast_app/cozi-api-client). If you need direct API access without MCP, use the client library directly.\n\n## Troubleshooting\n\n### Authentication Fails\n\n- Verify `COZI_USERNAME` and `COZI_PASSWORD` are correct\n- Check that your Cozi account is active\n- Try logging in to the Cozi website to verify credentials\n\n### Server Not Starting\n\n- Ensure Node.js >= 18.0.0 is installed\n- Check that environment variables are properly set\n- Enable debug mode: `DEBUG=true`\n\n### Tools Not Appearing in Claude\n\n- Restart Claude Desktop after configuration changes\n- Check config file syntax (valid JSON)\n- Verify the server path/command is correct\n\n## Security Notes\n\n- Store credentials securely in environment variables\n- Never commit credentials to version control\n- Consider using a dedicated Cozi account for automation\n- The server runs locally and does not send data anywhere except to Cozi\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Credits\n\n- Built with the [Model Context Protocol SDK](https://github.com/modelcontextprotocol)\n- Uses [@brandcast_app/cozi-api-client](https://www.npmjs.com/package/@brandcast_app/cozi-api-client)\n- Based on reverse engineering from [py-cozi](https://github.com/Wetzel402/py-cozi)\n\n## Related Projects\n\n- [cozi-api-client](https://github.com/BrandCast-Signage/cozi-api-client) - The underlying API client\n- [Model Context Protocol](https://modelcontextprotocol.io) - Learn more about MCP\n\n## Support\n\n- 🐛 [Report Issues](https://github.com/BrandCast-Signage/cozi-mcp-server/issues)\n- 💬 [Discussions](https://github.com/BrandCast-Signage/cozi-mcp-server/discussions)\n- 📖 [MCP Documentation](https://modelcontextprotocol.io/docs)\n\n","readmeFilename":"README.md"}