{"_id":"@aegisx/taskflow-mcp","_rev":"10-c1028011a9cffa7f04c12d29fd990273","name":"@aegisx/taskflow-mcp","dist-tags":{"latest":"1.0.6"},"versions":{"0.1.0":{"name":"@aegisx/taskflow-mcp","version":"0.1.0","_id":"@aegisx/taskflow-mcp@0.1.0","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"449381e46d9bbc637e07df2900c0979823767917","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-q9+ZCsXPaW9VKj2N73R6T66n765K9KXNRgXUMIVfUFYQQO2+bASKov5P4Oz7QAa8C3vi088mdj5BIdaoYyyEfQ==","signatures":[{"sig":"MEUCIQClHZrP1EVVGVkclhVt2910DnbxYBs7TQd4oSfu1OFABwIgMJLCsEuRqhJtgqYyhikMhAbepax2HqTSmJ6UHzdAKNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1707081},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"db65f3db56d76961f724cd16b2c35a2c08005191","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"11.6.0","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_0.1.0_1777109720401_0.7396909636802387","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aegisx/taskflow-mcp","version":"0.1.2","_id":"@aegisx/taskflow-mcp@0.1.2","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"3a8287db246b534b98183ea6d2c017e5867b3edc","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-0.1.2.tgz","fileCount":5,"integrity":"sha512-JidW93rKI+NoREPso3z8u1SUxyN7PYHewDwxQ0xeNz5LvdzUNrY20BXgMfDbtcJ6Rl+hYJF+uSl4X91/pYXsFA==","signatures":[{"sig":"MEQCIFPtE5QotcOpDBvkeBTQWgrpbSoEqE3wbysFSzmtUKXlAiAd+ccWInpCoNGy3nypjPwzIJZLX9Yae5XsA8TuiZlFNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1709612},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8fd6f7a36b1c1c53999f63d58d6a8c058bc2cdbd","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"11.6.0","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_0.1.2_1777110609535_0.3493458277674131","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aegisx/taskflow-mcp","version":"0.1.4","_id":"@aegisx/taskflow-mcp@0.1.4","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"f17815f310b22b973ed956abe8f6a43acbe34ba1","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-0.1.4.tgz","fileCount":5,"integrity":"sha512-CDq7JntwjyltKMk2ZAmcvSCI0lyFKnTL2gyoZOkA9jxS7h9BZO11ngkzXEPw98ibjmsyRLjUjjvtsZwUxkoqiQ==","signatures":[{"sig":"MEQCIBQdiK7PU29jgrAAMC/lCsrD0wjPqNzcXyUnkY/J5J1EAiAecYl/mJ7MnCWwilSIe0/0VCtXV6uFJFb2urDSgIuUKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1709612},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e0558c62cf234ca328a7c1dfb6217c26011bb583","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_0.1.4_1777111244935_0.9397012915550427","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aegisx/taskflow-mcp","version":"0.2.0","_id":"@aegisx/taskflow-mcp@0.2.0","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"6c60f4b299854088f03aed2e63ed2282789aa007","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-0.2.0.tgz","fileCount":5,"integrity":"sha512-lGTQuWpW5BoNndCcIVi/mWLqmdu5fY5oynay4zBbM2vLHYJ/hFfdCtxqJlV1ltsIK6qbqalnyijDs2DIUfHnWg==","signatures":[{"sig":"MEUCIQCKTpgIqPEzVAKusZGuXRemEmm3qctciIBtpBxIn6KscgIgQbW6q19+z27mFUVS+s+qw0Zff3ZojW54HQzcbX+Jqqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1720599},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9f0cea1b6a921cab65e0de3b8d2a5cab0ca8e31f","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_0.2.0_1777120676112_0.7366405519757739","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aegisx/taskflow-mcp","version":"1.0.0","_id":"@aegisx/taskflow-mcp@1.0.0","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"e919c29c87a914bb1c9d65b106661e5904f25a15","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.0.tgz","fileCount":5,"integrity":"sha512-9A/EULkpiKqJyl5Ivh/VHZJjOYuRFe00xKQOfTcW2HNVlIVyvp6FpRyGZW+mHc63P8HRxM+2/+a9TyFMdqdrlQ==","signatures":[{"sig":"MEQCIA+ZbrcpSgOfDzA6XGasEuRDWTT7HAqzn+uwHQmlcnKhAiAbIASXF8dUIGRx5FjdXulZmD5lpH4zMBZPVmSpPar9vQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2304448},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"028a01f01c96dcb1af70dfb0a1aa260ee6a7ef08","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vitest":"^2.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_1.0.0_1777209178942_0.2578669466341441","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aegisx/taskflow-mcp","version":"1.0.1","_id":"@aegisx/taskflow-mcp@1.0.1","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"801463b8e35c2bada35b125ca2928becb50eee1f","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.1.tgz","fileCount":5,"integrity":"sha512-OQqD+7qO1USPBN4f142MrmksdGq8w1HanmTAsl8uXUwGc6aMaRyBK4xGncrmuAUhoVuq3Pw4F4s7VdUX0cabuA==","signatures":[{"sig":"MEYCIQDvXI12h/Xnf3Wl/q0p4aOReKycu8sbPAHqTcrcopzaXwIhAPBugTc0VLZ5XADcd+r4yRh007r0z1C5pKqPEUgPym08","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2308853},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"87ba34149c61ba93454650e354abac02aaa3c1b0","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vitest":"^2.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_1.0.1_1777212133324_0.37002004782365594","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aegisx/taskflow-mcp","version":"1.0.2","_id":"@aegisx/taskflow-mcp@1.0.2","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"436fbfc00f03e928cc89b257736b020c0544f128","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.2.tgz","fileCount":5,"integrity":"sha512-aYPHeVcZQRceMghXkZAcGmt6owaRP243y4bGAxi0ov4JGe4TSTZjiRqdDs5WYcREKFmaljF/FlxKi8TIUBg7vg==","signatures":[{"sig":"MEUCIEdTnJO6id4PFcTHZWeIj4MBUirQfUQZiD1LCzO9A/uBAiEAhIKxdlJU9HGW57iBcGL4CUBNDQiO1z1ZPD8C/Eh04PU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2309018},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"424604c60bccb206364010b9389ed25d37451def","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"11.6.0","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vitest":"^2.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_1.0.2_1777214448604_0.0845481023469501","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aegisx/taskflow-mcp","version":"1.0.3","_id":"@aegisx/taskflow-mcp@1.0.3","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"34f73096a04fc61fcf0cc69fe2697552fcd1924d","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.3.tgz","fileCount":4,"integrity":"sha512-KKtblS1EPhktRuitHj/JCpuRQt4592U5G5fedpasCFmarIk+5mlOWRI1JvtnR9ObwQcchWUSoCalxb732zepEA==","signatures":[{"sig":"MEQCIGomrR1AnLq3tGSZpjqLwFrT8T3IHKrqR+wy1z9JcJQ4AiAsrfRq0EH8nlcqalHGkZiax0DLLuALzwTDELOM33kUcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2317493},"type":"module","engines":{"node":">=16"},"gitHead":"7c1ccaeb58362fdfe6025d26c5e5c5a054943b95","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs","prepack":"pnpm bundle"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","undici":"^5.28.0","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vitest":"^2.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_1.0.3_1777282579201_0.6071886426296225","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aegisx/taskflow-mcp","version":"1.0.5","_id":"@aegisx/taskflow-mcp@1.0.5","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"bin":{"taskflow-mcp":"dist/bundle.js"},"dist":{"shasum":"079f5f3bef2654dd8543cd50c2f09fbf18961ac6","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.5.tgz","fileCount":4,"integrity":"sha512-vDfslX2YO9UGNsjnk1xeS3gZcWYzpkmo1CgXiQuJ4grqM2O4mKMk6JN2MmW9yZn498IhDfgZqnv5j3JJRBLl6w==","signatures":[{"sig":"MEUCIQCbj7JNjRpgyhQgzuVvvz0+bmmb4Dd26oeWdoNETG/JgQIgLww/ev3rLDS3/4EcCFVCRahnDCF5OyJCdSScHeK+Yi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2515873},"type":"module","_from":"file:aegisx-taskflow-mcp-1.0.5.tgz","engines":{"node":">=16"},"scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/bundle.js","bundle":"tsc && node esbuild.config.mjs"},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"_resolved":"/private/var/folders/kx/5y4s206s67bb9s509ld1c_zm0000gn/T/970206b0c3c239809030fd57dc43aa20/aegisx-taskflow-mcp-1.0.5.tgz","_integrity":"sha512-vDfslX2YO9UGNsjnk1xeS3gZcWYzpkmo1CgXiQuJ4grqM2O4mKMk6JN2MmW9yZn498IhDfgZqnv5j3JJRBLl6w==","_npmVersion":"11.6.0","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.23.8","undici":"^5.28.0","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vitest":"^2.0.0","esbuild":"^0.24.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/taskflow-mcp_1.0.5_1777685610316_0.6417751374429408","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aegisx/taskflow-mcp","version":"1.0.6","description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","type":"module","bin":{"taskflow-mcp":"dist/bundle.js"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","undici":"^5.28.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^20.0.0","esbuild":"^0.24.0","tsx":"^4.0.0","typescript":"^5.0.0","vitest":"^2.0.0"},"engines":{"node":">=16"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","bundle":"tsc && node esbuild.config.mjs","dev":"tsx watch src/index.ts","start":"node dist/bundle.js","test":"vitest run"},"_id":"@aegisx/taskflow-mcp@1.0.6","_integrity":"sha512-ZcVCHW69+0rTka1HguD7o+Mj0wJrPCHrfRCW8ijpaqYb9kSKQX5oDM9QLo8UmXuUQMHT199o9xHMxNi21G5v8A==","_resolved":"/private/var/folders/kx/5y4s206s67bb9s509ld1c_zm0000gn/T/e3c8d96d5ec2cb2fe269000a96eceeaa/aegisx-taskflow-mcp-1.0.6.tgz","_from":"file:aegisx-taskflow-mcp-1.0.6.tgz","_nodeVersion":"22.19.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-ZcVCHW69+0rTka1HguD7o+Mj0wJrPCHrfRCW8ijpaqYb9kSKQX5oDM9QLo8UmXuUQMHT199o9xHMxNi21G5v8A==","shasum":"564582d9c5ccb9cb15a6ba62294e88c701ee7325","tarball":"https://registry.npmjs.org/@aegisx/taskflow-mcp/-/taskflow-mcp-1.0.6.tgz","fileCount":4,"unpackedSize":2533195,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC31Fry5cbQMnuBYP2i+j9cX1mNCTeAfiTrWEaaON1RTAIgKZd21sv/Hd7NykDAoPAAQjuUHAslf9lSek5FZMdYe+M="}]},"_npmUser":{"name":"dixonsatit","email":"dixonsatit@gmail.com"},"directories":{},"maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/taskflow-mcp_1.0.6_1777686799050_0.7275753867799899"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T09:35:20.272Z","modified":"2026-05-02T01:53:19.346Z","0.1.0":"2026-04-25T09:35:20.600Z","0.1.2":"2026-04-25T09:50:09.724Z","0.1.4":"2026-04-25T10:00:45.093Z","0.2.0":"2026-04-25T12:37:56.305Z","1.0.0":"2026-04-26T13:12:59.087Z","1.0.1":"2026-04-26T14:02:13.574Z","1.0.2":"2026-04-26T14:40:48.792Z","1.0.3":"2026-04-27T09:36:19.381Z","1.0.5":"2026-05-02T01:33:30.477Z","1.0.6":"2026-05-02T01:53:19.213Z"},"description":"MCP server exposing TaskFlow as tools for Claude / other MCP clients","maintainers":[{"name":"dixonsatit","email":"dixonsatit@gmail.com"}],"readme":"# @aegisx/taskflow-mcp\n\nMCP (Model Context Protocol) server that lets Claude — in Claude Desktop, Claude Code, or any MCP client — operate the full TaskFlow surface mid-conversation: work items, meetings, incidents, vendors, sprints, KB articles, RFCs, approvals, time tracking, and more.\n\n**v1.0 — 254 tools across 32 domain groups.** See the matrix below for what's covered.\n\n## Tool coverage\n\n| Domain | Module file | Tools | What it covers |\n|---|---|---:|---|\n| Work items | `workitems.ts` | 21 | create / get / list / update / status transition / delete-restore-purge / subtasks / history / comments / bulk update / links / reactions / pending / parse-import-export |\n| Meetings | `meetings.ts` | 17 | meeting CRUD + attendees + links (incl. Miro) + attachments — full minutes flow |\n| Incidents | `incidents.ts` | 6 | open / list / get / update / append-timeline / single transition tool (acknowledge → identify → monitor → resolve → postmortem → close → reopen) |\n| Vendors | `vendors.ts` | 9 | vendor CRUD + visit CRUD (post-visit minutes / follow-ups) |\n| RFCs | `rfcs.ts` | 5 | list / get / create / update / decide (submit→approve→reject→start→complete) |\n| Sprints | `sprints.ts` | 10 | sprint CRUD + transitions + items + metrics + hill-chart |\n| Retros | `retros.ts` | 6 | get / create / update / vote / auto-import / publish-to-KB |\n| KB | `kb.ts` | 21 | category CRUD + article CRUD + trash/restore + feedback + stats + work-item links / entity refs / related-articles |\n| Service Desks | `service-desks.ts` | 10 | desk CRUD + member CRUD + my-desks |\n| Approvals | `approvals.ts` | 4 | list / create-chain / decide / cancel |\n| Directives | `directives.ts` | 8 | directives + sources + overdue list |\n| Notifications | `notifications.ts` | 6 | inbox + unread + mark-read + prefs (in-app/email/LINE) |\n| DM | `dm.ts` | 8 | threads + messages + read state + edit/delete |\n| Time logs | `time-logs.ts` | 5 | manual entries + summary aggregations |\n| Posts | `posts.ts` | 12 | list / CRUD / pin / reactions / comments / publish-to-KB |\n| Bookmarks | `bookmarks.ts` | 4 | list / create / check / count |\n| Task templates | `task-templates.ts` | 6 | template CRUD + apply (spawn work items) |\n| Trainings | `trainings.ts` | 9 | training CRUD + attendee CRUD + attendance |\n| Recurring | `recurring.ts` | 4 | scheduled spawn rules (cron + cadence) |\n| Check-ins | `check-ins.ts` | 5 | series CRUD + runs |\n| Catalog (cats/teams/members) | `catalog.ts` | 16 | full CRUD on categories, teams, members + my-profile + workload |\n| Custom fields | `custom-fields.ts` | 6 | definitions + per-work-item values |\n| Modules / Features | `modules.ts` | 9 | module CRUD + feature CRUD |\n| Webhooks | `webhooks.ts` | 5 | subscription CRUD + delivery log |\n| Reports | `reports.ts` | 8 | dashboard / monthly / compensation / cycle-time / leaderboard / activity-graph / achievements |\n| Assets | `assets.ts` | 5 | asset CRUD |\n| Quotations | `quotations.ts` | 4 | list / get / create / delete |\n| Rate cards | `rate-cards.ts` | 10 | card CRUD + version + history + tiers + adjustments + calculate + estimate |\n| Board (kanban) | `board.ts` | 9 | config + cards + custom views |\n| Releases | `releases.ts` | 3 | log_release_activity / list_recent_releases / get_release_log |\n| Timer | `timer.ts` | 2 | start / stop |\n| Search | `search.ts` | 1 | universal search |\n\n### Intentionally NOT exposed\n\n| Endpoint | Why it's excluded |\n|---|---|\n| `*/tick` (sla, recurring, check-ins) | cron-internal — not for client use |\n| `/socket.io/`, `/api/board/events` | realtime streams (websocket / SSE) — wrong shape for MCP |\n| `upload` POST | binary multipart — handled by web uploader |\n| `releases.create`, `releases/:v/activities` (lifecycle) | release flow is CI/release.sh only |\n| `admin/backup-status`, `admin/mail-test` | ops-UI internals |\n| `line/*` | OAuth callback chain |\n| `api-keys` mutations | auth flow — admin web only |\n| `users` admin mutations | sensitive — admin web only |\n| `webhooks/test` | debug endpoint |\n\n## Release log tools — extra setup\n\n`log_release_activity`, `list_recent_releases`, and `get_release_log` hit\nadmin-only endpoints. The configured `TASKFLOW_API_KEY` must include\n`admin` in its permissions (set when creating the key at `/admin/api-keys`).\nA regular `read`/`write` key will get 403 from these three tools. Admin-only\nendpoints in other groups (Reports, Webhooks, Modules, Features, Assets,\nMembers CRUD) need the same `admin` permission.\n\n`log_release_activity` is intentionally restricted to observational events:\n`note`, `mcp.action`, `investigate.started`, `investigate.completed`,\n`fix.applied`, `incident.linked`. Lifecycle events\n(`build.succeeded`/`deploy.succeeded`/`rollback`) are NOT exposed because\nthose must come from CI or `scripts/deploy.sh` to keep the audit trail\ntrustworthy. If you (Claude) deployed something manually via shell, log a\n`note` describing what happened — don't post `deploy.succeeded` directly.\n\nEvery activity posted via MCP is tagged `actorType: \"mcp\"` and shows in the\nadmin UI with the purple ✨ marker.\n\n## Install — pick one\n\n### A. npm / npx (recommended for end users)\n\nOnce published to npm, no install step needed — `npx` runs it on demand. Just put this in your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"...\" }\n    }\n  }\n}\n```\n\nFor permanent install:\n```bash\nnpm install -g @aegisx/taskflow-mcp\n```\n\n### B. Single-file download from GitHub Releases (Node 18+ only — no npm)\n\n```bash\nmkdir -p ~/.local/bin\ncurl -L -o ~/.local/bin/taskflow-mcp \\\n  https://github.com/aegisx-platform/taskflow/releases/latest/download/bundle.js\nchmod +x ~/.local/bin/taskflow-mcp\n```\n\n### C. Build from source (developer / monorepo)\n\n```bash\ngit clone https://github.com/aegisx-platform/taskflow.git\ncd taskflow/packages/mcp-taskflow\nbash install.sh\n```\n\nInstaller builds the bundle, drops it in `~/.local/bin/taskflow-mcp`, prints the JSON config to paste. Override location with `INSTALL_DIR=/usr/local/bin bash install.sh`.\n\n### D. Tarball (air-gapped)\n\nDownload `aegisx-taskflow-mcp-X.Y.Z.tgz` from GitHub Releases, copy to target machine, then:\n```bash\nnpm install -g ./aegisx-taskflow-mcp-*.tgz\n```\n\n## Publishing (maintainers only)\n\nCutting a new release:\n```bash\ngit tag mcp-v0.1.0\ngit push origin mcp-v0.1.0\n```\n\nThe `mcp-release.yml` workflow will:\n1. Build the bundle\n2. Pack the tarball\n3. Upload `bundle.js` + `.tgz` to GitHub Releases\n4. Publish to npm — only if `NPM_TOKEN` secret is set in repo settings\n\nTo enable npm publish:\n1. Sign up at https://www.npmjs.com (or use existing account)\n2. Run `npm token create --type=automation` → copy the token\n3. Repo **Settings → Secrets and variables → Actions → New repository secret** → name `NPM_TOKEN`, paste value\n4. Next tag push will publish\n\n## Configure\n\nThe minimal config needs only `TASKFLOW_API_KEY` — `TASKFLOW_BASE_URL` defaults to `https://taskflow.kkh.go.th` (KKH production). For self-hosted or local dev, override `TASKFLOW_BASE_URL`.\n\n### Where to get the values\n\n- `TASKFLOW_API_KEY` → **Admin → API Keys** in TaskFlow, create a key with `write` permission. Token is shown once, copy immediately.\n- `TASKFLOW_BASE_URL` → **optional** — defaults to `https://taskflow.kkh.go.th`. Set only for self-hosted (`https://your-taskflow.example.com`) or local dev (`http://localhost:3001`).\n- `TASKFLOW_MEMBER_ID` → **optional**. See \"Two auth modes\" below.\n\nRestart the client after editing the config.\n\n---\n\n## Client config examples\n\nPick your AI client below. All examples assume the npx-on-demand install (no global install required).\n\n### Claude Code (CLI)\n\nCLI one-liner:\n```bash\nclaude mcp add taskflow -- npx -y @aegisx/taskflow-mcp@latest\n# then set the env var in the same scope\nclaude mcp add-env taskflow TASKFLOW_API_KEY tfk_xxxxxxxxxxxx\n```\n\nOr edit `~/.claude.json` / project `.mcp.json` directly:\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\n\n> Claude Desktop sometimes has a slimmed-down PATH. If `npx` isn't found, use the absolute path: `\"command\": \"/usr/local/bin/npx\"` (or wherever `which npx` reports).\n\n### Claude.ai (web / mobile, Pro/Team/Enterprise)\n\nSettings → **Integrations** → Add custom integration. Paste the npm command — Claude.ai treats `@aegisx/taskflow-mcp` as a remote MCP server via npx. Set `TASKFLOW_API_KEY` in the integration env.\n\n### Cursor\n\nEdit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (per-project):\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\nThen in Cursor: **Settings → MCP → Refresh** — `taskflow` should appear with green status.\n\n### Windsurf (Codeium)\n\nEdit `~/.codeium/windsurf/mcp_config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\nRestart Windsurf, then check **Cascade panel → MCP servers**.\n\n### VS Code (GitHub Copilot Chat — agent mode)\n\nOpen Command Palette → **MCP: Add Server** → choose `npm package` → enter `@aegisx/taskflow-mcp`. Or edit `.vscode/mcp.json`:\n```json\n{\n  \"servers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\nSwitch Copilot Chat to **Agent mode** to see TaskFlow tools.\n\n### Cline (VS Code extension)\n\nIn VS Code: **Cline panel → MCP Servers → Edit Configuration** (opens `cline_mcp_settings.json`):\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" },\n      \"disabled\": false,\n      \"autoApprove\": []\n    }\n  }\n}\n```\n\n### Continue.dev\n\nEdit `~/.continue/config.json`:\n```json\n{\n  \"experimental\": {\n    \"modelContextProtocolServers\": [\n      {\n        \"transport\": {\n          \"type\": \"stdio\",\n          \"command\": \"npx\",\n          \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"]\n        },\n        \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n      }\n    ]\n  }\n}\n```\n\n### Zed\n\nEdit `~/.config/zed/settings.json`:\n```json\n{\n  \"context_servers\": {\n    \"taskflow\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n        \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n      }\n    }\n  }\n}\n```\n\n### JetBrains AI Assistant (IntelliJ / WebStorm / PyCharm / etc.)\n\n**Settings → Tools → AI Assistant → MCP Servers → Add**:\n- Name: `taskflow`\n- Command: `npx`\n- Args: `-y @aegisx/taskflow-mcp@latest`\n- Env: `TASKFLOW_API_KEY=tfk_xxxxxxxxxxxx`\n\n### Goose (Block)\n\n```bash\ngoose mcp add taskflow npx -y @aegisx/taskflow-mcp@latest \\\n  --env TASKFLOW_API_KEY=tfk_xxxxxxxxxxxx\n```\nOr edit `~/.config/goose/profiles.yaml` and add under `tools.mcp.servers`.\n\n### Aider\n\n```bash\naider --mcp-server taskflow=npx -y @aegisx/taskflow-mcp@latest \\\n  --mcp-env taskflow=TASKFLOW_API_KEY=tfk_xxxxxxxxxxxx\n```\n\n### Gemini CLI\n\nEdit `~/.config/gemini-cli/config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"taskflow\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n      \"env\": { \"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\" }\n    }\n  }\n}\n```\n\n### Copilot CLI\n\n```bash\ngh copilot mcp add taskflow \\\n  -- npx -y @aegisx/taskflow-mcp@latest\ngh copilot mcp env taskflow TASKFLOW_API_KEY tfk_xxxxxxxxxxxx\n```\n\n### ChatGPT (Developer Mode / Agents)\n\nChatGPT now accepts MCP servers in **Developer Mode** (Plus/Team/Enterprise). Settings → **Connectors → Add MCP server**:\n- Name: `TaskFlow`\n- Command: `npx -y @aegisx/taskflow-mcp@latest`\n- Env: `TASKFLOW_API_KEY=tfk_xxxxxxxxxxxx`\n\nFor Agents Builder: import as a **Tool → MCP** with the same command.\n\n### OpenAI Agents SDK (programmatic)\n\n```python\nfrom agents import Agent\nfrom agents.mcp import MCPServerStdio\n\ntaskflow = MCPServerStdio(\n    params={\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@aegisx/taskflow-mcp@latest\"],\n        \"env\": {\"TASKFLOW_API_KEY\": \"tfk_xxxxxxxxxxxx\"},\n    }\n)\n\nagent = Agent(name=\"taskflow-agent\", mcp_servers=[taskflow])\n```\n\n### Self-hosted / local dev override\n\nFor any client above, just add `TASKFLOW_BASE_URL` to the `env` block:\n```json\n\"env\": {\n  \"TASKFLOW_API_KEY\":  \"tfk_xxxxxxxxxxxx\",\n  \"TASKFLOW_BASE_URL\": \"http://localhost:3001\"\n}\n```\n\n### Two auth modes (member resolution)\n\n`list_my_tasks` and `create_work_item` (default assignee) need a client-side \"who am I\" identity. (`start_timer` doesn't — the API resolves the actor server-side from the key.) There are two ways to provide identity to the client:\n\n| Mode | When | Config |\n|---|---|---|\n| **User-bound API key** (recommended for individuals) | The API key is tied to one specific member. Most personal-use keys are like this — when you generate the key from `Admin → API Keys` while logged in as yourself. | Just set `TASKFLOW_API_KEY`. The MCP calls `GET /api/members/me` once and caches the resolved member id. |\n| **Shared / admin / act-as key** | The key isn't tied to one user (e.g. an integration key, or an admin key acting on behalf of someone else). | Set both `TASKFLOW_API_KEY` and `TASKFLOW_MEMBER_ID` to the numeric member id you want to act as. Env always wins over `/members/me` so admins can target any member explicitly. |\n\nFind member ids at **Admin → Members** (numeric `id` column) or via `GET /api/members/me` with your key.\n\n## Example prompts\n\n> \"ช่วยสร้าง ticket ใน TaskFlow เรื่อง 'ติดตั้งคอม OPD ห้อง 3' ความสำคัญ high กำหนดเสร็จศุกร์นี้\"\n\n> \"What's on my plate today?\" → `list_my_tasks`\n\n> \"Mark TKT-2026-014 as in_progress and start the timer on it\"\n\n> \"Search for KB articles about VPN\"\n\n**Meeting flow** — paste a transcript:\n> \"Update meeting #42 with this minutes + decisions, then create a work item for each action item I mention and link them back to the meeting.\"\n>\n> Calls: `update_meeting` → `create_work_item` (loop) → `add_meeting_link` (with the work-item URLs).\n\n**Incident flow** — production breaking:\n> \"Open a high-severity incident: API throwing 500s, then keep adding to the timeline as I investigate.\"\n>\n> Calls: `create_incident` → `transition_incident('acknowledge')` → `add_incident_timeline` (loop) → `transition_incident('identify')` with root cause → `transition_incident('resolve')` → `create_kb_article` for the postmortem.\n\n**Vendor visit** — after a vendor meeting:\n> \"Log today's vendor visit with vendor #7 — purpose was scoping the new HIS upgrade, attendees were the IT team, here are my notes:...\"\n>\n> Calls: `create_vendor_visit` then maybe `create_work_item` for follow-ups.\n\n**Sprint planning**:\n> \"List active sprints, then add TKT-2026-001..010 to the current dev sprint.\"\n>\n> Calls: `list_sprints({ active_only: true })` → `add_sprint_items`.\n\n## Auth model\n\nX-API-Key header secures every call — it's the security boundary, guard it like a password. Client-side caller identity (used to fill `assignedTo` and to drive `list_my_tasks`) is resolved from `/members/me` for user-bound keys, or from the optional `TASKFLOW_MEMBER_ID` env var when using a shared/admin key. See \"Two auth modes\" above. Server-side actor resolution (used by `start_timer`, audit log, etc.) is always done from the API key on the server.\n\n## Development\n\n```bash\npnpm install\npnpm build     # type-check + emit\npnpm test      # vitest registry smoke tests\npnpm bundle    # produces dist/bundle.js (single self-contained file)\n```\n\n> Don't use `pnpm dev` (`tsx watch`) while a live MCP client is attached — `tsx`'s reload messages go to stdout and corrupt the JSON-RPC stream. Use `pnpm bundle` then restart the client.\n\n### Layout\n\nEach domain group is a separate file in `src/tools/<group>.ts` exporting a\nreadonly `<group>Tools: ToolModule` array. `src/index.ts` flattens all\ngroups into a single registry, asserts unique tool names, and dispatches\nincoming `tools/call` requests through Zod arg-validation to the matching\nhandler. Adding a new tool = define an entry in the relevant group file —\nno separate registration step.\n","readmeFilename":"README.md"}