{"_id":"@creme-digital/creme-tasks-mcp","_rev":"3-758ab3635f71bab7a1c26f43ab1af8d8","name":"@creme-digital/creme-tasks-mcp","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@creme-digital/creme-tasks-mcp","version":"0.1.0","license":"MIT","_id":"@creme-digital/creme-tasks-mcp@0.1.0","maintainers":[{"name":"gopp-creme","email":"aaron@creme.digital"}],"homepage":"https://github.com/creme-digital/creme-tasks/tree/main/mcp-server#readme","bugs":{"url":"https://github.com/creme-digital/creme-tasks/issues"},"bin":{"creme-tasks-mcp":"dist/mcp-server/src/index.js"},"dist":{"shasum":"d4d8ec4cce9560661893dd8788e257d7abd342b4","tarball":"https://registry.npmjs.org/@creme-digital/creme-tasks-mcp/-/creme-tasks-mcp-0.1.0.tgz","fileCount":18,"integrity":"sha512-WAjNF2OsH+MR5Ul8dd6Ifq7NOLwfQttGhF1ZYlDn+mhFv2n7HtVhs6GZvLq5rM4Lkn82L3ekJHZpdKwANzSuJg==","signatures":[{"sig":"MEQCIFeDCbS/uHKAJxpKGDofdmsbKj5rjFI/AndJurocNYYJAiByA2X4Zz7FOhkzzheaGd1V0nhdzMuBjnyI8d22w2ZT3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43474},"main":"dist/mcp-server/src/index.js","type":"module","engines":{"node":">=18"},"scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/mcp-server/src/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gopp-creme","email":"aaron@creme.digital"},"repository":{"url":"git+https://github.com/creme-digital/creme-tasks.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"MCP server exposing Creme Tasks (tasks, projects, sprints, comments) to AI assistants.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.76","@supabase/supabase-js":"^2.57.2","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/creme-tasks-mcp_0.1.0_1776715633310_0.6309121665920496","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@creme-digital/creme-tasks-mcp","version":"0.1.1","license":"MIT","_id":"@creme-digital/creme-tasks-mcp@0.1.1","maintainers":[{"name":"gopp-creme","email":"aaron@creme.digital"}],"homepage":"https://github.com/creme-digital/creme-tasks/tree/main/mcp-server#readme","bugs":{"url":"https://github.com/creme-digital/creme-tasks/issues"},"bin":{"creme-tasks-mcp":"dist/mcp-server/src/index.js"},"dist":{"shasum":"42a2de831f5e1046de4383c2158e859d3e711519","tarball":"https://registry.npmjs.org/@creme-digital/creme-tasks-mcp/-/creme-tasks-mcp-0.1.1.tgz","fileCount":18,"integrity":"sha512-G0YB7K8LtCIlT0MmstpxqLCXAr2eZs9f0BiMmHGppIdaJXKcnmUyawD9x6E0PHvxAUPzROhLTAwR+E25LraDJw==","signatures":[{"sig":"MEUCIQCDEJTv2Rpe1zUKiWYj1TTDtmHT4nDISYhZjANAaXK7dwIgUxkb8XPnyz7j6ahr2cWgaFFbkMkicr8T7ai3EZxnFE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46737},"main":"dist/mcp-server/src/index.js","type":"module","engines":{"node":">=18"},"scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/mcp-server/src/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"gopp-creme","email":"aaron@creme.digital"},"repository":{"url":"git+https://github.com/creme-digital/creme-tasks.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"MCP server exposing Creme Tasks (tasks, projects, sprints, comments) to AI assistants.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.76","@supabase/supabase-js":"^2.57.2","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/creme-tasks-mcp_0.1.1_1776717575224_0.15842776812900605","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@creme-digital/creme-tasks-mcp","version":"0.2.0","description":"MCP server exposing Creme Tasks (tasks, projects, sprints, comments) to AI assistants.","license":"MIT","type":"module","bin":{"creme-tasks-mcp":"dist/mcp-server/src/index.js"},"main":"dist/mcp-server/src/index.js","repository":{"type":"git","url":"git+https://github.com/creme-digital/creme-tasks.git","directory":"mcp-server"},"homepage":"https://github.com/creme-digital/creme-tasks/tree/main/mcp-server#readme","bugs":{"url":"https://github.com/creme-digital/creme-tasks/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","start":"node dist/mcp-server/src/index.js","dev":"tsc --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","@supabase/supabase-js":"^2.57.2","zod":"^3.25.76"},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.4.0"},"engines":{"node":">=18"},"_id":"@creme-digital/creme-tasks-mcp@0.2.0","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-1taTap2442M10jVC7KDxU88sA4PvQjxNMoS5eIvK9R3cxa8YxuWfcuGamMZxHlfzyDLDiVC68gv1nQEdJ9tulw==","shasum":"a577682b4ec395c00b0bf91f0d1242dee375aaba","tarball":"https://registry.npmjs.org/@creme-digital/creme-tasks-mcp/-/creme-tasks-mcp-0.2.0.tgz","fileCount":20,"unpackedSize":52568,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCjj3G7P6pWpJZkYySSwfAz5rZE5IM0U06+YHG7+rXtMwIgSfVuq3kPMbrHxks9TnnfESMUyBV5VMNrVdRKWYq5kRk="}]},"_npmUser":{"name":"gopp-creme","email":"aaron@creme.digital"},"directories":{},"maintainers":[{"name":"gopp-creme","email":"aaron@creme.digital"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/creme-tasks-mcp_0.2.0_1776783948327_0.11451138754334411"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T20:07:13.230Z","modified":"2026-04-21T15:05:48.628Z","0.1.0":"2026-04-20T20:07:13.449Z","0.1.1":"2026-04-20T20:39:35.352Z","0.2.0":"2026-04-21T15:05:48.478Z"},"bugs":{"url":"https://github.com/creme-digital/creme-tasks/issues"},"license":"MIT","homepage":"https://github.com/creme-digital/creme-tasks/tree/main/mcp-server#readme","repository":{"type":"git","url":"git+https://github.com/creme-digital/creme-tasks.git","directory":"mcp-server"},"description":"MCP server exposing Creme Tasks (tasks, projects, sprints, comments) to AI assistants.","maintainers":[{"name":"gopp-creme","email":"aaron@creme.digital"}],"readme":"# Creme Tasks MCP Server\n\nA local [Model Context Protocol](https://modelcontextprotocol.io) server that exposes Creme Tasks to AI assistants (Claude Code, Cursor, Zed, Continue, etc.) so they can read, create, and update tasks during your work.\n\nThe server runs on **your machine** over **stdio** and authenticates to Supabase using **your own session token** — so every action respects the same Row-Level Security policies the app enforces. An AI assistant connected through this server can only do what you can already do.\n\n## What it exposes\n\n**Tools**\n\n| Name | Purpose |\n|------|---------|\n| `list_tasks` | Filter tasks by project, sprint, assignee, status, priority, search term |\n| `get_task` | Fetch one task (by `id` or `display_id`) with joins and recent comments |\n| `create_task` | Create a task — `created_by` is set from your session |\n| `update_task` | Partial update (status, assignee, due date, etc.) |\n| `soft_delete_task` | Set `deleted_at = now()` |\n| `list_projects` / `get_project` | Read-only project queries |\n| `list_sprints` / `get_sprint` | Read-only sprint queries, with status counts on `get_sprint` |\n| `list_task_comments` / `create_task_comment` | Read and post comments |\n\n**Resources**\n\n- `creme-tasks://sprints/current` — active sprints across all non-archived projects\n- `creme-tasks://tasks/assigned-to-me` — your open tasks, priority then due date\n\n## Install\n\nThe server is published to npm as [`@creme-digital/creme-tasks-mcp`](https://www.npmjs.com/package/@creme-digital/creme-tasks-mcp). You do **not** need to clone this repo — your MCP client will download and run it via `npx` (see the wiring sections below).\n\n<details>\n<summary>Build from source (for contributors)</summary>\n\n```bash\ncd mcp-server\nnpm install\nnpm run build\n```\n\nProduces `dist/mcp-server/src/index.js`. Use this path as `command: node` / `args: [<path>]` in your MCP client config instead of the `npx` invocation shown below.\n\n</details>\n\n## Auth setup\n\nThe server reads two env vars as a **one-time bootstrap**:\n\n- `SUPABASE_ACCESS_TOKEN`\n- `SUPABASE_REFRESH_TOKEN`\n\nAfter first launch the server persists the rotating session to `~/.config/creme-tasks-mcp/` (chmod 0600) and handles refresh on its own. Restarts re-use the stored session — you don't need to re-paste tokens unless you sign out of the app or the session is revoked server-side.\n\n**Recommended:** log into the Creme Tasks app, open **Settings → Integrations**, and click **Copy MCP Tokens**. This puts a ready-to-paste snippet on your clipboard:\n\n```\nSUPABASE_ACCESS_TOKEN=...\nSUPABASE_REFRESH_TOKEN=...\n```\n\nDrop those values into the `env` block of the config below.\n\n<details>\n<summary>Fallback: pull the tokens from DevTools</summary>\n\nIf the Settings button is unavailable (older build, remote session, etc.):\n\n1. Log into the Creme Tasks app.\n2. Open DevTools → Application → Local Storage → the Supabase entry (key looks like `sb-ujktrbyersevttfqcbzd-auth-token`).\n3. Copy `access_token` and `refresh_token` out of the JSON.\n\n</details>\n\n## Wire into Claude Code\n\nAdd this to your `~/.claude.json` (or project-level `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"creme-tasks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@creme-digital/creme-tasks-mcp\"],\n      \"env\": {\n        \"SUPABASE_ACCESS_TOKEN\": \"<paste>\",\n        \"SUPABASE_REFRESH_TOKEN\": \"<paste>\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Code and run `/mcp` — you should see `creme-tasks: connected`.\n\n## Wire into Cursor\n\nAdd to `~/.cursor/mcp.json` (or the project `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"creme-tasks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@creme-digital/creme-tasks-mcp\"],\n      \"env\": {\n        \"SUPABASE_ACCESS_TOKEN\": \"<paste>\",\n        \"SUPABASE_REFRESH_TOKEN\": \"<paste>\"\n      }\n    }\n  }\n}\n```\n\n## Smoke test\n\nUse the official MCP inspector:\n\n```bash\nSUPABASE_ACCESS_TOKEN=... SUPABASE_REFRESH_TOKEN=... \\\n  npx @modelcontextprotocol/inspector npx -y @creme-digital/creme-tasks-mcp\n```\n\nA browser UI opens — pick `list_tasks`, run it with no args, and you should see your recent tasks.\n\n## Releasing (maintainers)\n\nManual publish from a clean checkout of `main`:\n\n```bash\ncd mcp-server\nnpm version patch   # or minor / major\nnpm publish         # prepublishOnly runs the build; publishConfig sets access: public\ngit push --follow-tags\n```\n\nYou need to be logged in (`npm whoami`) and a member of the `@creme-digital` org with publish rights.\n\n## What's NOT here (yet)\n\n- Hosted/remote MCP (would need OAuth + an edge function).\n- Mutations on projects, sprints, teams.\n- Wrappers for the AI edge functions (`generate-task-prompt`, `generate-tasks-from-text`) — candidates for v2.\n\n## How RLS applies\n\nBecause the server authenticates as you, the Supabase RLS policies on `tasks` / `task_comments` enforce the same rules you see in the app:\n\n- SELECT: any authenticated user, active rows only\n- INSERT tasks: must set `created_by = auth.uid()` (the server does this for you)\n- UPDATE tasks: assignee, creator, manager, or admin\n- DELETE (soft): manager or admin\n\nIf an AI tries something you can't do, the Supabase error is returned verbatim and no change is made.\n","readmeFilename":"README.md"}