{"_id":"@aipper/zentao-mcp-server","_rev":"20-5886d32f2ef0361e8843d668df4359a2","name":"@aipper/zentao-mcp-server","dist-tags":{"latest":"0.1.26"},"versions":{"0.1.4":{"name":"@aipper/zentao-mcp-server","version":"0.1.4","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.4","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"dist":{"shasum":"0640e0202c6958e5e8e5f8102fe09746e514a5f3","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.4.tgz","fileCount":8,"integrity":"sha512-01Y+PzuqtEcCBzOO314Eo0YCuccxg4lgLv0+q2pbmp1prO4aBRl7WhevrTAQ8BSzr5/MtqbpPFMUGAMDX+QgBA==","signatures":[{"sig":"MEUCIAQmsUddSH/HTk7FFKDcieuemNYAay4ErZ1usq3bXKcoAiEA2wCGJGv2ND1wClRyIHpF0B3b0T59It45cH19LtkkEdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29530},"main":"src/index.js","type":"module","gitHead":"c4d08173801890cb8dd24c1e1fdfc4d25e8c67f6","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.4_1772260555452_0.5845313350753458","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aipper/zentao-mcp-server","version":"0.1.5","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.5","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"a3b1fdf61b102d9ca90652c91f189b76a808deb0","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.5.tgz","fileCount":9,"integrity":"sha512-rHQEeQBkcLTtDiIDOoS5NB4BoHTg/+14PNKGyAGXULPjFEwYge3X+tiJfT8uBmGyi4dhKil2xyzMZ6g0CojGpQ==","signatures":[{"sig":"MEUCIC8U0wpASeikBaBahj4J9gtJJjOQ+PeQtk8GEufALA3TAiEAqoSnSuqG4Kl67x8Of8yN05wrjtoPtSUSCvDoO03ME0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30696},"main":"src/index.js","type":"module","gitHead":"53b59e602304b2a89d0d566eedb4124e9d6036ac","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.5_1772262350582_0.19906343346396982","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aipper/zentao-mcp-server","version":"0.1.6","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.6","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"5d10fd5854ce12758760bafacf55aa005280c84b","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.6.tgz","fileCount":9,"integrity":"sha512-InF+pO26V0KuWQP9bToQ0Hokp/3HTVVynCptOlp6iW4P7AR5OrGKk2Pk7R74iTgQ8yILZWpsSbdPqpyZMxXEiw==","signatures":[{"sig":"MEYCIQCU5QczJnLypgqBER++TBXcA9jyI2dirr6hN7nVU3w0rQIhAOA87rq6gYhgd4t053HHGbcM8MCr6KynCOr7w2bKSa3Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51206},"main":"src/index.js","type":"module","gitHead":"fb86074ad1cc77e85f5322493e508b8694b3e017","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.6_1772264020319_0.7655661079588034","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@aipper/zentao-mcp-server","version":"0.1.7","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.7","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"e053e4f96ae00a268eb481f0af177e991cc0b3a8","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.7.tgz","fileCount":9,"integrity":"sha512-WfNbsqO4wFxRzIeaW5zbJP7+E1eSH72KLoJ69MSxZ5IyhJI7UMkBfV/BonwKRfFZ8ON5pSo/3YE0ClgmrRDN/g==","signatures":[{"sig":"MEUCICvjMg9IkrWEvJZHGZF7jMa3aGoP5/+pMxM+GeNVIsq2AiEA+PjSSMi5hd+jAMGw3hBxECnulJqauJyaeOXcTtGb75A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54698},"main":"src/index.js","type":"module","gitHead":"91859542cd352d1a7fce4379ed6fd6ed251ecac1","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.7_1772265513565_0.3356666329632916","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aipper/zentao-mcp-server","version":"0.1.8","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.8","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"a929f736485a65985cac2d05b3f2147b46aca26b","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.8.tgz","fileCount":9,"integrity":"sha512-zVeeLMONgGKHhZqQRSSpmuGZCZDj5gJKdyfQzLi176ODxy5OmRGMPkPImHksvxp5PVF3knsSKiXqFV0nWEF7IA==","signatures":[{"sig":"MEYCIQDmGbB3Q9VNw/SNelaY5P8oRSCVabZtLZ6eT6HYp73lIwIhAKW3t+N4Vc4keOco9OOb9Umei03l/EwcCPyEHE4dGBQE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61151},"main":"src/index.js","type":"module","gitHead":"1c83065ea0a4bea4876d7f3e099032c3491e8c74","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.8_1772589576860_0.6936408986279028","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@aipper/zentao-mcp-server","version":"0.1.9","license":"UNLICENSED","_id":"@aipper/zentao-mcp-server@0.1.9","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"7daf2430ec780bfd27e460a1732d51df0696bc10","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.9.tgz","fileCount":9,"integrity":"sha512-7vpg3iMlzPbMEY3BDziKCn2ML+nXx5+0sx2roLV/SYx9A8XPIaxue977DG3EfN0/J3jVtxmuUTAYfRMY4jiZJA==","signatures":[{"sig":"MEUCIHfaJT57o4IxhcydrU1fn7o7oGVxZE/Qme0kRVzW8vxoAiEAq++r3Q6hsK6Fhw1AD59zvMTUv9QX2rup0ZPN6bKc4uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68887},"main":"src/index.js","type":"module","gitHead":"367dac67b3ddb1e283372b2f0c8b8944511fa7a8","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"_npmVersion":"11.9.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@modelcontextprotocol/sdk":"latest"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.9_1772606986533_0.3420069319179493","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@aipper/zentao-mcp-server","version":"0.1.10","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.10","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"8d5deb373c448212862fe901bd9e5d000798e340","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.10.tgz","fileCount":12,"integrity":"sha512-IjnyEEfH4cx0POMJ44hLZexysbXdeEbk5UEMcwGqpNiKPbE/U6vpTur/vshQPgYXYDh4MrvwRoH35XkTLdmYpw==","signatures":[{"sig":"MEQCIDkbVfU3qnf5p1JCqcF1AL1uSzPMQqODk7+mNjdjpmblAiAdA35BieTufRmESNIdmUItKkZ4V8X1TBCNPuzx6R6Siw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80378},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1d25a38eefc23039fe286426880eae82e1dada3d","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"A minimal MCP server for ZenTao (token + generic REST call + a few helper tools).","directories":{},"_nodeVersion":"25.8.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.10_1773303297553_0.9956175258984474","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@aipper/zentao-mcp-server","version":"0.1.11","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.11","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"39a32fd5a0d46cb53769e3116e97256e218d1690","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.11.tgz","fileCount":10,"integrity":"sha512-GH9DOfuir/Mh/iGtZTfDT6GnAoBK6uTJMMxgqC7kEJgTzk/RUkz7G2UUnaRLkIbV6AikbIR65FD+WMTSTlRmXw==","signatures":[{"sig":"MEQCIAD3NoUwvy9h0Rnqn5JsYqTc/Nu2STvjD0fZp5hKQUYiAiAVqx1ZnWwk/WyQi/G42AF9dsgvgzfic5pe11CiJaB+LA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79242},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"9c1888187c7f68294fab203acabcf165f3358380","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"25.8.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.11_1774076184685_0.0764239330677483","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@aipper/zentao-mcp-server","version":"0.1.12","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.12","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"429d66abd0dc8f832ff31ef652bb3fe31af3096d","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.12.tgz","fileCount":10,"integrity":"sha512-NV0MbIVopOCdtqh96oWybV5hiTdMhcS80KYtHyIgth8m/CBP/NmJnWcnZXURX14QhbCQChjjGDXsWU+eMX8BZg==","signatures":[{"sig":"MEYCIQDjfQj3ciX2wBtrrPW9v0Vbw+hGEabkpkzQNet8vrwK0gIhANwhw3Wci4R9VXoHl/D6Y/5Ux+gde/mmYRya1qXLuoj7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79242},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"4628842b8ff0f91fe0e9e24e40979e52ce91aa1a","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"25.8.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.12_1775121531814_0.9589621259364121","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@aipper/zentao-mcp-server","version":"0.1.13","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.13","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"3fa9cb833cbaf18bde6801bbbe3922be2b09000c","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.13.tgz","fileCount":10,"integrity":"sha512-rSUZo46IE/Zpb1kg4vzooLifZiAFNp9XxF0X8IZPRFgWUAnIENWazspYcepXx6bgibKgZ1C1nfXKkwG634L6yA==","signatures":[{"sig":"MEYCIQC1LnjANOCnsC57zJg6EgdxB4xOMRX0iRnlqlj/naFSEwIhAN0ZSiZljdOqYmk+sDY6KGS9VyAHjkSp8Mih1yzSSPcE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81867},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"dcd4aa57b8a090349ea49e91c2358436fec4b534","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.13_1784772970012_0.11396594528463111","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@aipper/zentao-mcp-server","version":"0.1.14","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.14","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"bb5064de6c02523225e6f3feb24026101030e2f3","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.14.tgz","fileCount":10,"integrity":"sha512-uurEg9+QVwS+J8o/+h81iPpm69E/onAzZQWpn13YBx8ywNnGTHWd2WbXSJx88vXVfDw7xxkH8P72lYe7xtIjjQ==","signatures":[{"sig":"MEQCIDCvtO3szB0FV4rKT7GxkeRUb7gG8rr/UEsgV2lFeyMlAiBsPgmm86TgEbQDFVpgPbnNL4hnoS1c459MrDdryhaVTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82003},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"6c2ccfcfedb012d7611873d65d8ccc9bd909663f","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.14_1784776143638_0.9603196065968058","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@aipper/zentao-mcp-server","version":"0.1.15","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.15","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"6b19cdbdba47bd846944ce84658cf14e84cba423","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.15.tgz","fileCount":11,"integrity":"sha512-mntAphWQEyDhMzT2iW5g9zMmZ9nj7rkgHQ/8WJ8wPXxegChrnpcFMcaSrc50162xxcQ8gybGcmb/foSZ+EH+ag==","signatures":[{"sig":"MEYCIQCJWteqPQQ++ZPh0ez28cpAbirUIL14tQImWssMm52fowIhAOHwxylg/LFOiv6yyqm7titQJH5/NORFSKNpM9P23Vsh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90245},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"757c7335361b6f5722a2ca236e8038b8e87c209a","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.15_1784801194161_0.7017273865614648","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@aipper/zentao-mcp-server","version":"0.1.17","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.17","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"8e0633816a6ff3823fd790e2d6cb56c527188bab","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.17.tgz","fileCount":11,"integrity":"sha512-BXjJpjJLxFz+Kjnoc5b4DaCkq5H05IgXXUeg/Xg4lOgdEj5bR/Ljbn/QAx8xYOJth97a4n2QTUVMCVfh0tZNBQ==","signatures":[{"sig":"MEQCIDWgLEt2QNrGIwJy2ylW4p549RvFqKf9zC8Mhc5Nxj5dAiAeDq3Nm5pWPorpGBCVEX8ky0PJeFEzgglstPiMcRIrCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96376},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"2865af1dcf826a425ca429f66eaff4acc313511d","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.17_1784863254338_0.3149916236286292","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@aipper/zentao-mcp-server","version":"0.1.18","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.18","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"46d720eb7c347acbebdeb0ced1afdc4f8a453cdf","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.18.tgz","fileCount":11,"integrity":"sha512-2qQnaE8wgRAnr8eBTGsLLWJtnBGDpWPLm7r+FNMKmvGuCxIilKKn7W7wjHCuYIj5/SXOQCI2Leww9c3sIpWSiQ==","signatures":[{"sig":"MEUCIQDtAyqQpej/ub28mjHdU+wuFPxaSDuljjt7RwFuPSyI0QIgFSO3Kj8/QEQ+QOTv/28lLFD7YShddr03vB7/eW3Zwog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96882},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"86641f311a5680bf93f542d6f5595e389fce4175","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.18_1785037951649_0.21542495531031558","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@aipper/zentao-mcp-server","version":"0.1.19","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.19","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"92bb710d5d5b3004ea22aedca5adff69fc8d826b","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.19.tgz","fileCount":11,"integrity":"sha512-h+QOqenKVFybC1+2o2hnFtqxXmKuyteTEpvAWwyuP7tWhFTk49V8tNii5KomP+UG9nnuBe2s1H/INOae2ik3QA==","signatures":[{"sig":"MEQCIDME2Qo9FL/CvXqa3BpXM8+qcP7acFr+QZf78Q1M63tkAiA8+jwY0bfZo60G9CfLH9nt1hF+2ygvmRL+qPMGt07HPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99987},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"6dcc47a10418ab934ec27b59defbeb5ef1ec4ac6","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.19_1785130540027_0.10947364709725282","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@aipper/zentao-mcp-server","version":"0.1.20","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.20","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"bf482646c7c8ffab030de4809adb7567d221fd9d","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.20.tgz","fileCount":11,"integrity":"sha512-PJV4XFnO4CR2jvWp5KMxC8mY5G+/f+6SqjPXGM4kMlhZJTOIcfytN457Hl4UMXYhitACVBEo7FcvPPbMT5kPzw==","signatures":[{"sig":"MEQCIGLBCp5gWvuPcr3x57yNN1h62GZKVVcp5ooU79Kv0n9xAiAN35iY1HYVJq356gdpRDbWrsIp2Jn5vX/Ao/NCuk2w0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102752},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e0de2685a102ea9ec40d5970d5604118ba4b471d","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.20_1785206880599_0.9657838418121676","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@aipper/zentao-mcp-server","version":"0.1.21","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.21","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"b665c858ed00d739b6d38c17add39417f319afd0","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.21.tgz","fileCount":11,"integrity":"sha512-I94EYp/OKxsHYGsDjXnflcnPp18Ty+LsUP2a+yx5+RqSWm7Y5/Pc9LNsWVnoK/Sn4kQytnLy5WfSdRA/eaH3Bw==","signatures":[{"sig":"MEYCIQDD1Gu2FnpbYUDSmSk5YkpntV4vpnUW3bnouEWimdchcQIhAKh1/507+zMvV8Cy9wKiUexV5DlvM93WcykUrHqDUEOc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103795},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"701dbc8fa8eb0ac3a0bfb10d4db57df2bac9c08c","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.21_1785210771419_0.7195345657473633","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@aipper/zentao-mcp-server","version":"0.1.22","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.22","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"99df5a2dc984aecafe06514a57b0da6cdfae0bfc","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.22.tgz","fileCount":11,"integrity":"sha512-KxLZ1JnBwk8vlCFw6LW0Z3pjJHsmxiV+wS1t0SKxAAPPCnSPuAPDm8lhqLrOIQJRPs2bEMvtMH3P2tL9koiOCg==","signatures":[{"sig":"MEYCIQCLOljSInZ1BxjyndTeRsx++tZFqE7QGKfjkidrDUZwAwIhALRETp2TKLLpE5MkWltSxnSbhAjv5xSI13PxKQqaKuy+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104752},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"859449a4626c0b8f13b2e2f6445c6067dd001240","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.22_1785218964105_0.5509092676047362","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@aipper/zentao-mcp-server","version":"0.1.24","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"license":"MIT","_id":"@aipper/zentao-mcp-server@0.1.24","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"homepage":"https://github.com/aipper/zentao-mcp#readme","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"dist":{"shasum":"f958cb459992a7c003ad6a38354466bedbba71a8","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.24.tgz","fileCount":11,"integrity":"sha512-RliNZi3kSoeM4gt0yRRSps8rxJG9ybArzaFpz7/u4Hjl2Z/0l7BA3wZMPkoyYo0nXlAaZT64BvuT+I9I/i9qgA==","signatures":[{"sig":"MEUCID1NC4dezbQQy8RolYGi/jd3QiUF84sQGp1755jGZQM/AiEAmkMVOeeGPt17foyyM9HbUoWSI1Sppwe4yUlE0vS/n6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106533},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"95515c3bfc386314726615eee16d11290841962b","private":false,"scripts":{"lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","start":"node src/index.js","release:npm":"bash scripts/release-npm.sh"},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"repository":{"url":"git+https://github.com/aipper/zentao-mcp.git","type":"git"},"_npmVersion":"11.4.2","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zentao-mcp-server_0.1.24_1785296677685_0.30867529988971","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@aipper/zentao-mcp-server","version":"0.1.26","private":false,"type":"module","description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","license":"MIT","main":"src/index.js","bin":{"zentao-mcp-server":"bin/zentao-mcp-server.js"},"engines":{"node":">=18.0.0"},"keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"repository":{"type":"git","url":"git+https://github.com/aipper/zentao-mcp.git"},"scripts":{"start":"node src/index.js","lint":"node -c src/index.js && node -c src/zentao.js && node -c src/tools.js && node -c src/solution.js && node -c scripts/smoke.mjs && node -c bin/zentao-mcp-server.js","smoke":"node scripts/smoke.mjs","release:npm":"bash scripts/release-npm.sh"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1"},"_id":"@aipper/zentao-mcp-server@0.1.26","gitHead":"6a1bd8224b594e99305edc5fd37add76f18d83d1","bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"homepage":"https://github.com/aipper/zentao-mcp#readme","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-ES+oDm/sznIPaeRX+hIjhJYFtW903qiXwtzj3cnVLiAnb1jXPI5NqIlVHLYhdZ11a1+S3YZCwZ1UkZcT7M6UCQ==","shasum":"4629bf209fecdd82b6bed6a3f3f4a35d8ea3093c","tarball":"https://registry.npmjs.org/@aipper/zentao-mcp-server/-/zentao-mcp-server-0.1.26.tgz","fileCount":11,"unpackedSize":112204,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFdaeJVAZk+bgR5ewnJjIXiUlTOc8GgTlUaigdd0aAHTAiBrcanhgHCrt0qU1D+SMMCYO/xzJq0QRZprNww0iL5WVw=="}]},"_npmUser":{"name":"aipper","email":"aipper@qq.com"},"directories":{},"maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zentao-mcp-server_0.1.26_1785381822707_0.6735481691948084"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T06:35:55.306Z","modified":"2026-07-30T03:23:43.004Z","0.1.4":"2026-02-28T06:35:55.599Z","0.1.5":"2026-02-28T07:05:50.733Z","0.1.6":"2026-02-28T07:33:40.465Z","0.1.7":"2026-02-28T07:58:33.712Z","0.1.8":"2026-03-04T01:59:37.006Z","0.1.9":"2026-03-04T06:49:46.683Z","0.1.10":"2026-03-12T08:14:57.793Z","0.1.11":"2026-03-21T06:56:24.836Z","0.1.12":"2026-04-02T09:18:51.950Z","0.1.13":"2026-07-23T02:16:10.185Z","0.1.14":"2026-07-23T03:09:03.783Z","0.1.15":"2026-07-23T10:06:34.300Z","0.1.17":"2026-07-24T03:20:54.494Z","0.1.18":"2026-07-26T03:52:31.802Z","0.1.19":"2026-07-27T05:35:40.176Z","0.1.20":"2026-07-28T02:48:00.745Z","0.1.21":"2026-07-28T03:52:51.582Z","0.1.22":"2026-07-28T06:09:24.247Z","0.1.24":"2026-07-29T03:44:37.834Z","0.1.26":"2026-07-30T03:23:42.851Z"},"bugs":{"url":"https://github.com/aipper/zentao-mcp/issues"},"license":"MIT","homepage":"https://github.com/aipper/zentao-mcp#readme","keywords":["mcp","mcp-server","zentao","bug-tracking","project-management","api-client"],"repository":{"type":"git","url":"git+https://github.com/aipper/zentao-mcp.git"},"description":"A minimal MCP server for ZenTao (token + focused bug workflow tools).","maintainers":[{"name":"aipper","email":"aipper@qq.com"}],"readme":"# zentao-mcp-server（自建）\n\n## 目标\n- 提供一个可运行的 MCP Server（stdio），连接你的禅道 RESTful API v1。\n- 最小功能：自动获取/缓存 Token + 常用 bug 工具。\n\n## 非目标\n- 不在仓库内存任何密钥/Token。\n- 不暴露无边界的通用 REST 写接口。\n- 不保证覆盖你禅道的全部 API；优先支持高频 bug 流程，再按你的流程补工具。\n\n## 依赖\n- Node.js 18+（需要内置 `fetch`）\n\n## License\nMIT - 详见 [LICENSE](./LICENSE) 文件\n\n## 配置\n复制 `.env.example` 为 `.env` 并填写：\n- `ZENTAO_BASE_URL`\n- `ZENTAO_ACCOUNT`\n- `ZENTAO_PASSWORD`\n- （可选）`ZENTAO_PRODUCT_ID`：你的禅道实例若报 `Need product id` 时设置\n- （可选）`ZENTAO_PROJECT_ID`：按项目查 bug 时设置（直接 `/projects/{id}/bugs`）\n- （可选）`ZENTAO_PROJECT_SET_ID`：你的 bug 若在项目集视角，设置项目集 ID\n- （可选）`ZENTAO_DEFAULT_RESOLVED_BUILD`：解决 bug 时的默认「解决版本」，默认 `trunk`（很多实例必填）\n- （可选）`ZENTAO_MY_BUGS_PATH`：我的 bug 专用接口路径（如 `/my/bug`）\n- （可选）`ZENTAO_BUGS_FALLBACK_PATHS`：bug 列表回退路径（逗号分隔）\n- （可选）`ZENTAO_PROJECT_SET_BUGS_PATHS`：项目集 bug 路径模板（支持 `{projectSetId}`）\n\n> 注意：不同禅道版本/部署方式的 token 端点与返回结构可能不同；可通过 `ZENTAO_TOKEN_PATH`/`ZENTAO_API_PREFIX` 调整。\n>\n> 默认情况下不需要配置 `ZENTAO_API_PREFIX`（默认值是 `/api.php/v1`）。\n>\n> 安全约束：`ZENTAO_API_PREFIX` / `ZENTAO_TOKEN_PATH` 只支持相对路径；默认要求 `ZENTAO_BASE_URL` 使用 HTTPS。`ZENTAO_BASE_URL` 可为根路径或子目录部署地址（如 `https://zentao.example.com/zentao`）。\n\n## 安装与运行\n```bash\nnpm i\ncp .env.example .env\nnpm start\n```\n\n## npm 安装后的运行\n发布到 npm 后，推荐用 `npx` 启动（适合 MCP 客户端配置）：\n```bash\nnpx -y @aipper/zentao-mcp-server\n```\n\n## 验证（不依赖 MCP 客户端）\n```bash\nnpm i\ncp .env.example .env\nset -a; source .env; set +a\nnpm run smoke\n```\n期望结果：\n- 输出一行 `token: xxxx…yyyy source: ...`\n- 输出 `GET /projects status: 200`（或你的禅道实际返回码）\n\n## Claude Desktop / Cursor 示例（stdio）\n优先使用 `npx`（npm 发布版）：\n```json\n{\n  \"mcpServers\": {\n    \"zentao\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aipper/zentao-mcp-server\"],\n      \"env\": {\n        \"ZENTAO_BASE_URL\": \"https://zentao.example.com\",\n        \"ZENTAO_ACCOUNT\": \"your_account\",\n        \"ZENTAO_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n本地源码调试可继续用 `node src/index.js`：\n\n示例（Claude Desktop 的 `mcpServers` 风格，按你的客户端实际字段为准）：\n```json\n{\n  \"mcpServers\": {\n    \"zentao\": {\n      \"command\": \"node\",\n      \"args\": [\"src/index.js\"],\n      \"cwd\": \"/ABS/PATH/TO/zentao\",\n      \"env\": {\n        \"ZENTAO_BASE_URL\": \"https://zentao.example.com\",\n        \"ZENTAO_ACCOUNT\": \"your_account\",\n        \"ZENTAO_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n## 常见错误（`-32000`）\n`-32000` 通常是客户端侧“通用 MCP 调用失败”映射码，优先检查：\n- `env` 是否完整传入（尤其是 `ZENTAO_BASE_URL`/`ZENTAO_ACCOUNT`/`ZENTAO_PASSWORD`）。\n- 默认要求 HTTPS；如果你的实例只能走 HTTP，必须显式设置 `ZENTAO_ALLOW_INSECURE_HTTP=true`，且只建议临时内网调试使用。\n- 若报 `Need product id`，请设置 `ZENTAO_PRODUCT_ID`，或在 `get_my_bugs` 传 `productId`。\n- 若你的 bug 在“项目集/我的视角”而非产品，建议设置 `ZENTAO_PROJECT_SET_ID`，并配置 `ZENTAO_MY_BUGS_PATH=/my/bug`。\n- 项目集场景下，优先直接调用 `get_my_bugs` 并传 `projectSetId`，必要时再显式传 `path=\"/my/bug\"`；不要先依赖 `list_my_projects` 找项目。\n- 有些项目集本身没有创建实际项目，但仍然存在“我的 bug”；这类数据可能不会出现在 `list_my_projects` 结果里。\n- `get_my_bugs` 会按候选路径回退（包含项目集路径）；即使首个路径返回空列表也会继续尝试，并会把多端点结果合并去重。\n- `get_my_bugs.total` 表示最终“我的 bug”总数；若需排查底层一共扫描了多少条，可看 `raw.scannedTotal`。\n- 排查时看工具返回里的 `raw.triedPaths` / `raw.paths`，可确认每条路径的返回码与命中数量。\n- `ZENTAO_API_PREFIX`/`ZENTAO_TOKEN_PATH` 是否和你的禅道实例一致，且使用相对路径。\n- MCP 客户端是否真的在执行 `npx -y @aipper/zentao-mcp-server`（而不是旧的本地命令）。\n- 客户端日志中是否有启动报错（如找不到命令、401、超时）。\n\n## 已实现工具\n- `get_token`：获取/刷新 token（始终只回显脱敏后的 token 摘要）\n- `list_my_projects`：示例：列出“我参与的项目”（字段匹配基于常见返回结构，可能需按你的实例微调；不适合作为项目集 bug 的唯一发现入口）\n- `get_my_bugs`：获取“指派给我”的 bug（支持 `status`/`keyword`/`limit`/`page`/`productId`/`projectSetId`，默认路径 `/bugs`；`path` 仅允许 `/bugs`、`/my/bug`、`/my/bugs`）\n- `get_bug_detail`：按 `id` 获取 bug 详情（固定读取 `/bugs/{id}`；返回安全裁剪后的 bug 摘要与同源图片链接，不直接透传外部图片地址或原始附件外链）。当 bug 被激活过时，额外返回 `activation` 摘要 `{count, lastActor, lastDate, lastComment}`，其中 `lastComment` 是最近一次激活时测试人员填写的评论（已去除 HTML）。bug 摘要现包含 `activatedCount`/`activatedDate`。\n- `get_bug_actions`：按 `id` 获取 bug 的动作历史（激活/解决/关闭/评论等）。同一 `/bugs/{id}` 端点，返回 `actions:[{id, actor, action, date, comment, history:[{field, old, new}]}]`（`comment` 已去 HTML）和 `activation` 摘要。当 bug 被激活、需要拿到激活评论/字段变更明细时使用；`get_bug_detail` 的 `activation.lastComment` 已覆盖\"只看最近一次激活评论\"的常见场景，需完整历史再用本工具。\n- `resolve_bug`：按 `id` 调用真正的解决接口 `POST /bugs/{id}/resolve`（默认 `resolution=fixed`；`resolvedBuild` 默认取 `ZENTAO_DEFAULT_RESOLVED_BUILD`/`trunk`；优先 `solutionModules`，兼容纯文本 `solution`）\n- `batch_resolve_my_bugs`：批量解决“我的 bug”（同上 resolve API；默认筛选 `status=active`，支持 `productId`/`projectSetId`/`resolvedBuild`，默认遇错即停，`maxItems` 上限 100；优先共享 `solutionModules`）\n- `close_bug`：按 `id` 关闭 bug\n- `verify_bug`：验证结果处理（`pass`=关闭，`fail`=激活）\n- `comment_bug`：按 `id` 添加备注\n\n### 结构化解决说明 `solutionModules`（推荐）\n\n字段：\n- `rootCause`：【根因】触发条件 + 错误行为\n- `fixApproach`：【修复思路】策略说明\n- `logicChange`：【改动逻辑】关键分支/校验/流程变化\n- `impact`：【影响范围】受影响场景 + 结果型回归点\n\n服务端会格式化为多行文本写入禅道，例如：\n\n```text\n【根因】\n...\n\n【修复思路】\n...\n\n【改动逻辑】\n...\n\n【影响范围】\n...\n```\n\n优先级：`solutionModules`（任一非空字段）> 纯文本 `solution` > `comment` 兜底。\n\n**解决版本 `resolvedBuild`**：很多禅道实例校验「解决版本不能为空」。请传工具参数 `resolvedBuild`，或配置 `ZENTAO_DEFAULT_RESOLVED_BUILD`（默认 `trunk`）。无版本列表时 `trunk` 通常可用。\n\n**不要用 HTTP 编辑冒充解决**：`PUT /bugs/{id}` 或网页表单“编辑”只可能改字段/状态，**不会**走 resolve 动作，也**不会**把 MCP 的 `solutionModules` 模板写进解决说明。必须用 `resolve_bug` / `batch_resolve_my_bugs`。\n\n示例参数：\n- `resolve_bug`（推荐）：\n```json\n{\n  \"id\": 123,\n  \"resolution\": \"fixed\",\n  \"resolvedBuild\": \"trunk\",\n  \"solutionModules\": {\n    \"rootCause\": \"分页参数为空时仍进入查询构造，导致列表请求异常。\",\n    \"fixApproach\": \"为空参数补默认值，并在构造前做兜底校验。\",\n    \"logicChange\": \"page/size 为空时回落默认值；非法值改为明确错误提示，避免前端重复提交。\",\n    \"impact\": \"列表查询与分页切换；重点回归空参进入与异常提示是否收敛。\"\n  }\n}\n```\n- `resolve_bug`（兼容纯文本）：`{\"id\":123,\"resolution\":\"fixed\",\"resolvedBuild\":\"trunk\",\"solution\":\"补齐分页参数为空时的默认值分支，避免空值继续进入查询构造；同时收敛异常提示，防止前端重复触发提交\"}`\n- `batch_resolve_my_bugs`（推荐共享模块）：\n```json\n{\n  \"status\": \"active\",\n  \"maxItems\": 20,\n  \"resolvedBuild\": \"trunk\",\n  \"solutionModules\": {\n    \"rootCause\": \"状态切换时旧数据判空顺序错误，触发空指针。\",\n    \"fixApproach\": \"统一状态切换的判空与分支顺序。\",\n    \"logicChange\": \"保存前增加兜底校验；异常改为明确提示而非静默失败。\",\n    \"impact\": \"状态流转相关保存与切换场景。\"\n  }\n}\n```\n- `get_my_bugs`（项目集）：`{\"status\":\"active\",\"projectSetId\":1001,\"limit\":50}`\n- `get_my_bugs`（我的）：`{\"status\":\"active\",\"path\":\"/my/bug\",\"limit\":50}`\n- `get_my_bugs`（项目集 + 我的）：`{\"status\":\"active\",\"projectSetId\":1001,\"path\":\"/my/bug\",\"limit\":50}`\n- `get_my_bugs`（按产品）：`{\"status\":\"active\",\"productId\":1,\"limit\":50}`\n- `close_bug`：`{\"id\":123,\"comment\":\"验证通过，关闭\"}`\n- `verify_bug`：`{\"id\":123,\"result\":\"pass\",\"comment\":\"验证通过\"}`\n- `comment_bug`：`{\"id\":123,\"comment\":\"已复现，正在定位根因\"}`\n\n`solutionModules` / `solution` / `comment` 不要写 `Evidence:`、`Verify:`、文件路径、编译命令或“已修复并自测”这类无法说明改动内容的表述。\n\n使用建议：如果用户提到“项目集”“我的 bug”“项目列表里找不到但禅道里能看到 bug”，优先走项目集视角的 `get_my_bugs`，不要先让用户证明项目已创建。\n\n## 安全建议\n- **默认要求使用 HTTPS**：HTTP 会明文传输账号密码和数据，存在安全风险；如确需兼容老旧实例，需显式设置 `ZENTAO_ALLOW_INSECURE_HTTP=true`。\n- 使用最小权限账号（仅需要的项目权限），避免使用管理员账号。\n- `get_token` 不再支持回显完整 token。\n- 调试日志会自动脱敏 `query`、`body`、`comment`、`solution` 等敏感字段，但仍建议仅在排查问题时临时开启。\n\n## 调试\n如需查看详细日志，可设置环境变量：\n```bash\nZENTAO_DEBUG=true npx -y @aipper/zentao-mcp-server\n```\n日志会输出到 stderr，不影响 MCP 协议通信。\n\n## 发布到 npm\n脚本：`scripts/release-npm.sh`（参考 `aiws` 的发布流程，默认 dry-run）。\n\n常用命令：\n```bash\n# dry-run：只检查 + npm pack --dry-run，不会发布\nnpm run release:npm\n\n# 自动递增版本（patch/minor/major）+ commit + tag（不发布）\nnpm run release:npm -- --bump patch\n\n# 发布（会二次确认；默认自动 patch 递增）\nnpm run release:npm -- --publish\n\n# 版本对齐 + commit + tag（不发布）\nnpm run release:npm -- --release v0.1.0\n```\n\n注意：\n- 若 `package.json` 为 `private: true`，发布前请改成 `false` 并确认包名可用。\n- 可加 `--require-tag` 要求 HEAD 上有匹配版本的 tag。\n- 若发布时报 `403`，通常是包名归属问题；建议改为 scoped 包名（如 `@yourname/zentao-mcp-server`）。\n","readmeFilename":"README.md"}