{"_id":"@a-und-b/moco-mcp","_rev":"7-d029d5bacefbca61bf1638a27699c9ef","name":"@a-und-b/moco-mcp","dist-tags":{"latest":"1.4.0"},"versions":{"1.2.5":{"name":"@a-und-b/moco-mcp","version":"1.2.5","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.2.5","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"b9d4a25dfefa1f4051fc7bc69986ce1560f2892e","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.2.5.tgz","fileCount":4,"integrity":"sha512-RDynyUisd98ivejbHHFdZJU/1KIaIb6Mcl5tf/EKF5QhE1vBtqHLV4g6n2elTtJ2Z7h/JMEwr4E8yhksRuBzEw==","signatures":[{"sig":"MEQCIDZ4zIOw8x+drjZslj6zZSr7Wjsv6tucZSAj0EBJTIXcAiBiuY4H7dg4juVMmYnFeXWp2JcZsVUfg48Ie6aKosHzTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182561},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e3696799a7685a01cd3c0c8ba0ccbaf10e99fe19","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.2.5_1765014741848_0.429231523945242","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@a-und-b/moco-mcp","version":"1.2.6","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.2.6","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"9af9b12fc997517e6897039a6426b5775e0601c2","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.2.6.tgz","fileCount":4,"integrity":"sha512-U7gfKb1jx48olWbqzBrKw71slj0H+7nA4KZ9xgwxuTh15MWXatqW1wcoJz+97O3xmBOChxKrR6K2yiQ2RcSb2g==","signatures":[{"sig":"MEQCICQ00louzefuMTNdp36ANgD3fpZ3MNXIbCPzC+bOethiAiBQw5tEzssjVipWCvkeov9kJTIMvBeiGh3HwTSFXDYXtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182561},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"50e404725d319afd95494e0903864bf6fdbeaa82","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.2.6_1765014837051_0.6685566153711171","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@a-und-b/moco-mcp","version":"1.2.7","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.2.7","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"57de40ad072a0ea3ee95f11c372b7159ccc5515c","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.2.7.tgz","fileCount":4,"integrity":"sha512-3uX4D+R+PgiDvtYAZX4i5V/C1P04gMAaQ6vEpKrRNw40jKknw1nRsULNq+aa5lb7WC8W3Tuk3CjGw9tN3P5aQg==","signatures":[{"sig":"MEQCICEjtp1ipy1rkDtQ+irwzkCrOyFIOhmOI47z5TIjCj3TAiBA/wPwDhZvGjxGA78O4XK1F7eyLR7V8ES8qOS6iUirTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195394},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"475bc2cd71ab801133aceacaa23d61678ee1d138","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.2.7_1772620309321_0.7192613999455724","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@a-und-b/moco-mcp","version":"1.2.8","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.2.8","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"3c9f8e10650197265ff1ce95e936d657f3de46bd","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.2.8.tgz","fileCount":4,"integrity":"sha512-ibVlaVFNwFwFAjLopXwPjCHlZropM7f5PhEWxQccgMzmkHA/nCDADbETA4H5QcijttOYq3RjdetEJZVrQ82Gng==","signatures":[{"sig":"MEYCIQC9fqbEE6tErTHqrxWy8xvnqA0fmhu2PTbdrngHRAA/7gIhAIq/xn8LbeGtIVUpblXwEgmb9BtJPIMR141OaYFvnwus","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197772},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e949f779537deb159357d2313e80278074413593","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.2.8_1772637060157_0.7582619339829733","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@a-und-b/moco-mcp","version":"1.3.0","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.3.0","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"314d52d581dc5d254de0e1003c0f23e5b74060d3","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.3.0.tgz","fileCount":4,"integrity":"sha512-sw/hKK7OiXFSyKe80jUOyMUy+Qp7XrC7yqAU8yQJG2SGWWTa1pt/N8llitb5c87tq4vr0gNMTEcrTfoO69a9cA==","signatures":[{"sig":"MEUCIQDp/bDyqyw8TQvi7fxfyuf7FLXj+br0ddoSOv9Gq3kzJQIgURT9x0up9ZLtbAQik3FlQZivjq3ao9zXQ5Kszhxahkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213799},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"9621898b90a6c17c8da150ed4df90387ab3241f4","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.3.0_1779023785049_0.6534631191099234","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@a-und-b/moco-mcp","version":"1.3.1","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","_id":"@a-und-b/moco-mcp@1.3.1","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"homepage":"https://github.com/a-und-b/moco-mcp#readme","bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"bin":{"moco-mcp":"dist/index.js"},"dist":{"shasum":"a3ea7ced9704e0cfcd42d6572720ead7c3860f07","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.3.1.tgz","fileCount":4,"integrity":"sha512-6HNLoFjxyenbQJSWqZxsE23ejyYU/PvOnbNNJuUaptfsZNTnsOTIuc5FyY4tQkjpB6qXsFPph/7B2jDumBHIQQ==","signatures":[{"sig":"MEUCICdpGwGq6GrqZLvMvO7qtzrsGwyF65K6jQFve3AzQZQyAiEA4ME2hHUh/DsMdYBLNK3d7FUh+OzcG5YgEMb8xwXBs48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212300},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a1b60ebee52aed73a0dc2cae7d5e3aba5fc2c0d9","scripts":{"dev":"tsx src/index.ts","test":"jest","build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","start":"node dist/index.js","test:mcp":"jest tests/mcp","test:unit":"jest tests/unit","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"repository":{"url":"git+https://github.com/a-und-b/moco-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.17.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","esbuild":"^0.24.2","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.2.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/moco-mcp_1.3.1_1779025351453_0.4757894610157254","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@a-und-b/moco-mcp","version":"1.4.0","description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","main":"dist/index.js","bin":{"moco-mcp":"dist/index.js"},"type":"module","engines":{"node":">=18.0.0"},"scripts":{"build":"npm run clean && esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/sdk --external:zod","clean":"rm -rf dist && mkdir -p dist","typecheck":"tsc --noEmit","dev":"tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"npm run build","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:unit":"jest tests/unit","test:integration":"jest tests/integration","test:mcp":"jest tests/mcp"},"keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"author":{"name":"a-und-b"},"license":"MIT","homepage":"https://github.com/a-und-b/moco-mcp#readme","repository":{"type":"git","url":"git+https://github.com/a-und-b/moco-mcp.git"},"bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^1.17.1","zod":"^3.25.76"},"devDependencies":{"@jest/globals":"^29.7.0","@types/jest":"^30.0.0","@types/node":"^24.2.0","esbuild":"^0.24.2","jest":"^29.7.0","ts-jest":"^29.4.1","tsx":"^4.20.3","typescript":"^5.9.2"},"_id":"@a-und-b/moco-mcp@1.4.0","gitHead":"599dfe1bb6b0aa235704a7efadfe3308d3efb6f5","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-2XHNFhPIp6G3VgsH9TtLN+M6iS3J+eq4Oc7JEF5P+QLornTnTjV/3Hx0jN+Hzbdt4hwSbggj3r9ZM1YGetOM8g==","shasum":"dea47838fe3d0249c54676d6482588107c92bf63","tarball":"https://registry.npmjs.org/@a-und-b/moco-mcp/-/moco-mcp-1.4.0.tgz","fileCount":4,"unpackedSize":244579,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC7mZRpKgyTzGhR2daJwGozGI20KMFhqt8VWaUmZrksggIhAM5t2yiSCMinp0RluMHGGbL6QUmoo8/ITNRecsuKgwKD"}]},"_npmUser":{"name":"a-und-b","email":"holger@andersundbesser.de"},"directories":{},"maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/moco-mcp_1.4.0_1785170949835_0.8511310060763706"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-06T09:52:21.756Z","modified":"2026-07-27T16:49:10.125Z","1.2.5":"2025-12-06T09:52:21.988Z","1.2.6":"2025-12-06T09:53:57.195Z","1.2.7":"2026-03-04T10:31:49.462Z","1.2.8":"2026-03-04T15:11:00.321Z","1.3.0":"2026-05-17T13:16:25.238Z","1.3.1":"2026-05-17T13:42:31.604Z","1.4.0":"2026-07-27T16:49:09.992Z"},"bugs":{"url":"https://github.com/a-und-b/moco-mcp/issues"},"author":{"name":"a-und-b"},"license":"MIT","homepage":"https://github.com/a-und-b/moco-mcp#readme","keywords":["mcp","model-context-protocol","moco","time-tracking","project-management","api","typescript","ai","assistant"],"repository":{"type":"git","url":"git+https://github.com/a-und-b/moco-mcp.git"},"description":"Model Context Protocol (MCP) server for MOCO: time tracking, project management, holidays, and presence monitoring","maintainers":[{"name":"a-und-b","email":"holger@andersundbesser.de"}],"readme":"# 📊 MOCO MCP Server\n\nA Model Context Protocol (MCP) server that provides comprehensive access to the MOCO API for time tracking, project management, CRM (companies & contacts), invoicing, holiday tracking, and presence monitoring.\n\n## ⚡ Quick Start\n\n```bash\nnpx -y @a-und-b/moco-mcp\n```\n\nThat's it! The server will start and be ready to connect to your MCP client.\n\n## 🚀 Installation\n\n### Prerequisites\n\n- Node.js ≥ 18.0.0\n- MOCO account with API access\n- MOCO API key and subdomain\n\n### MCP Client Integration\n\n<details>\n<summary><strong>Claude Desktop</strong></summary>\n\nAdd to your Claude Desktop claude_desktop_config.json file:\n\n**MacOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`  \n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"moco\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a-und-b/moco-mcp\"],\n      \"env\": {\n        \"MOCO_API_KEY\": \"your-moco-api-key\",\n        \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Cursor</strong></summary>\n\nAdd to your Cursor settings:\n\n**MacOS:** `~/Library/Application Support/Cursor/User/settings.json`  \n**Windows:** `%APPDATA%\\Cursor\\User\\settings.json`  \n**Linux:** `~/.config/Cursor/User/settings.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"moco\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a-und-b/moco-mcp\"],\n      \"env\": {\n        \"MOCO_API_KEY\": \"your-moco-api-key\",\n        \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Windsurf</strong></summary>\n\nAdd to your Windsurf MCP configuration:\n\n```json\n{\n   \"mcpServers\": {\n      \"moco\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@a-und-b/moco-mcp\"],\n         \"env\": {\n            \"MOCO_API_KEY\": \"your-moco-api-key\",\n            \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n         }\n      }\n   }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Claude Code (CLI)</strong></summary>\n\nAdd the MCP server to Claude Code:\n\n```bash\nclaude mcp add -e MOCO_API_KEY=\"your-moco-api-key\" -e MOCO_SUBDOMAIN=\"your-subdomain\" moco -- npx -y @a-und-b/moco-mcp\n```\n\n</details>\n\n<details>\n<summary><strong>Gemini CLI</strong></summary>\n\nConfigure Gemini CLI with MCP support:\n\n```json\n{\n   \"mcpServers\": {\n      \"moco\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@a-und-b/moco-mcp\"],\n         \"env\": {\n            \"MOCO_API_KEY\": \"your-moco-api-key\",\n            \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n         }\n      }\n   }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Kiro</strong></summary>\n\n1. Go to `Kiro` > `MCP Servers`\n2. Add new MCP server by clicking `+ Add`\n3. Paste the configuration below:\n\n```json\n{\n  \"mcpServers\": {\n    \"moco\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"-y\",\n      \"@a-und-b/moco-mcp\"\n    ],\n    \"env\": {\n       \"MOCO_API_KEY\": \"your-moco-api-key\",\n       \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n    },\n    \"disabled\": false,\n    \"autoApprove\": []\n    }\n  }\n}\n\n```\n\n4. Click `Save` to apply changes\n</details>\n\n<details>\n<summary><strong>LM Studio</strong></summary>\n\n1. Go to `Program` (right side) > `Install` > `Edit mcp.json`\n2. Paste the configuration below:\n```json\n{\n  \"mcpServers\": {\n    \"moco\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a-und-b/moco-mcp\"],\n       \"env\": {\n          \"MOCO_API_KEY\": \"your-moco-api-key\",\n          \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n       }\n    }\n  }\n}\n```\n3. Click `Save` to apply changes\n4. Toggle MCP server on/off from the right hand side (under `Program`) or by clicking the plug icon at the bottom of the chat box\n\n\n</details>\n\n## 🔑 MOCO API Setup\n\n### Getting Your API Credentials\n\n1. **Log into your MOCO account**\n2. **Navigate to API settings:**\n   - Go to **Profile** → **Integrations**\n   - Or visit: `https://yourcompany.mocoapp.com/profile/integrations`\n3. **Copy the listed API key**\n4. **Note your subdomain:**\n   - From your MOCO URL: `https://yourcompany.mocoapp.com`\n   - Your subdomain is: `yourcompany`\n\n### Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `MOCO_API_KEY` | Yes | Your MOCO API key for authentication |\n| `MOCO_SUBDOMAIN` | Yes | Your MOCO subdomain (e.g., `yourcompany` from `yourcompany.mocoapp.com`) |\n| `MOCO_USER_ID` | No | When set, `get_activities` automatically filters to this user's entries when no `userId` is provided. Use `get_current_user` to find your ID. |\n\nYou can set environment variables in several ways:\n\n**Option 1: System Environment Variables**\n```bash\nexport MOCO_API_KEY=\"your-moco-api-key\"\nexport MOCO_SUBDOMAIN=\"your-subdomain\"\n# Optional: filter activities to your user by default\nexport MOCO_USER_ID=\"12345\"\n```\n\n**Option 2: .env File (for local development)**\n```env\nMOCO_API_KEY=your-moco-api-key\nMOCO_SUBDOMAIN=your-subdomain\nMOCO_USER_ID=12345\n```\n\n**Option 3: MCP Client Configuration (recommended)**\nUse the `env` section in your MCP client configuration as shown above.\n\n## 🛠️ Available Tools\n\n### Activities (Time Tracking)\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_activities` | Get activities within a date range with summation | `startDate`, `endDate`, `projectId` (optional), `userId` (optional). Uses `MOCO_USER_ID` as default filter when set. |\n| `create_activity` | Create a new time entry | `date`, `projectId`, `taskId`, `hours` or `seconds`, `description` (optional), `impersonateUserId` (optional, requires Staff) |\n| `update_activity` | Update an existing time entry | `activityId`, `date`, `projectId`, `taskId`, `hours`, `description`, `impersonateUserId` (optional, requires Staff) |\n| `delete_activity` | Delete a time entry | `activityId`, `impersonateUserId` (optional, requires Staff) |\n| `start_activity_timer` | Start the timer for an activity | `activityId` |\n| `stop_activity_timer` | Stop the timer for an activity | `activityId` |\n\nNote: `impersonateUserId` allows Staff users to create, update, or delete activities on behalf of another user.\n\n### Users\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_current_user` | Get the currently authenticated user (based on API key) | None |\n| `get_users` | List all staff users with optional filtering | `email`, `tags`, `includeArchived` (all optional) |\n| `get_user` | Get a single staff user by ID | `userId` |\n\n### Projects\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_user_projects` | List all assigned projects or search by query | `query` (optional) |\n| `get_user_project_tasks` | Get all tasks for a specific project | `projectId` |\n| `update_project` | Update project details | `projectId`, various optional fields |\n\n### Companies (CRM)\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_companies` | List companies with optional filtering | `type`, `tags`, `identifier` (all optional) |\n| `get_company` | Get a specific company by ID | `companyId` |\n| `create_company` | Create a new company | `name`, `type`, `website`, `email`, etc. |\n| `update_company` | Update an existing company | `companyId`, various optional fields |\n| `delete_company` | Delete a company | `companyId` |\n\n### Contacts (CRM)\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_contacts` | List contacts with optional filtering | `tags` (optional) |\n| `get_contact` | Get a specific contact by ID | `contactId` |\n| `create_contact` | Create a new contact | `firstname`, `lastname`, `companyId`, `email`, etc. |\n| `update_contact` | Update an existing contact | `contactId`, various optional fields |\n| `delete_contact` | Delete a contact | `contactId` |\n\n### Invoices\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_invoices` | List invoices with optional filtering | `status`, `projectId`, `companyId` (all optional) |\n| `get_invoice` | Get a specific invoice by ID | `invoiceId` |\n| `create_invoice` | Create a new invoice | `customerId`, `recipientAddress`, `items`, etc. |\n| `update_invoice_status` | Update invoice status | `invoiceId`, `status` |\n| `send_invoice_email` | Send invoice via email | `invoiceId`, `emailsTo`, `subject`, `text` |\n| `delete_invoice` | Delete an invoice | `invoiceId`, `reason` (optional) |\n\n### Purchases (Ausgaben)\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_purchases` | List purchases with filtering | `dateFrom`, `dateTo`, `status`, `companyId`, `categoryId`, `term`, `tags`, `unpaid`, `notBooked`, `paymentMethod`, `identifier`, `receiptIdentifier`, `withoutDocument` (all optional) |\n| `get_purchases_without_document` | Bookkeeping gap report: purchases with no receipt attached | `dateFrom`, `dateTo`, `status`, `companyId` (all optional) |\n| `get_purchase` | Get a specific purchase by ID | `purchaseId` |\n| `create_purchase` | Create a new purchase | `date`, `currency`, `paymentMethod`, `items`, plus optional `title`, `companyId`, `filePath`, ... |\n| `update_purchase_status` | Update purchase status | `purchaseId`, `status` (`pending` or `archived`) |\n| `attach_purchase_document` | Attach/replace the receipt PDF of a purchase | `purchaseId`, `filePath` **or** `base64` + `filename` |\n| `assign_purchase_to_project` | Assign a purchase item to a project as an expense | `purchaseId`, `itemId`, `projectId` |\n| `delete_purchase` | Delete a purchase (only while `pending` and unpaid) | `purchaseId` |\n\nA purchase counts as \"without document\" when the MOCO API returns `file_url: null`.\n`attach_purchase_document` reads `filePath` on the machine running the MCP server,\nso a locally collected invoice PDF can be uploaded without a manual detour:\n\n```\n\"Which expenses from June still miss a receipt?\"\n→ get_purchases_without_document({ dateFrom: \"2026-06-01\", dateTo: \"2026-06-30\" })\n\n\"Attach ~/Downloads/Rechnungen/260705_CURSOR.pdf to E-26-0358\"\n→ get_purchases({ identifier: \"E-26-0358\" }) → attach_purchase_document({ purchaseId, filePath })\n```\n\n### Time Off & Presence\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `get_user_holidays` | Get holiday overview for a year | `year` |\n| `get_user_presences` | Get presence data within a date range | `startDate`, `endDate` |\n| `get_user_sick_days` | Get sick days overview for a year | `year` |\n| `get_public_holidays` | Get public holidays for a year | `year` |\n\n## 🎯 Available Prompts\n\nThe MoCo MCP server provides 8 intelligent prompts that orchestrate multiple tools to deliver comprehensive insights:\n\n| Prompt | Description | Key Parameters |\n|--------|-------------|----------------|\n| `weekly_time_report` | Generates detailed weekly time tracking report with project breakdown | `week_start`, `include_billable_analysis` |\n| `vacation_planning_assistant` | Assists with vacation planning by analyzing available days and holidays | `planned_start_date`, `planned_end_date` |\n| `personal_productivity_insights` | Analyzes work habits and provides productivity recommendations | `analysis_period`, `focus_area` |\n| `monthly_business_review` | Creates comprehensive business reports with trends and metrics | `month`, `year`, `include_comparisons` |\n| `smart_work_life_balance_advisor` | Evaluates work-life balance with personalized recommendations | `analysis_weeks`, `target_hours_per_week` |\n| `project_time_analysis` | Detailed project time analysis with efficiency metrics | `project_ids`, `time_period` |\n| `team_capacity_overview` | Team capacity planning with absence and resource analysis | `planning_horizon`, `include_holidays` |\n| `work_hours_compliance_check` | Compliance check for working time regulations | `check_period`, `max_weekly_hours`, `max_daily_hours` |\n\n### Prompt Examples\n\n**Weekly Time Report:**\n```json\n{\n  \"name\": \"weekly_time_report\",\n  \"arguments\": {\n    \"week_start\": \"2024-01-15\",\n    \"include_billable_analysis\": true\n  }\n}\n```\n\n**Vacation Planning:**\n```json\n{\n  \"name\": \"vacation_planning_assistant\",\n  \"arguments\": {\n    \"planned_start_date\": \"2024-07-15\",\n    \"planned_end_date\": \"2024-07-29\"\n  }\n}\n```\n\n**Work-Life Balance Analysis:**\n```json\n{\n  \"name\": \"smart_work_life_balance_advisor\",\n  \"arguments\": {\n    \"analysis_weeks\": 6,\n    \"target_hours_per_week\": 40\n  }\n}\n```\n\n**Compliance Check:**\n```json\n{\n  \"name\": \"work_hours_compliance_check\",\n  \"arguments\": {\n    \"check_period\": \"last_month\",\n    \"max_weekly_hours\": 48,\n    \"max_daily_hours\": 10\n  }\n}\n```\n\n## 📝 Tool Examples\n\n### Get Current User\n\n```json\n{\n  \"name\": \"get_current_user\",\n  \"arguments\": {}\n}\n```\n\n**Sample Output:**\n```\nCurrent authenticated user:\nUser ID: 12345\nName: John Doe\nEmail: john.doe@example.com\n\nTip: Set MOCO_USER_ID=12345 in your claude_desktop_config.json to automatically filter activities to your own entries.\n```\n\n### Get Activities\n\n**Filter all activities in a date range:**\n```json\n{\n  \"name\": \"get_activities\",\n  \"arguments\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-31\"\n  }\n}\n```\n\n**Filter activities for a specific project:**\n```json\n{\n  \"name\": \"get_activities\",\n  \"arguments\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-31\",\n    \"projectId\": 123456\n  }\n}\n```\n\n**Filter activities for a specific user:**\n```json\n{\n  \"name\": \"get_activities\",\n  \"arguments\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-31\",\n    \"userId\": 789\n  }\n}\n```\n\n**Sample Output:**\n```\nActivities from 2024-01-01 to 2024-01-31:\n\n2024-01-15:\n  Project 123 (Website Redesign):\n    Task 456 (Frontend Development): 4.5h (4:30)\n    Task 789 (Backend API): 3.25h (3:15)\n    Project total: 7.75h (7:45)\n  Daily total: 7.75h (7:45)\n\nGrand total: 7.75h (7:45)\n```\n\n### Get User Projects\n\n**List all assigned projects:**\n```json\n{\n  \"name\": \"get_user_projects\",\n  \"arguments\": {}\n}\n```\n\n**Search projects:**\n```json\n{\n  \"name\": \"get_user_projects\",\n  \"arguments\": {\n    \"query\": \"website\"\n  }\n}\n```\n\n### Get User Project Tasks\n\n```json\n{\n  \"name\": \"get_user_project_tasks\",\n  \"arguments\": {\n    \"projectId\": 123456\n  }\n}\n```\n\n### Get User Holidays\n\n```json\n{\n  \"name\": \"get_user_holidays\",\n  \"arguments\": {\n    \"year\": 2024\n  }\n}\n```\n\n**Sample Output:**\n```\nHoliday overview for 2024:\n\nTaken holiday days:\n- 2024-03-15: 1.0 day\n- 2024-04-22: 0.5 day\n- 2024-07-08: 1.0 day\n\nSummary:\n- Taken vacation: 2.5 days\n- Annual entitlement: 25 days\n- Utilization: 10% (2.5/25)\n- Remaining vacation: 22.5 days\n```\n\n### Get User Presences\n\n```json\n{\n  \"name\": \"get_user_presences\",\n  \"arguments\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-07\"\n  }\n}\n```\n\n**Sample Output:**\n```\nPresences from 2024-01-01 to 2024-01-07:\n\nDaily presences:\n- 2024-01-01: 8.25h (8:15)\n- 2024-01-02: 7.5h (7:30)\n- 2024-01-03: 8.0h (8:00)\n\nGrand total: 23.75h (23:45)\n\nStatistics:\n- Working days: 3\n- Average per day: 7.92h (7:55)\n```\n\n### Get User Sick Days\n\n```json\n{\n  \"name\": \"get_user_sick_days\",\n  \"arguments\": {\n    \"year\": 2024\n  }\n}\n```\n\n### Get Public Holidays\n\n```json\n{\n  \"name\": \"get_public_holidays\",\n  \"arguments\": {\n    \"year\": 2024\n  }\n}\n```\n\n**Sample Output:**\n```\nPublic holidays for 2024:\n\nHoliday dates:\n- 2024-01-01: New Year's Day\n- 2024-04-01: Good Friday\n- 2024-04-03: Easter Monday\n- 2024-05-01: Labor Day\n- 2024-05-09: Ascension Day\n- 2024-05-20: Whit Monday\n- 2024-10-03: German Unity Day\n- 2024-12-25: Christmas Day\n- 2024-12-26: Boxing Day\n\nSummary:\n- Total public holidays: 9 days\n- Approximate working days: 251 days\n```\n\n### Create Activity (Time Entry)\n\n```json\n{\n  \"name\": \"create_activity\",\n  \"arguments\": {\n    \"date\": \"2024-01-15\",\n    \"projectId\": 123456,\n    \"taskId\": 789,\n    \"hours\": 2.5,\n    \"description\": \"Implemented new feature\"\n  }\n}\n```\n\nDuration can be specified in `hours` (e.g., 2.5) or `seconds` (e.g., 9000).\n\n### Start/Stop Timer\n\n```json\n{\n  \"name\": \"start_activity_timer\",\n  \"arguments\": {\n    \"activityId\": 12345\n  }\n}\n```\n\n### Create Company\n\n```json\n{\n  \"name\": \"create_company\",\n  \"arguments\": {\n    \"name\": \"Acme Corp\",\n    \"type\": \"customer\",\n    \"website\": \"https://acme.example.com\",\n    \"email\": \"contact@acme.example.com\",\n    \"country_code\": \"DE\"\n  }\n}\n```\n\n### Create Contact\n\n```json\n{\n  \"name\": \"create_contact\",\n  \"arguments\": {\n    \"firstname\": \"John\",\n    \"lastname\": \"Doe\",\n    \"companyId\": 123,\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+49 123 456789\"\n  }\n}\n```\n\n### Create Invoice\n\n```json\n{\n  \"name\": \"create_invoice\",\n  \"arguments\": {\n    \"customerId\": 123,\n    \"recipientAddress\": \"Acme Corp\\n123 Main Street\\n12345 Berlin\",\n    \"items\": [\n      {\n        \"title\": \"Consulting Services\",\n        \"quantity\": 10,\n        \"unit\": \"hours\",\n        \"unit_price\": 150.00\n      }\n    ],\n    \"date\": \"2024-01-15\",\n    \"due_date\": \"2024-02-15\"\n  }\n}\n```\n\n### Send Invoice Email\n\n```json\n{\n  \"name\": \"send_invoice_email\",\n  \"arguments\": {\n    \"invoiceId\": 456,\n    \"emailsTo\": [\"billing@customer.com\"],\n    \"subject\": \"Invoice #2024-001\",\n    \"text\": \"Please find attached your invoice.\"\n  }\n}\n```\n\n## 🔧 Advanced Configuration\n\n<details>\n<summary><strong>Local Development</strong></summary>\n\nIf you want to run from source:\n\n```bash\ngit clone https://github.com/a-und-b/moco-mcp.git\ncd moco-mcp\nnpm install\nnpm run build\nnpm start\n```\n\nThen configure your MCP client to use the local path:\n\n```json\n{\n  \"mcpServers\": {\n    \"moco\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/moco-mcp/dist/index.js\"],\n      \"env\": {\n        \"MOCO_API_KEY\": \"your-moco-api-key\",\n        \"MOCO_SUBDOMAIN\": \"your-subdomain\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Docker Support</strong></summary>\n\n```dockerfile\nFROM node:18-alpine\nWORKDIR /app\nRUN npm install -g @a-und-b/moco-mcp\nENV MOCO_API_KEY=\"\"\nENV MOCO_SUBDOMAIN=\"\"\nCMD [\"@a-und-b/moco-mcp\"]\n```\n\n</details>\n\n## 🔍 Troubleshooting\n\n### Common Issues\n\n**❌ Authentication Error:**\n```\nAPI authentication failed. Please check MOCO_API_KEY.\n```\n- Verify your API key is correct and has necessary permissions\n- Check if the API key is properly set in environment variables\n- Ensure the key hasn't expired\n\n**❌ Subdomain Error:**\n```\nMOCO_SUBDOMAIN should only contain the subdomain name\n```\n- Use only the subdomain part: `company` (not `company.mocoapp.com`)\n- Remove `https://` and `.mocoapp.com` from the subdomain\n\n**❌ Node.js Version Error:**\n```\nThis package requires Node.js >= 18.0.0\n```\n- Update Node.js to version 18 or higher\n- Check your version: `node --version`\n\n**❌ npx Connection Issues:**\n```\nError: Cannot find module '@a-und-b/moco-mcp'\n```\n- Ensure you have internet connection\n- Try: `npx --yes @a-und-b/moco-mcp`\n- Clear npx cache: `npx clear-npx-cache`\n\n**❌ MCP Client Not Finding Tools:**\n- Restart your MCP client after configuration changes\n- Check that environment variables are properly set\n- Verify JSON configuration syntax is correct\n\n### Debug Mode\n\nFor debugging, you can run the server with additional logging:\n\n```bash\nNODE_ENV=development npx -y @a-und-b/moco-mcp\n```\n\n### Testing Connection\n\nYou can test the server manually:\n\n```bash\necho '{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/list\"}' | npx -y @a-und-b/moco-mcp\n```\n\n## 🌟 Features\n\n- **✅ Full CRUD Support:** Create, read, update, and delete across all entities\n- **🔄 Automatic Pagination:** Handles large datasets seamlessly\n- **📊 Smart Aggregation:** Automatic summation by date, project, and task\n- **⏱️ Timer Control:** Start and stop activity timers\n- **🏢 CRM Integration:** Manage companies and contacts\n- **💰 Invoice Management:** Create, send, and manage invoices\n- **🧩 Comprehensive Tools:** 34+ specialized tools for different use cases\n- **🎯 Intelligent Prompts:** 8 AI-powered prompts for complex analysis and insights\n- **🌐 Multi-Client Support:** Works with all major MCP clients\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make your changes and add tests\n4. Run tests: `npm test`\n5. Submit a pull request\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\nThis project is a fork of [niondigital/moco-mcp](https://github.com/niondigital/moco-mcp), extended with comprehensive write operations for Activities, Projects, Companies, Contacts, and Invoices.\n\n## 🆘 Support\n\n- **MOCO API Issues:** [MOCO API Documentation](https://github.com/hundertzehn/mocoapp-api-docs)\n- **MCP Protocol:** [MCP Documentation](https://modelcontextprotocol.io/)\n- **Original Package:** [niondigital/moco-mcp](https://github.com/niondigital/moco-mcp)\n- **This Fork:** [GitHub Issues](https://github.com/a-und-b/moco-mcp/issues)","readmeFilename":"README.md"}