{"_id":"@njligames/kanban-importer-mcp","_rev":"6-98630fab2b6c136f21e93483d849f698","name":"@njligames/kanban-importer-mcp","dist-tags":{"latest":"1.0.4"},"versions":{"0.0.0-stage":{"name":"@njligames/kanban-importer-mcp","version":"0.0.0-stage","_id":"@njligames/kanban-importer-mcp@0.0.0-stage","stub":true,"maintainers":[{"name":"njligames","email":"james@njligames.com"}],"dist":{"shasum":"742846d376eadf3ef849c3ce9347bfc8b8820058","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-JYO6+DHU9Lucryn74jNBCZt49by+rbLiENb+41z94ip28YGNhVEPEkMzbleVZw89CsyEgnG14xj8TOGN+55sAA==","signatures":[{"sig":"MEUCIQCPAaUPRfG/e3p1/qtEmO8FfjHt0yv14at44yWjgU9qMwIgX3PcLTyJwCPs5uJQF6IomzzwHFXF3RzOyWNFkoKd6DI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352},"_npmUser":{"name":"njligames","email":"james@njligames.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"1.0.0":{"name":"@njligames/kanban-importer-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","trello","kanban","claude","codex","ai","tasks"],"author":{"name":"NJLIGames Ltd"},"license":"MIT","_id":"@njligames/kanban-importer-mcp@1.0.0","maintainers":[{"name":"njligames","email":"james@njligames.com"}],"homepage":"https://njligames.com/help/kanban-importer/working-with-ai","bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"bin":{"kanban-importer-mcp":"index.js"},"dist":{"shasum":"f48222c19dc9cb4a2c2483a98a98b06a03993333","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-1.0.0.tgz","fileCount":7,"integrity":"sha512-IgUAy5rRDwuAJlXWKg6dgGoD0rocNnd+9odqXKp/yC6z4xfSY8+m0Ld8WR4aO9HEp+5VQsMNEPk99hSlvqyuag==","signatures":[{"sig":"MEYCIQCcyfj16zSSpom4ye5S3L7xtXmSlG2hdn0yhgTaUVjQcAIhAMxMlp8OMsjEY84xC9CVvQcIXjgqjqYd6Oz4WGfJ3iAp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCC4dJJeJV49YdHyxQWhB+/LxHSJvEwjMwT0cGMKVhXMgIgacsJyaCGA2A7JDqlI9oDb7hTu2ItpAGd+nqovnlCZaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26432},"type":"module","engines":{"node":">=18"},"gitHead":"98888fd29efcebb656a7fd10950580a223d473d7","scripts":{"sync":"cp ../public/js/ai-tasks.js lib/ai-tasks.cjs","test":"node --test \"test/**/*.test.js\"","verify:pack":"./verify-pack.sh","prepublishOnly":"npm run sync && npm test && npm run verify:pack"},"_npmUser":{"name":"njligames","email":"james@njligames.com"},"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"_npmVersion":"11.17.0","description":"Read and move Kanban Importer tasks on a Trello board from Claude, Codex or any MCP client","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanban-importer-mcp_1.0.0_1792686937397_0.8266204439337961","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@njligames/kanban-importer-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","trello","kanban","claude","codex","ai","tasks"],"author":{"name":"NJLIGames Ltd"},"license":"MIT","_id":"@njligames/kanban-importer-mcp@1.0.1","maintainers":[{"name":"njligames","email":"james@njligames.com"}],"homepage":"https://njligames.com/help/kanban-importer/working-with-ai","bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"bin":{"kanban-importer-mcp":"index.js"},"dist":{"shasum":"9d69aef08243e426e9465628c4f2d41d31726378","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-1.0.1.tgz","fileCount":8,"integrity":"sha512-4Vzt801/4RXI8erolCFu6EZpCurO7ZsFPK8Dcq6bzSCSo0MHMYpgQegqmNYX0CWkh0ISNlKHMyW3EbUyHll++g==","signatures":[{"sig":"MEUCICUxcp6jkXI5vakYlYcnOKvdv8M1gq89mnXrJ/Sx7QH5AiEA9qe1HYYT8AKMtpLj6vCim9gdoxEEYviuUd3tVIXeILM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCSt6SiWrlPZTKB/8KOEr3kBL2SsVgATAC9lmxp1exRZAIgfFk/nW+u6PwmgshmCxqmxC4xWGtWcyxUHnfzEzb5ItE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29141},"type":"module","engines":{"node":">=18"},"gitHead":"073df9238efd6d4c9134532217ef23080b8a1c13","mcpName":"io.github.njligamesltd/kanban-importer","scripts":{"sync":"cp ../public/js/ai-tasks.js lib/ai-tasks.cjs","test":"node --test \"test/**/*.test.js\"","verify:pack":"./verify-pack.sh","prepublishOnly":"npm run sync && npm test && npm run verify:pack"},"_npmUser":{"name":"njligames","email":"james@njligames.com"},"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"_npmVersion":"11.17.0","description":"Read and move Kanban Importer tasks on a Trello board from Claude, Codex or any MCP client","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanban-importer-mcp_1.0.1_1792688760624_0.8114437639615146","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@njligames/kanban-importer-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","trello","kanban","claude","codex","ai","tasks"],"author":{"name":"NJLIGames Ltd"},"license":"MIT","_id":"@njligames/kanban-importer-mcp@1.0.2","maintainers":[{"name":"njligames","email":"james@njligames.com"}],"homepage":"https://njligames.com/help/kanban-importer/working-with-ai","bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"bin":{"kanban-importer-mcp":"index.js"},"dist":{"shasum":"89e141f8663ab2d6e75d701328bfbf917d784639","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-1.0.2.tgz","fileCount":8,"integrity":"sha512-iFSgYlerohmb/1hmE+1iceGj5Wm02gLARjQXg8Az2k0BstnKjEhDtJ5pbS+jKGcZ+k01AJiqE5+gCOyYfWH56A==","signatures":[{"sig":"MEUCIQCcF00oDnqQeAJFNNmt1P8b3B9/w+1naBQ+cAgDrCpnEgIgfWpDaqtYr78JtZvRGYPA1nXsyFaFxkDINtALVu7O0x0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGTO9bniflvHVT3mCReLcMAOm7tSvg0ZwVot5PJGx5hpAiAbFgVuA2xCLmhBipnmWhsJdwOt5M2p3OT+gse3dtzChA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30234},"type":"module","engines":{"node":">=18"},"gitHead":"07a3d9c8df37a4626cf057de06fa4685244720f8","mcpName":"com.njligames/kanban-importer","scripts":{"sync":"cp ../public/js/ai-tasks.js lib/ai-tasks.cjs","test":"node --test \"test/**/*.test.js\"","verify:pack":"./verify-pack.sh","prepublishOnly":"npm run sync && npm test && npm run verify:pack"},"_npmUser":{"name":"njligames","email":"james@njligames.com"},"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"_npmVersion":"11.17.0","description":"Read and move Kanban Importer tasks on a Trello board from Claude, Codex or any MCP client","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanban-importer-mcp_1.0.2_1792695275118_0.8618845852928094","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@njligames/kanban-importer-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","trello","kanban","claude","codex","ai","tasks"],"author":{"name":"NJLIGames Ltd"},"license":"MIT","_id":"@njligames/kanban-importer-mcp@1.0.3","maintainers":[{"name":"njligames","email":"james@njligames.com"}],"homepage":"https://njligames.com/help/kanban-importer/working-with-ai","bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"bin":{"kanban-importer-mcp":"index.js"},"dist":{"shasum":"a91bbbf7afd0c9f2abac65289c25586372927429","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-1.0.3.tgz","fileCount":8,"integrity":"sha512-B1WCsKSZDFadRAbhTRtKm5aC3aV2JX1rvDJahTMxcXvM8fhBMSe+ZO8sHSyvnxt0687Ir/erAfavDzd8pp4eKg==","signatures":[{"sig":"MEUCIBeJtDdBGB7fMP7dqK4tWNK4xUmPiMy/4mo13GMdCyzgAiEA0hWG2t/k7B3+L8HbqgZXls1PXDN4KRr8kevDZ8aYjiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBtgLgngYPgGlPELJ64VqwoIAu7UKFV6gopCl9Qy8KLaAiA62piKulVdK11+SAeO/QwwxMb4FjIAvbZ38fxa3r6eqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30857},"type":"module","engines":{"node":">=18"},"gitHead":"f134487cb4e3291e2f9eaea36735126948e16a8d","mcpName":"com.njligames/kanban-importer","scripts":{"sync":"cp ../public/js/ai-tasks.js lib/ai-tasks.cjs","test":"node --test \"test/**/*.test.js\"","verify:pack":"./verify-pack.sh","prepublishOnly":"npm run sync && npm test && npm run verify:pack"},"_npmUser":{"name":"njligames","email":"james@njligames.com"},"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"_npmVersion":"11.17.0","description":"Read and move Kanban Importer tasks on a Trello board from Claude, Codex or any MCP client","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanban-importer-mcp_1.0.3_1792711130604_0.20520113461782663","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"_id":"@njligames/kanban-importer-mcp@1.0.4","bin":{"kanban-importer-mcp":"index.js"},"bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"dist":{"shasum":"556c87e4dc5765286123091c667f11777ee25401","tarball":"https://registry.npmjs.org/@njligames/kanban-importer-mcp/-/kanban-importer-mcp-1.0.4.tgz","fileCount":8,"integrity":"sha512-GRHYNQV+VA6y6y/ShF459AmnqlBip5ryOpszdG2QwZw5cXoMpD07sOjdHjlHF56uROpEoaIbtTVMOXeF6+2rHA==","signatures":[{"sig":"MEUCIBoTGs+nZehkcmfwxOJssHi4BOLPSsTwZQVMyQXwVFINAiEAy6CAv5rvVfjjcLgP2OZrOqAqbzGo5LuZuLJnhwOPoGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFfraZ7Vtezxsz/K97qJRZBQpNsaxaM4qUlnw41BGytgAiEA7jKVoe6kHp7qHmIwqdFJwXzXGM1fnyhREOU9Ex0ertc="}],"unpackedSize":32233},"name":"@njligames/kanban-importer-mcp","type":"module","author":{"name":"NJLIGames Ltd"},"engines":{"node":">=18"},"gitHead":"63310fe8bdffd8879c25918bfdd3e373b50f4f04","license":"MIT","mcpName":"com.njligames/kanban-importer","scripts":{"sync":"cp ../public/js/ai-tasks.js lib/ai-tasks.cjs","test":"node --test \"test/**/*.test.js\"","verify:pack":"./verify-pack.sh","prepublishOnly":"npm run sync && npm test && npm run verify:pack"},"version":"1.0.4","_npmUser":{"name":"njligames","email":"james@njligames.com"},"homepage":"https://njligames.com/help/kanban-importer/working-with-ai","keywords":["mcp","model-context-protocol","trello","kanban","claude","claude-code","codex","cursor","ai-tasks","ai-task-list","agent-tasks","task-tracking","kanban-importer"],"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"_npmVersion":"11.17.0","description":"Let Claude or Codex move Trello cards by the task ids it invented itself, not by Trello card ids","directories":{},"maintainers":[{"name":"njligames","email":"james@njligames.com"}],"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kanban-importer-mcp_1.0.4_1792760890487_0.46462931220676884"}}},"time":{"created":"2026-10-22T16:34:20.093Z","modified":"2026-10-23T13:08:10.778Z","0.0.0-stage":"2026-10-22T16:34:20.093Z","1.0.0":"2026-10-22T16:35:37.541Z","1.0.1":"2026-10-22T17:06:00.721Z","1.0.2":"2026-10-22T18:54:35.219Z","1.0.3":"2026-10-22T23:18:50.695Z","1.0.4":"2026-10-23T13:08:10.582Z"},"bugs":{"url":"https://github.com/NJLIGamesLtd/trello-csv-import/issues"},"author":{"name":"NJLIGames Ltd"},"license":"MIT","homepage":"https://njligames.com/help/kanban-importer/working-with-ai","keywords":["mcp","model-context-protocol","trello","kanban","claude","claude-code","codex","cursor","ai-tasks","ai-task-list","agent-tasks","task-tracking","kanban-importer"],"repository":{"url":"git+https://github.com/NJLIGamesLtd/trello-csv-import.git","type":"git","directory":"mcp"},"description":"Let Claude or Codex move Trello cards by the task ids it invented itself, not by Trello card ids","maintainers":[{"name":"njligames","email":"james@njligames.com"}],"readme":"# Kanban Importer MCP\n\nLets Claude, Codex or any MCP client read and move the tasks on a Trello board\nthat [Kanban Importer](https://njligames.com/tools/kanban-importer) created.\n\nThe loop it closes:\n\n1. You ask your assistant for the tasks only a person can do.\n2. Kanban Importer puts them on the board, in Backlog, each tagged with the\n   task id the assistant invented.\n3. You work the board.\n4. You ask the assistant how things stand. It reads the board itself.\n5. You tell the assistant a task is done. It moves the card.\n\nSteps 4 and 5 are this package. Steps 1 to 3 need nothing but the Power-Up.\n\n## Why not a general purpose Trello MCP\n\nUse one. Atlassian publishes an [official Trello MCP\nserver](https://www.atlassian.com/blog/trello/connect-trello-to-your-favorite-ai-assistants-with-trello-mcp),\nfree on every plan, and it covers far more of Trello than this does: boards,\nlists, cards, checklists, create, move, comments. If what you want is an\nassistant that can work your Trello account, that is the one to install, and\nthis is not trying to replace it.\n\nThis package does one thing those cannot, including the official one.\n\n**They speak in Trello card ids. This speaks in task ids.** When an assistant\nwrites out your leftover work it invents its own name for each task, something\nlike `rotate-stripe-webhook-secret`. That is the only name it ever had. A\ngeneral server has to list the whole board and guess which card is which by\nmatching titles, which breaks the first time you rename a card, and renaming a\ncard is a normal thing to do to a card. `move_task` here takes\n`rotate-stripe-webhook-secret`, never `68f3c1a0b4d2e9f77c0a1b23`.\n\nIt reads the Power-Up's own card stamp as well as the description line, and no\ngeneral reader returns that stamp, so the match survives a rename, a reword and\nan archive.\n\nTwo other differences worth knowing before you choose:\n\n- **One credential.** This ships the Power-Up's own Trello app key, so setup is\n  a token and nothing else. Most community servers want an API key as well.\n- **It cannot create or delete.** Three tools, `list_boards`, `list_tasks` and\n  `move_task`. Importing is what the Power-Up is for, with a preview first, and\n  nothing an assistant does here can take work off your board.\n\nPlenty of people will want both installed. They do not conflict.\n\n## Setup\n\nGet a token. This link asks Trello for read and write access for Kanban\nImporter, and gives you a token to paste:\n\n```\nhttps://trello.com/1/authorize?expiration=never&scope=read,write&response_type=token&key=d942028fe402246748954673a8420ed1&name=Kanban%20Importer\n```\n\nThen add the server to your client's MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"kanban-importer\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@njligames/kanban-importer-mcp\"],\n      \"env\": {\n        \"TRELLO_TOKEN\": \"the token you just got\"\n      }\n    }\n  }\n}\n```\n\nThat is the whole configuration. The API key defaults to the Power-Up's own,\nwhich is public by design: a Trello app key grants nothing on its own.\n\n| Variable | |\n|---|---|\n| `TRELLO_TOKEN` | Required. From the link above. |\n| `TRELLO_BOARD` | Optional. A board name or id, so you do not have to name one each time. With one board on the account it is worked out anyway. |\n| `TRELLO_API_KEY` | Optional. Only if you would rather authorize your own Trello app than ours. |\n\n## Tools\n\n| Tool | |\n|---|---|\n| `list_boards` | The open boards on the account, by name. |\n| `list_tasks` | Every tagged task with the column it is in, plus the board's columns in order. |\n| `move_task` | Move one task to a named column. Brings an archived task back. |\n\n`list_tasks` returns the columns in board order rather than a status word,\nbecause a status vocabulary would be a guess on any board that does not use\nthe default columns, and a confident guess is worse than none.\n\n## What it does not do\n\nIt does not create cards. Importing is what the Power-Up is for, and it handles\nlists, labels, members, dates, checklists and attachments in one pass with a\npreview you can check first.\n\nIt does not delete anything, and `move_task` is the only write.\n\n## Where your token goes\n\nInto your MCP client's config file, on your machine. The server sends it to\n`api.trello.com` and nowhere else. Kanban Importer has no server of its own, so\nthere is nowhere else for it to go.\n\n## Development\n\n```\nnpm install\nnpm test\nnpm run sync\n```\n\n`npm run sync` refreshes `lib/ai-tasks.cjs` from `../public/js/ai-tasks.js`,\nwhich is the file the Power-Up ships. It is a copy because npm cannot package a\nfile outside the package root; `test/shared.test.js` fails when it goes stale.\n\n## Listing it in the MCP registry\n\n`server.json` carries the registry metadata and its `name` must match the\n`mcpName` in `package.json`, or the publish is refused. Both move together when\nthe version does.\n\n```bash\nnpm version patch\nnpm login\nnpm publish --access public\nmcp-publisher login github\nmcp-publisher publish\n```\n\n`npm login` before publishing, rather than `npm publish --otp=<code>`. The OTP\nflag is refused on this account: npm answers 403 asking for 2FA or a bypass\ntoken. The browser login flow satisfies the same requirement and npm is\nrestricting bypass tokens anyway, so do not go and make one.\n\nThe npm publish has to come first: the registry hosts metadata, not artifacts,\nand it verifies the package exists and claims the same name.\n\nThe registry name is `com.njligames/kanban-importer`, authenticated against the\ndomain rather than against a GitHub organization. The GitHub route was tried\nfirst and refused, because the account's public membership is in\n`onegroupcentral` and the repo lives under `NJLIGamesLtd`. Beyond that\naccident, a name tied to a GitHub org is tied to something that has already\nmoved once: this repo changed orgs on 2026-10-16.\n\nDomain authentication needs a proof file, which is deployed and live at\n<https://njligames.com/.well-known/mcp-registry-auth>. Its source is\n`website/.well-known/mcp-registry-auth` in the njligames-site repo, and the\nmatching PRIVATE KEY is `mcp/.tools/registry-key.pem`, gitignored and never\npublished. Losing that key means generating a new pair and replacing the\ndeployed file; leaking it would let somebody else publish under\n`com.njligames/*`, so treat it like an SSH key.\n\nLogging in with it is not interactive:\n\n```bash\nPRIVATE_KEY=\"$(openssl pkey -in .tools/registry-key.pem -noout -text | grep -A3 \"priv:\" | tail -n +2 | tr -d ' :\\n')\"\n./.tools/mcp-publisher login dns --domain njligames.com --private-key \"${PRIVATE_KEY}\"\n./.tools/mcp-publisher publish\n```\n\n`mcp-publisher` itself lives in `mcp/.tools/`, which is gitignored; brew was\nlocked when it was needed, so it was installed from the official release\ntarball instead of with `brew install mcp-publisher`.\n","readmeFilename":"README.md"}