{"_id":"@aot-tech/clockify-mcp-server","_rev":"12-cad436de8d321c1341b11507639c372c","name":"@aot-tech/clockify-mcp-server","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.0","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"homepage":"https://github.com/aot-tech/aot-mcp-dashboard-v1/tree/main/aot-mcp-dashboard/mcp-servers/clockify","bugs":{"url":"https://github.com/aot-tech/aot-mcp-dashboard-v1/issues"},"bin":{"clockify-mcp-server":"build/src/index.js"},"dist":{"shasum":"2c4604905737ed59f717dd54bec3c612c6dac48f","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.0.tgz","fileCount":45,"integrity":"sha512-HLh7FKkIlw6MJJyvE3OA6JlJ8umNX0nSx/AYMhOlYrI2K+jryvbfMPD1469RjgO2se8Q8J30LbntW1amK1fbAg==","signatures":[{"sig":"MEQCICGkebawjseSHG6iY6eJYI/YH2+S1vio3qqiUSfzUeRvAiBYPKtAp2MQm+L1bp3WV7Tb+jSmW/zTG02ESgRJM5m03g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64445},"main":"build/src/index.js","types":"build/src/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"4be4c76365e62a22e396db5dbf9958c720545b31","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/src/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","actor":{"name":"syama.sundara","type":"user","email":"syama.sundara@aot-technologies.com"},"email":"syama.sundara@aot-technologies.com"},"repository":{"url":"git+https://github.com/aot-tech/aot-mcp-dashboard-v1.git","type":"git","directory":"aot-mcp-dashboard/mcp-servers/clockify"},"_npmVersion":"10.8.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.0_1752055417963_0.02253697915042574","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.1","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.1","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/src/index.js"},"dist":{"shasum":"ef626b04139e379db421b106f982038203bff3b1","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.1.tgz","fileCount":45,"integrity":"sha512-nEGytM0mH5OxV8fXAcUKsdZ0MQxUUkeqgjhF6wQKhyRUl2NU88p4ckc8vNd0GkTg+c+SCuciF7Ngyi4UHXPWEA==","signatures":[{"sig":"MEYCIQC8yMGRgdqD4HGa1Jf6eZOtpbPkYb0LsDOq9wRvbseGBAIhANC6O8a8BwIAAsdgSvZh+xlyq33q2+QLmjzOQuP5r9Rw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64114},"main":"build/src/index.js","types":"build/src/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"4be4c76365e62a22e396db5dbf9958c720545b31","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/src/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","actor":{"name":"syama.sundara","type":"user","email":"syama.sundara@aot-technologies.com"},"email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.1_1752055768106_0.21272329284873992","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.2","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.2","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"6691890181c719388a164bf8a36833a929618be2","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.2.tgz","fileCount":43,"integrity":"sha512-9u5fcsqxcLuQcayeHDyJV0ZdXUfrItVZR/kfBKsixV53kgGye/tjVQQ+N/hDUM0wofiGmvlRogRAsVebYVrOfg==","signatures":[{"sig":"MEUCIAvOkeYUN3oMlgpCrpnJazAVQaBTHGOW7nHhDu1YGZEyAiEA3IH4NT57PYvPmax6nMIH6Q27mho6kwrFMQlu8mF7j6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62242},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"a57ed6f0500f7a0992740fa72234d3a39ecc6be5","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","actor":{"name":"syama.sundara","type":"user","email":"syama.sundara@aot-technologies.com"},"email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.2_1752062856068_0.3694920068416909","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.3","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.3","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"62529e763d5fac90d4f5ca1d013dcd19701d217d","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.3.tgz","fileCount":43,"integrity":"sha512-HFuJX/DnvdrDELaIuYfNWZp+j731sScnY675A53EwF2X7KVa9a5lEBcmR5JqjGBKTm0T6nZR2VcJrRODI3cYiQ==","signatures":[{"sig":"MEQCIGmHcg+nqlnFHkU0/48tMrLopy/+zG9eX/LpY1hhNma5AiBuV/0itFagR5+hqFI+KpcVSKxVsMBPSBK/ujko3taW0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62245},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"a291a8e60de0e17beafaac5aa9a2110cb2092e4e","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","actor":{"name":"syama.sundara","type":"user","email":"syama.sundara@aot-technologies.com"},"email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.3_1752131849055_0.05264620775807538","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.4","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.4","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"340785be1c69c15678990f1a24030da303710a8e","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.4.tgz","fileCount":43,"integrity":"sha512-VMqJjyC2umGifQ1M3RGp4x6eXQSq+AvOrEC/ZTn6cipG0sJK/9bGDx5BDv2m+fvIOUwgDrDQ1mtS/ZUaLgd5VQ==","signatures":[{"sig":"MEYCIQDQCCwBbkNHcM3gH9aRFwQdnZcU5ERTiA5FdbSsFfuh2QIhAOnZdcJOhTmo6zcCtkqvkSzKWzYc3CPbvWFbbOsbBMQi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62526},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"d9405233c1deb9f905781faaa9495d8e6c51146a","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.4_1752219084239_0.26432679172931217","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.5","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.5","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"aee7fc2b56abbeb722c62262e30bec5f39b5f9a1","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.5.tgz","fileCount":43,"integrity":"sha512-dE6GWdajnrWjA8rJ6DfLMmPRbegO3PHB/ovG+wbFA9N0yrJL4tGUJ1hiqA4P4h3zShQQ4dqVmqL8Zn5p0kouow==","signatures":[{"sig":"MEYCIQCu5wDYNrufaEvfsCnr6TZShOnfj0BVoUUnp//3DUed/QIhAI2HdDZrDfEfDS3ui3Hqh2WtJ1XBY1vk0iIu2KNZMRs+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62675},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"8815a7119e387c39f4f9e9ea9c60ee0640df21cb","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.5_1752220264625_0.09308506262933358","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.6","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.6","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"89727316cf3b7672ecd8f28eafffd3d227cf38fd","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.6.tgz","fileCount":43,"integrity":"sha512-fw0sbLG7wpurrbSqXtN+aso/zn1PexbUjqukeIZiq9oB+PDvxAuJf5xNEaOb61pPvzLa5u4Lqxd0Nk7eD+021Q==","signatures":[{"sig":"MEQCIFEur4YNuO+BQRGDJ6KOw74PQbCq2R8xEJwsKh1xueXJAiBKAILewHrkuogR85+PbAmI/Vy/vJ05EPK4ctv3EdYSGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62486},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"22de1abe4353304cda07ac4479ebb921a75112aa","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.6_1752225794285_0.7566933264913627","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.7","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.7","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"8480639458a4927f738e00c8bae4c4175a23ee7e","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.7.tgz","fileCount":43,"integrity":"sha512-Q8V8X6CrOWbM4rzEvlN+qYDvsXbF0tKrX2AzfLOS60klT9PdUXZxdhc7qztcGLkTizM/Zi1TQHslMfLeVS+H+g==","signatures":[{"sig":"MEUCIFEvFNLY8wfSmGe75dGYbLtDQv14f8F4UD23xQdQQvMwAiEAtAB2ricYDm3pHkR2vb6mALEKDtDdXqM942XgZK2RV6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62446},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"7b35bdf80cedf0795dd755b8e5583124bd9861c9","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.7_1752226895978_0.10346301470219155","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.8","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.8","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"db7362d4667bcb28163fa112cbe318c2245fd9c6","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.8.tgz","fileCount":47,"integrity":"sha512-5DcmSr7IiNTsz8rHUPHeBuC+uTPL7ktvMFoeNl/IIRXD3FSPxHhJA9ZNhqS1pcIYTfQWStG8cHzZwNFinlFTdA==","signatures":[{"sig":"MEUCIErq1lMH+WZBj8igPySF9Qy8JjMMALE+EnyBu54PppH4AiEA5Nna1+npKgqQkFjNV5LTQyFmHnG91y458pIXI2ZuwbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103616},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"6257b0fa54250f04fa22501e9b4ae463dd9f91ce","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.8_1752643064345_0.8573361861123674","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aot-tech/clockify-mcp-server","version":"1.0.9","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.0.9","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"d9acf989e58dbae0c7cb9892ca78bed969c388b1","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.0.9.tgz","fileCount":47,"integrity":"sha512-X0M+fjK9ZQG87Nifbiq77439TRW6AhTnbKZE83oAuQE8YKZTm/qkyELrYybHMwcjWT3Ab4kns2BOsXlK7biTTA==","signatures":[{"sig":"MEQCIDXxNgeBUoZBynW9FqxyG6O2KeTGdywewUbm6FfBu+rnAiAX2k8/luKrBDFuBoN2bcoObQwOqdM+rDegAD2lK9+xmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103951},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"ace76d40ca12d9d9e79bb524dc7842aa1c9b44f0","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.0.9_1752664553445_0.37998981006797017","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aot-tech/clockify-mcp-server","version":"1.1.0","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"license":"MIT","_id":"@aot-tech/clockify-mcp-server@1.1.0","maintainers":[{"name":"gopu-aot","email":"gopu.k@aot-technologies.com"},{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},{"name":"hasgar-aot","email":"hasgar.d@aot-technologies.com"}],"bin":{"clockify-mcp-server":"build/index.js"},"dist":{"shasum":"3ee38f56efda3a7f3c17eec48b43db0ee3a498e2","tarball":"https://registry.npmjs.org/@aot-tech/clockify-mcp-server/-/clockify-mcp-server-1.1.0.tgz","fileCount":49,"integrity":"sha512-b+eSapT0h6EOEID2Nq9iDeWBrB0Hx5S5HC23OX1hpos+QLWPp/KIaJRTlF18J5iv/PgmC3nmSncLpBHtaASD4w==","signatures":[{"sig":"MEYCIQD6z/8aW2/MJQaQbIYou9eJz5la95XQDvJJWj/nyXZHsAIhAOnFqFHZCkY0OuSSPqiH/du+s2J2B1Whq02W/L6MP9TO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110364},"main":"build/index.js","types":"build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"71417bbc8c641d0f1e34cb0f073c09d93fe6155a","scripts":{"dev":"cross-env PORT=3000 IS_LOCAL=true NODE_ENV=development TZ='UTC' nodemon --exec tsx ./src/index.ts","test":"node --test test/*.test.js","build":"tsc","start":"node build/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"syama.sundara","email":"syama.sundara@aot-technologies.com"},"repository":{"type":"git"},"_npmVersion":"11.4.2","description":"MCP Server for Clockify time tracking integration with AI tools","directories":{},"_nodeVersion":"20.18.3","dependencies":{"shx":"^0.4.0","tsx":"^4.20.1","zod":"^3.24.2","cors":"^2.8.5","axios":"^1.8.4","dotenv":"^16.5.0","express":"^5.1.0","nodemon":"^3.1.10","ts-node":"^10.9.2","cross-env":"^7.0.3","typescript":"^5.8.3","@types/cors":"^2.8.19","@types/node":"^22.15.15","@types/express":"^5.0.3","tsconfig-paths":"^4.2.0","@modelcontextprotocol/sdk":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^20.0.0","ts-node-dev":"^2.0.0","@types/express":"^5.0.3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-server_1.1.0_1761213554564_0.5916341610630791","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-07-09T10:03:37.874Z","modified":"2026-03-23T06:53:03.373Z","1.0.0":"2025-07-09T10:03:38.132Z","1.0.1":"2025-07-09T10:09:28.291Z","1.0.2":"2025-07-09T12:07:36.232Z","1.0.3":"2025-07-10T07:17:29.253Z","1.0.4":"2025-07-11T07:31:24.415Z","1.0.5":"2025-07-11T07:51:04.804Z","1.0.6":"2025-07-11T09:23:14.515Z","1.0.7":"2025-07-11T09:41:36.222Z","1.0.8":"2025-07-16T05:17:44.507Z","1.0.9":"2025-07-16T11:15:53.669Z","1.1.0":"2025-10-23T09:59:14.751Z"},"license":"MIT","keywords":["mcp","model-context-protocol","clockify","time-tracking","ai-tools","claude","typescript","aot-tech"],"repository":{"type":"git"},"description":"MCP Server for Clockify time tracking integration with AI tools","maintainers":[{"email":"syama.sundara@aot-technologies.com","name":"syama.sundara"},{"email":"hasgar.d@aot-technologies.com","name":"hasgar-aot"}],"readme":"# Clockify MCP Server\r\n\r\nA Model Context Protocol (MCP) server implementation for Clockify time tracking integration. This server enables AI assistants to interact with Clockify's time tracking features through natural language commands.\r\n\r\n## 🚀 Features\r\n\r\n- **Time Entry Management**: Create, list, and manage time entries\r\n- **Project Integration**: Access and manage Clockify projects\r\n- **User Management**: Retrieve user information and groups\r\n- **Workspace Support**: Multi-workspace functionality\r\n- **Task Tracking**: Integrate with project tasks\r\n- **Reports**: Generate detailed time tracking reports\r\n- **Stateless Architecture**: Pure stateless design with AsyncLocalStorage\r\n- **Authentication**: Bearer token authentication support\r\n- **Debug Logging**: Conditional debug logging for local development\r\n\r\n## 🛠️ Tech Stack\r\n\r\n- **Runtime**: Node.js (v20+)\r\n- **Language**: TypeScript\r\n- **Framework**: Express.js with MCP SDK\r\n- **API Client**: Axios for Clockify API integration\r\n- **Validation**: Zod schemas\r\n- **Testing**: Node.js built-in test runner\r\n\r\n## 📦 Installation\r\n\r\n### Prerequisites\r\n- Node.js v20.0.0 or higher\r\n- npm v10.0.0 or higher\r\n- Clockify account with API access\r\n\r\n### Setup\r\n\r\n1. **Install dependencies:**\r\n   ```bash\r\n   npm install\r\n   ```\r\n\r\n2. **Build the project:**\r\n   ```bash\r\n   npm run build\r\n   ```\r\n\r\n3. **Environment Configuration:**\r\n   \r\n   Create a `.env` file:\r\n   ```env\r\n   # Clockify API Configuration\r\n   CLOCKIFY_API_URL=https://api.clockify.me/api/v1\r\n   CLOCKIFY_API_TOKEN=your_clockify_api_token_here\r\n   \r\n   # Server Configuration  \r\n   PORT=3000\r\n   NODE_ENV=development\r\n   IS_LOCAL=true\r\n   TZ=UTC\r\n   ```\r\n\r\n## 🏃‍♂️ Running the Server\r\n\r\n### Development Mode\r\n```bash\r\nnpm run dev\r\n```\r\nServer runs with auto-restart on file changes at `http://localhost:3000`.\r\n\r\n### Production Mode\r\n```bash\r\nnpm start\r\n```\r\n\r\n### Testing\r\n```bash\r\nnpm test\r\n```\r\n\r\n### Debug Logging\r\n\r\nDebug logging is automatically enabled in development mode and disabled in production. For manual control:\r\n\r\n```bash\r\n# Enable debug logging\r\nNODE_ENV=development npm start\r\n# OR\r\nDEBUG_MODE=true npm start\r\n\r\n# Disable debug logging (production)\r\nNODE_ENV=production npm start\r\n```\r\n\r\nDebug logs are written to:\r\n- Console with `[CLOCKIFY-MCP-DEBUG]` prefix and timestamps\r\n- No file storage (npm package friendly)\r\n\r\nSee [DEBUG_SETUP.md](./DEBUG_SETUP.md) for detailed configuration.\r\n\r\n## 🔧 Configuration\r\n\r\n### Clockify API Token\r\n\r\nTo get your Clockify API token:\r\n\r\n1. Log in to your Clockify account\r\n2. Go to **Profile Settings** → **API** \r\n3. Generate a new API key\r\n4. Copy the token to your `.env` file\r\n\r\n### Smithery Configuration\r\n\r\nFor use with AI assistants like Claude Desktop, create a `smithery.yaml` configuration:\r\n\r\n```yaml\r\nstartCommand:\r\n  type: stdio\r\n  configSchema:\r\n    type: object\r\n    required:\r\n      - clockifyApiToken\r\n    properties:\r\n      clockifyApiUrl:\r\n        type: string\r\n        default: https://api.clockify.me/api/v1\r\n        description: Base URL for Clockify API\r\n      clockifyApiToken:\r\n        type: string\r\n        default: YOUR_CLOCKIFY_API_TOKEN_HERE\r\n        description: Clockify API token for authentication\r\n  commandFunction: |\r\n    (config) => ({\r\n      command: 'node',\r\n      args: ['build/src/index.js'],\r\n      env: {\r\n        CLOCKIFY_API_URL: config.clockifyApiUrl,\r\n        CLOCKIFY_API_TOKEN: config.clockifyApiToken\r\n      }\r\n    })\r\n```\r\n\r\n## 🔌 Integration with AI Assistants\r\n\r\n### Claude Desktop\r\n\r\n#### Via Smithery (Recommended)\r\n```bash\r\nnpx -y @smithery/cli install clockify-mcp-server --client claude\r\n```\r\n\r\n#### Manual Installation\r\n\r\n1. Install TypeScript globally:\r\n   ```bash\r\n   npm i -g ts-node\r\n   ```\r\n\r\n2. Add to your Claude Desktop configuration (`claude_desktop_config.json`):\r\n   ```json\r\n   {\r\n     \"mcpServers\": {\r\n       \"clockify\": {\r\n         \"command\": \"node\",\r\n         \"args\": [\"/absolute/path/to/clockify-mcp-server/build/src/index.js\"],\r\n         \"env\": {\r\n           \"CLOCKIFY_API_TOKEN\": \"your_clockify_api_token_here\"\r\n         }\r\n       }\r\n     }\r\n   }\r\n   ```\r\n\r\n### MCP Dashboard Integration\r\n\r\nThe server integrates seamlessly with the MCP Dashboard backend:\r\n\r\n```javascript\r\n// Backend configuration\r\nconst mcpServers = {\r\n  clockify: {\r\n    url: 'http://localhost:3000',\r\n    name: 'Clockify Time Tracking'\r\n  }\r\n};\r\n```\r\n\r\n## 🛠️ Available Tools\r\n\r\n### Time Entries\r\n\r\n#### `create_entry`\r\nCreate a new time entry in Clockify.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n- `description` (string, required): Time entry description\r\n- `start` (date, required): Start time\r\n- `end` (date, required): End time\r\n- `projectId` (string, optional): Project ID\r\n- `billable` (boolean, optional): Whether entry is billable (default: true)\r\n\r\n**Example Usage:**\r\n```\r\n\"Create a time entry for 'Website development' from 9 AM to 5 PM today in project XYZ\"\r\n```\r\n\r\n#### `list_entries`\r\nList time entries for a user within a date range.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n- `userId` (string, required): User ID\r\n- `start` (date, required): Start date for search\r\n- `end` (date, required): End date for search\r\n\r\n**Example Usage:**\r\n```\r\n\"Show me my time entries for this week\"\r\n```\r\n\r\n### Projects\r\n\r\n#### `find_project`\r\nSearch for projects in a workspace.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n- `name` (string, optional): Project name filter\r\n\r\n**Example Usage:**\r\n```\r\n\"Find all projects containing 'website' in the name\"\r\n```\r\n\r\n### Users & Groups\r\n\r\n#### `get_current_user`\r\nGet information about the current authenticated user.\r\n\r\n**Example Usage:**\r\n```\r\n\"What's my user information?\"\r\n```\r\n\r\n#### `get_all_users`\r\nGet all users in a workspace.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n\r\n**Example Usage:**\r\n```\r\n\"Show me all users in the workspace\"\r\n```\r\n\r\n#### `get_all_groups`\r\nGet all user groups in a workspace.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n\r\n**Example Usage:**\r\n```\r\n\"List all user groups\"\r\n```\r\n\r\n### Workspaces\r\n\r\n#### `find_workspaces`\r\nList all accessible workspaces for the authenticated user.\r\n\r\n**Example Usage:**\r\n```\r\n\"What workspaces do I have access to?\"\r\n```\r\n\r\n### Tasks\r\n\r\n#### `find_tasks`\r\nFind tasks within a project.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n- `projectId` (string, required): Project ID\r\n\r\n**Example Usage:**\r\n```\r\n\"Show me all tasks in the current project\"\r\n```\r\n\r\n### Reports\r\n\r\n#### `get_detailed_report`\r\nGenerate detailed time tracking reports.\r\n\r\n**Parameters:**\r\n- `workspaceId` (string, required): Workspace ID\r\n- `dateRangeStart` (date, required): Report start date\r\n- `dateRangeEnd` (date, required): Report end date\r\n- `users` (array, optional): User IDs to include\r\n- `projects` (array, optional): Project IDs to include\r\n\r\n**Example Usage:**\r\n```\r\n\"Generate a detailed report for last month\"\r\n```\r\n\r\n## 🏗️ Project Structure\r\n\r\n```\r\nsrc/\r\n├── index.ts                 # Main server entry point\r\n├── config/\r\n│   └── api.ts              # API configuration and client setup\r\n├── tools/                   # MCP tool implementations\r\n│   ├── entries.ts          # Time entry management tools\r\n│   ├── projects.ts         # Project management tools\r\n│   ├── users.ts            # User management tools\r\n│   ├── workspaces.ts       # Workspace tools\r\n│   ├── tasks.ts            # Task management tools\r\n│   └── reports.ts          # Reporting tools\r\n├── clockify-sdk/           # Clockify API SDK\r\n│   ├── entries.ts          # Time entries API client\r\n│   ├── projects.ts         # Projects API client\r\n│   ├── users.ts            # Users API client\r\n│   ├── workspaces.ts       # Workspaces API client\r\n│   ├── tasks.ts            # Tasks API client\r\n│   └── reports.ts          # Reports API client\r\n├── validation/             # Zod validation schemas\r\n│   ├── entries/            # Entry validation schemas\r\n│   ├── projects/           # Project validation schemas\r\n│   └── reports/            # Report validation schemas\r\n└── types/\r\n    └── index.ts            # TypeScript type definitions\r\n```\r\n\r\n## 🔒 Authentication\r\n\r\nThe server uses stateless bearer token authentication:\r\n\r\n1. **Token Extraction**: Extracts bearer tokens from Authorization headers\r\n2. **Validation**: Validates tokens against Clockify API\r\n3. **Context Isolation**: Uses AsyncLocalStorage for request isolation\r\n4. **Security**: No session storage, completely stateless\r\n\r\n### Authentication Flow\r\n\r\n```typescript\r\n// Request with Bearer token\r\nAuthorization: Bearer your_clockify_api_token\r\n\r\n// Server validates token with Clockify API\r\nfetch('https://api.clockify.me/api/v1/workspaces', {\r\n  headers: { 'X-Api-Key': token }\r\n});\r\n\r\n// If valid, request proceeds with token context\r\n```\r\n\r\n## 📊 Monitoring & Health Checks\r\n\r\n### Health Endpoint\r\n```http\r\nGET /health\r\n```\r\n\r\n**Response:**\r\n```json\r\n{\r\n  \"status\": \"healthy\",\r\n  \"service\": \"Clockify MCP Server\",\r\n  \"version\": \"1.0.0\",\r\n  \"timestamp\": \"2024-01-01T00:00:00.000Z\",\r\n  \"clockify_api_url\": \"https://api.clockify.me/api/v1\",\r\n  \"stateless\": true\r\n}\r\n```\r\n\r\n### Error Handling\r\n\r\nThe server provides comprehensive error handling:\r\n\r\n- **Authentication Errors**: Invalid or missing API tokens\r\n- **API Errors**: Clockify API communication issues\r\n- **Validation Errors**: Invalid request parameters\r\n- **Network Errors**: Connection timeouts and failures\r\n\r\nError responses follow MCP protocol standards:\r\n\r\n```json\r\n{\r\n  \"jsonrpc\": \"2.0\",\r\n  \"error\": {\r\n    \"code\": -32001,\r\n    \"message\": \"Authentication required: Valid Bearer token required\"\r\n  },\r\n  \"id\": null\r\n}\r\n```\r\n\r\n## 🚀 Deployment\r\n\r\n### Docker Deployment\r\n\r\n```dockerfile\r\nFROM node:20-alpine\r\nWORKDIR /app\r\nCOPY package*.json ./\r\nRUN npm ci --only=production\r\nCOPY . .\r\nRUN npm run build\r\nEXPOSE 3000\r\nCMD [\"npm\", \"start\"]\r\n```\r\n\r\n### Environment Variables\r\n\r\n| Variable | Required | Default | Description |\r\n|----------|----------|---------|-------------|\r\n| `CLOCKIFY_API_URL` | No | https://api.clockify.me/api/v1 | Clockify API base URL |\r\n| `CLOCKIFY_API_TOKEN` | Yes | - | Clockify API token |\r\n| `PORT` | No | 3000 | Server port |\r\n| `NODE_ENV` | No | development | Environment mode |\r\n| `IS_LOCAL` | No | false | Local development flag |\r\n| `TZ` | No | UTC | Timezone setting |\r\n\r\n### Elastic Beanstalk\r\n\r\nThe server includes Elastic Beanstalk deployment configuration:\r\n\r\n```bash\r\n# Deploy to AWS Elastic Beanstalk\r\neb init\r\neb create clockify-mcp-server\r\neb deploy\r\n```\r\n\r\n## 🧪 Testing\r\n\r\n### Running Tests\r\n\r\n```bash\r\nnpm test\r\n```\r\n\r\n### Test Coverage\r\n\r\nTests cover:\r\n- Tool functionality\r\n- API client operations\r\n- Authentication flow\r\n- Error handling scenarios\r\n- Input validation\r\n\r\n### Manual Testing\r\n\r\nTest individual tools using the MCP protocol:\r\n\r\n```json\r\n{\r\n  \"jsonrpc\": \"2.0\",\r\n  \"id\": 1,\r\n  \"method\": \"tools/call\",\r\n  \"params\": {\r\n    \"name\": \"list_entries\",\r\n    \"arguments\": {\r\n      \"workspaceId\": \"workspace-id\",\r\n      \"userId\": \"user-id\",\r\n      \"start\": \"2024-01-01T00:00:00Z\",\r\n      \"end\": \"2024-01-31T23:59:59Z\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 💡 Usage Examples\r\n\r\n### Natural Language Commands\r\n\r\nThe MCP server enables natural language interaction:\r\n\r\n```\r\nUser: \"Start tracking time for website development\"\r\nAI: Creates time entry with current timestamp\r\n\r\nUser: \"How much time did I spend on project X last week?\"\r\nAI: Generates report for specified project and date range\r\n\r\nUser: \"Stop my current timer and log 8 hours for database work\"\r\nAI: Updates time entry with specified duration and description\r\n```\r\n\r\n### Integration with Workflows\r\n\r\n```javascript\r\n// Automated time tracking workflow\r\nconst workflow = {\r\n  morning: () => ai.chat(\"Start tracking time for daily standup\"),\r\n  coding: () => ai.chat(\"Switch time tracking to development work\"),\r\n  evening: () => ai.chat(\"Stop timer and show today's summary\")\r\n};\r\n```\r\n\r\n## 🤝 Contributing\r\n\r\n1. Fork the repository\r\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\r\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\r\n4. Push to the branch (`git push origin feature/amazing-feature`)\r\n5. Open a Pull Request\r\n\r\n### Development Guidelines\r\n\r\n- Follow TypeScript best practices\r\n- Add tests for new functionality\r\n- Update documentation for new tools\r\n- Maintain stateless architecture\r\n- Use Zod for input validation\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the MIT License - see the LICENSE file for details.\r\n\r\n## 🙏 Acknowledgments\r\n\r\n- [Clockify API](https://clockify.me/developers-api) for the comprehensive time tracking API\r\n- [Model Context Protocol](https://modelcontextprotocol.io/) for the integration standard\r\n- [TypeScript](https://www.typescriptlang.org/) for type safety\r\n- [Zod](https://zod.dev/) for schema validation\r\n\r\n\r\n\r\n```bash\r\nnpx -y @smithery/cli install @https-eduardo/clockify-mcp-server --client claude\r\n```\r\n\r\n### Installing Manually\r\nFirst, install ts-node globally\r\n\r\n`npm i -g ts-node`\r\n\r\nThen insert the MCP server in `claude_desktop_config`\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"clockify-time-entries\": {\r\n      \"command\": \"ts-node\",\r\n      \"args\": [\"ABSOLUTE_PATH/src/index.ts\"],\r\n      \"env\": {\r\n        \"CLOCKIFY_API_URL\": \"https://api.clockify.me/api/v1\",\r\n        \"CLOCKIFY_API_TOKEN\": \"YOUR_CLOCKIFY_API_TOKEN_HERE\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nYou can also compile the Typescript code using `tsc` and then change the config to use default `node` command and point to the `js` file.\r\n","readmeFilename":"README.md"}