{"_id":"@degree-as/dynamicweb-mcp","_rev":"11-38369ba2eaf8f989fa0245965f6efb8f","name":"@degree-as/dynamicweb-mcp","dist-tags":{"latest":"1.5.0"},"versions":{"1.1.1":{"name":"@degree-as/dynamicweb-mcp","version":"1.1.1","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.1.1","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"c429367dad1e5688b4904ef1f0c2d9ec635073c9","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.1.1.tgz","fileCount":21,"integrity":"sha512-tX5tKEDDyHlXSnvP5zqOhMde9JxnSjCIDaRDp2mAC2UrbnqQMu8LOAymQdEMIFrq1xzu1fPQB0iue2754ff+kw==","signatures":[{"sig":"MEUCIC04YlIoMcr5dVooXPwgpyXIcADBT/5YtBAbN5TgfjJZAiEAi7QqbEm2zyTDqVxgG4HmEkDokIewQC4rZKL6lJUMv98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76392},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"dc46779a959225b3070d8d0efeb3da72e8466594","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.1.1_1775811588931_0.5816932039869829","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@degree-as/dynamicweb-mcp","version":"1.1.2","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.1.2","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"95092517304cc10d312df145012a3d349094e0d2","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.1.2.tgz","fileCount":21,"integrity":"sha512-jA2GIziKhQEpN3tbjxMzdKqrnnSfZb3IHlSTMSUZ5Zu+aoP5Fi4kwrjVq1v9bpWwXlQYO7mndNlc3hEdNcQJxA==","signatures":[{"sig":"MEUCIHPJFviYAfB6MZBnehVL5dLe2Rl3Ob6XZVMUQivLL62QAiEAzyjcZ/Yy8qIcfWA5xMTCDcjFiWVCF4jMvnqTVrw7alc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76095},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e6a2f4575ebb9a3c778b34657aab844faff86e19","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.1.2_1775811812763_0.29143145808095516","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@degree-as/dynamicweb-mcp","version":"1.2.0","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.2.0","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"7b91201ad41e38c74db4d7790e389e0717a66808","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.2.0.tgz","fileCount":23,"integrity":"sha512-mH8blKvdaazZXl7fd9LueC6GM/NDCkxa/WY7ZN4Ox3pf1r3DuDiQD4w2tOJ7W6Czbj/d4r9PfbjySJURN1KdzQ==","signatures":[{"sig":"MEUCIBzJSNBT2njlZc+5LXjZMwh8UxvM6JlmtRM7/2PQmHJaAiEAylVX/Y1Hob7PO3FWjSUfZFhr97vOX4bKdIRxFkTcW5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88300},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a0f89042f00c4da39a59d271d53cc90f2e30f059","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.2.0_1776692053523_0.9438783279337883","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@degree-as/dynamicweb-mcp","version":"1.3.0","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.3.0","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"d736470e40b6f48d52f4f6fc8ab7f6da4ee07840","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.3.0.tgz","fileCount":25,"integrity":"sha512-8ZHZoFkb+z16RyBSZDROrgQpoiwpKpGDzFFOcVFgYYoc5joXu+r+n/TKdkFkr0BGjnVkZ6p0OhrpM5hKOBwZHA==","signatures":[{"sig":"MEQCIGgHhVpTCbXSgKI/Garogkalrr+vn2ovkIuSDh2ccKrBAiBKK4kIAv1AjDuKC4THxwlPO2IuStHpa0cw2KY0WpCqrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104914},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b864febb6867ec2fc9dbf08b02daa3bef20aa3b9","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.3.0_1777295163538_0.05420883330649384","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@degree-as/dynamicweb-mcp","version":"1.3.1","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.3.1","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"e5adac3ed9b5896bf73bf04561464763b4e7ac34","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.3.1.tgz","fileCount":25,"integrity":"sha512-4lh8+/r899fhwusALLpCMdW5PlMxhTHUIQOTHKSfORpek6bpux0Fts2sJ/9kwY7gND4pntinoLXFXHEOKMppqw==","signatures":[{"sig":"MEUCIF9S1EztHYBfvrzJOZZf9Z2LNoT+DuH7k+GtWOgeXMC3AiEA+d6lwGFZWBmnsqcFEfsVWXH3rFcHq+LWeuODCTeK7bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109855},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"0d3ddf4a3b4bb67e17c2bc8f9ca00a68f84b825e","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.3.1_1781695215374_0.9960214899757485","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@degree-as/dynamicweb-mcp","version":"1.3.2","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.3.2","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"eedb47387a2b968bfe57db0bd67830f196062a6d","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.3.2.tgz","fileCount":25,"integrity":"sha512-Ggth/Jpe6X7A+bPWE1nTuFTugU5+7rBbkSqzeGJhk0Q58OCSqyWM4Aen8B5SlbwqVkAlSWe99kaQiF5wUxqg2w==","signatures":[{"sig":"MEYCIQC+AAYhHUWDFjJxnbKhxwRzjcJWQu5C6l1xUCZmHkF12wIhAMW3nt+MraNpPp7B7KGWa6nqocDq/27zvAy3LKwyErmr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111752},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8fada19eedef08426c97bf52f919aeab593c1314","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"11.4.1","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"23.5.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.3.2_1782124957878_0.21095397490178258","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@degree-as/dynamicweb-mcp","version":"1.3.3","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.3.3","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"f38c6435ac59fddd6cc119bacb35ff8746adc74c","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.3.3.tgz","fileCount":25,"integrity":"sha512-kp4JaicOUy+yOChjldqNHdMW42WoQj3we/+G/n3t6tt4xMQpYKGKbQr9eOJb78kBlFgsRUEZmTzUgQMsHYvKpA==","signatures":[{"sig":"MEUCIAbHF2e7E+6pcUMJmYD+o1Jl+p7Njh+82TnSgDF5gUYeAiEAmjidqaL/JuNRY6NQqdc2MLxp7qOity6vgH9sRp3BldM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112824},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b9f1d7f82ee8d9f6c40ff4508a4dd2646110f296","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.3.3_1784469677731_0.009871340297711972","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@degree-as/dynamicweb-mcp","version":"1.4.0","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.4.0","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"fb47d0d8eb443afbf5f501bea6208d4153fde042","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.4.0.tgz","fileCount":25,"integrity":"sha512-0apqqwccuK0TInxqZLQzzic93rAxMjdObOZOW9MnJPWEgBrV6mr+L7t2riYh1StpWg9G/bB6rfOPncGjhVLGJg==","signatures":[{"sig":"MEUCIQDsPDjXviK2X0owTUxF3zUm+K4fcQmfxrgTNej5kc4yawIgeiW6cU/OkYYraEiN604TQScLClbDpRJ5rwVjNuYQlOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119491},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b9f1d7f82ee8d9f6c40ff4508a4dd2646110f296","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.4.0_1787557682871_0.6728609909510992","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@degree-as/dynamicweb-mcp","version":"1.4.1","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.4.1","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"ebe46cad32fcc3212e061f7c69f42d55e05633a7","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.4.1.tgz","fileCount":25,"integrity":"sha512-FwTWHYMbphxNH9LkCdeup3M4RNHJOJXYn6Lu2BwshTVLdcz3s7o083R+t0sFoFDcdSaF3urzZiWFvaB0fuxhNQ==","signatures":[{"sig":"MEYCIQDSnjNHJZ2jx/Kghc/sNiIDG5SuZ8UJLe6sY9LOzDujWgIhAK9iG+Rwvd7CuGo+m0JZ62xk501xOIDk8uetxqmfNnGn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123349},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"416f2104b52abc6d7360be111ee6274d26ee1d8d","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.4.1_1787557862185_0.9186240985824932","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@degree-as/dynamicweb-mcp","version":"1.4.2","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"author":{"name":"Degree AS"},"license":"MIT","_id":"@degree-as/dynamicweb-mcp@1.4.2","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"bin":{"degree-dynamicweb-mcp":"dist/index.js"},"dist":{"shasum":"c977089f0236df23b37fd8053d2dab4b199423a3","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.4.2.tgz","fileCount":25,"integrity":"sha512-xaTyjPUK8ZtKKp0mCYpyFwE/mXg7JBaFY7pWEph+QT3ZgVXyXVh5J/yWlXDFkiPUz/eL1wuUmQ6F//PZlV4rcA==","signatures":[{"sig":"MEQCIFBOcV+xLgrgfE7EvwQ2FBJ+a72BMKwyNxmuvkZ09agnAiBQRJ9PRXKuay6fJr1DGMFLEUmn7K9fxlMVSAILIb1alQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125043},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f6817305afee1afefd3c5834a1ae18035ff13e46","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"repository":{"url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for DynamicWeb 10 Admin API","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamicweb-mcp_1.4.2_1787558418477_0.22194085162270616","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@degree-as/dynamicweb-mcp","version":"1.5.0","description":"MCP server for DynamicWeb 10 Admin API","type":"module","main":"dist/index.js","bin":{"degree-dynamicweb-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git"},"homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"license":"MIT","author":{"name":"Degree AS"},"keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"engines":{"node":">=18"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.5.0"},"_id":"@degree-as/dynamicweb-mcp@1.5.0","gitHead":"9a230a4bfabf77fa0418c96bcadbd00c73ad9800","types":"./dist/index.d.ts","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-GWNoFY3eHQ1CHScEhg6xJTVDs5BhCMqtt637EbBXs+cakTw1ec+HL6WNzM58nB5t/49MB2CUsno3JU3e5fSQrw==","shasum":"0e1a05180363b70ff941a20cab4a3b4e34960e62","tarball":"https://registry.npmjs.org/@degree-as/dynamicweb-mcp/-/dynamicweb-mcp-1.5.0.tgz","fileCount":27,"unpackedSize":135214,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIClC1cbE5eBmshW3h4EGLoP+oUz0zC6U3O/lq+fSbeHOAiEAi3tKRuyM3gS2+d4htUg5LVGFgenC+uHmO6ZAgmBxQxc="}]},"_npmUser":{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"},"directories":{},"maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dynamicweb-mcp_1.5.0_1788253823003_0.7213885114935472"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-10T08:59:48.829Z","modified":"2026-09-01T09:10:23.500Z","1.1.1":"2026-04-10T08:59:49.064Z","1.1.2":"2026-04-10T09:03:32.912Z","1.2.0":"2026-04-20T13:34:13.729Z","1.3.0":"2026-04-27T13:06:03.705Z","1.3.1":"2026-06-17T11:20:15.512Z","1.3.2":"2026-06-22T10:42:38.075Z","1.3.3":"2026-07-19T14:01:17.855Z","1.4.0":"2026-08-24T07:48:03.030Z","1.4.1":"2026-08-24T07:51:02.329Z","1.4.2":"2026-08-24T08:00:18.625Z","1.5.0":"2026-09-01T09:10:23.135Z"},"bugs":{"url":"https://github.com/Degree-AS/degree-dynamicweb-mcp/issues"},"author":{"name":"Degree AS"},"license":"MIT","homepage":"https://github.com/Degree-AS/degree-dynamicweb-mcp#readme","keywords":["mcp","dynamicweb","cms","model-context-protocol","headless-cms"],"repository":{"type":"git","url":"git+https://github.com/Degree-AS/degree-dynamicweb-mcp.git"},"description":"MCP server for DynamicWeb 10 Admin API","maintainers":[{"name":"mbednarczyk-degree","email":"mbednarczyk@degree.no"}],"readme":"# degree-dynamicweb-mcp\n\n[![npm](https://img.shields.io/npm/v/@degree-as/dynamicweb-mcp)](https://www.npmjs.com/package/@degree-as/dynamicweb-mcp)\n[![node](https://img.shields.io/node/v/@degree-as/dynamicweb-mcp)](https://nodejs.org)\n[![license](https://img.shields.io/npm/l/@degree-as/dynamicweb-mcp)](LICENSE)\n\nBuild and edit a DynamicWeb 10 site by asking for it, instead of clicking through the Admin UI. This is an MCP server: it gives Claude, Cursor, Copilot, or your own agent code 45 tools over the DynamicWeb Admin API - item types, fields, pages, paragraphs, products, and the PIM data model.\n\n```\n\"Create an OpeningHours item type with a title and a repeatable list of day/hours rows,\n then add it to the Contact page.\"\n\n  → dw_itemtype_create ×2   (the row type, then the parent with an itemrelation field)\n  → dw_itemtype_sync_schema (XML alone does not create the database columns)\n  → dw_itemtype_health      (confirms every field has a column)\n  → dw_paragraph_create + dw_paragraph_set_fields\n```\n\nThree things make this usable rather than merely possible:\n\n- **Writes are proved, not assumed.** DW answers \"ok\" whether or not a value was stored, so `set_fields` reads the item back and returns what it now holds. A typo in a SystemName is an error listing the valid names, not a silent no-op.\n- **Schema drift is visible.** Deploying item type XML does not touch the database; a field whose column is missing saves without error and keeps nothing. `dw_itemtype_health` reports exactly that.\n- **The other ~1800 endpoints are reachable.** `dw_api_search` → `dw_api_endpoint_schema` → `dw_api_call` covers whatever has no dedicated tool.\n\n## Install\n\nGet a token from DynamicWeb Admin: **Settings > Developer > API Keys > New**, with full access. Then, for Claude Code:\n\n```bash\nclaude mcp add dynamicweb -s project \\\n  --env DW_BASE_URL=https://your-dw-instance \\\n  --env DW_API_TOKEN=your-token \\\n  -- npx -y @degree-as/dynamicweb-mcp\n```\n\nAny other client wants the same four values in its config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"dynamicweb\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@degree-as/dynamicweb-mcp\"],\n      \"env\": {\n        \"DW_BASE_URL\": \"https://your-dw-instance\",\n        \"DW_API_TOKEN\": \"your-token\"\n      }\n    }\n  }\n}\n```\n\nRestart the client, then ask it to run `dw_area_list` - a list of your websites means the URL and token are both good.\n\n<details>\n<summary><b>Where that file lives, per client</b></summary>\n\nOnly the path and the top-level key differ.\n\n| Client            | File                                                                                          | Top-level key                                   |\n| ----------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------- |\n| Claude Code       | `.mcp.json` in the project                                                                    | `mcpServers`                                    |\n| Claude Desktop    | `~/Library/Application Support/Claude/claude_desktop_config.json` · `%APPDATA%\\Claude\\…` (Win) | `mcpServers`                                    |\n| Cursor            | `.cursor/mcp.json` or `~/.cursor/mcp.json`                                                    | `mcpServers`                                    |\n| Windsurf          | `~/.codeium/windsurf/mcp_config.json`                                                         | `mcpServers`                                    |\n| Cline             | its MCP settings UI, or the same JSON                                                         | `mcpServers`                                    |\n| VS Code / Copilot | `.vscode/mcp.json`                                                                            | `servers`, plus `\"type\": \"stdio\"`               |\n| Zed               | `settings.json`                                                                               | `context_servers`, plus `\"source\": \"custom\"`    |\n| Continue.dev      | `~/.continue/config.yaml`                                                                     | `mcpServers`, as YAML                           |\n\n`DW_BASE_URL` defaults to `https://localhost:38547` and is the only optional variable; `DW_API_TOKEN` is required. Against `localhost` the server disables TLS verification so DW's self-signed dev certificate is accepted - anywhere else the certificate must be valid.\n\n</details>\n\n<details>\n<summary><b>From an agent framework instead of a client</b></summary>\n\nIt is a standard stdio MCP server - tools only, no prompts or sampling - so any framework can spawn it with the four values above. OpenAI Agents SDK (Python):\n\n```python\nasync with MCPServerStdio(\n    name=\"DynamicWeb\",\n    params={\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@degree-as/dynamicweb-mcp\"],\n        \"env\": {\"DW_BASE_URL\": \"https://your-dw-instance\", \"DW_API_TOKEN\": \"your-token\"},\n    },\n    cache_tools_list=True,\n) as dw:\n    agent = Agent(name=\"DW editor\", mcp_servers=[dw])\n```\n\nThe JS SDK's `MCPServerStdio` is equivalent but wants explicit `connect()`/`close()`. LangChain goes through [`langchain-mcp-adapters`](https://github.com/langchain-ai/langchain-mcp-adapters); Pydantic AI, Mastra, Vercel AI SDK and n8n each have their own stdio MCP client.\n\n**ChatGPT and the OpenAI Responses API do not work yet.** They never spawn a local process - OpenAI's servers call your endpoint over HTTP - and this server speaks stdio only. Adding a Streamable HTTP entrypoint is planned; `src/server.ts` is already transport-agnostic, so the server itself will not change.\n\n</details>\n\n## Safety\n\nThese tools write to a live CMS. Of the 45, **23 only read**, 12 create or update, and **10 destroy data**: every `_delete`, plus `dw_itemtype_clean_table`, `dw_product_bulk_discount` (overwrites `DefaultPrice` across a whole group, no undo), and `dw_api_call` (the caller picks the endpoint).\n\nEach tool declares MCP annotations - `readOnlyHint`, `destructiveHint`, `idempotentHint` - so a client can warn before a destructive call or auto-approve a read. Whether it does is the client's choice, not this server's. There is no dry-run and no confirmation step here: point it at staging before production.\n\n## Tools\n\n45 tools, all prefixed `dw_`, grouped by the DynamicWeb concept they act on.\n\n### Item Types\n\n| Tool                              | Description                                                        |\n| --------------------------------- | ------------------------------------------------------------------ |\n| `dw_itemtype_list`                | List all item types                                                |\n| `dw_itemtype_get`                 | Get item type details and restrictions                             |\n| `dw_itemtype_create`              | Create item type with fields, groups, and restrictions in one call |\n| `dw_itemtype_update_settings`     | Update settings (name, category, icon, availability, etc.)         |\n| `dw_itemtype_update_restrictions` | Update restrictions (allowed parents, children, websites, etc.)    |\n| `dw_itemtype_delete`              | Delete an item type                                                |\n\n#### Schema maintenance\n\nDeploying item type XML does not touch the database. Until the schema is synced, a field whose column is missing saves without error and keeps nothing.\n\n| Tool                      | Description                                                                       |\n| ------------------------- | --------------------------------------------------------------------------------- |\n| `dw_itemtype_health`      | Report fields whose DB column is missing, and columns the XML no longer declares   |\n| `dw_itemtype_sync_schema` | Reload item type XML and create the missing tables and columns                     |\n| `dw_itemtype_usages`      | List the pages and paragraphs that use an item type                               |\n| `dw_itemtype_clean_table` | **Destructive.** Delete orphaned rows from an item type's table                    |\n\nAfter deploying new XML: `dw_itemtype_sync_schema`, then `dw_itemtype_health`. The sync endpoint answers \"ok\" even when it aborted partway, so the health check is what tells you whether it worked - and `/Files/System/Log/items/ActivationWorkflow` holds the real errors. An item type whose table is missing entirely does not appear in the health report at all.\n\n### Fields\n\n| Tool              | Description                                                          |\n| ----------------- | -------------------------------------------------------------------- |\n| `dw_field_list`   | List fields on an item type                                          |\n| `dw_field_save`   | Add or update a field                                                |\n| `dw_field_delete` | Delete a field                                                       |\n| `dw_field_types`  | List all available editor types from the DW instance (not hardcoded) |\n\n### Pages\n\n| Tool                 | Description                                       |\n| -------------------- | ------------------------------------------------- |\n| `dw_page_list`       | List pages, optionally filtered by area or parent |\n| `dw_page_get`        | Get a page with all item fields                   |\n| `dw_page_create`     | Create a page under a parent                      |\n| `dw_page_set_fields` | Set item field values on a page                   |\n| `dw_page_delete`     | Delete a page                                     |\n| `dw_area_list`       | List all areas (websites)                         |\n\n### Paragraphs\n\n| Tool                      | Description                          |\n| ------------------------- | ------------------------------------ |\n| `dw_paragraph_list`       | List paragraphs on a page            |\n| `dw_paragraph_get`        | Get a paragraph with all item fields |\n| `dw_paragraph_create`     | Create a paragraph on a page         |\n| `dw_paragraph_set_fields` | Set item field values on a paragraph |\n| `dw_paragraph_delete`     | Delete a paragraph                   |\n\n`dw_page_set_fields` and `dw_paragraph_set_fields` verify their own write. A field name the item type does not declare is an error that lists the names it does have, and after saving they read the item back and return what it now holds. DW answers \"ok\" whether or not a value was stored, so a typo in a SystemName used to be indistinguishable from a successful write.\n\n### Products\n\n| Tool                      | Description                                                                |\n| ------------------------- | -------------------------------------------------------------------------- |\n| `dw_product_list`         | List products, optionally filtered by group or search                      |\n| `dw_product_get`          | Get a single product (full model incl. CustomFields/CategoryFields). Returns `{found: false}` for a missing product rather than an API error |\n| `dw_product_update`       | Update top-level fields, customFields, and categoryFields on a product     |\n| `dw_product_delete`       | Delete one or more products                                                |\n| `dw_product_bulk_discount`| Apply a percentage discount to DefaultPrice across a group or product list |\n\n`dw_product_update` accepts three input maps:\n\n- `fields` - top-level product fields (Name, DefaultPrice, Stock, etc.)\n- `customFields` - global product custom field values, keyed by SystemName\n- `categoryFields` - product category field values, keyed by SystemName\n\n### Product Schema\n\nManage the PIM data model: product categories (groups of attributes) and product fields (the attributes themselves).\n\n| Tool                          | Description                                                       |\n| ----------------------------- | ----------------------------------------------------------------- |\n| `dw_product_field_type_list`  | List the 15 product field types (TypeId + aliases)                |\n| `dw_product_category_list`    | List product categories                                           |\n| `dw_product_category_save`    | Create or update a product category                               |\n| `dw_product_category_delete`  | Delete categories (3-step DW workflow handled internally)         |\n| `dw_product_field_list`       | List fields belonging to a category                               |\n| `dw_product_field_save`       | Create or update a field on a category (accepts type aliases)     |\n| `dw_product_field_delete`     | Delete fields from a single category                              |\n\n### Files\n\n| Tool                   | Description                                                 |\n| ---------------------- | ----------------------------------------------------------- |\n| `dw_files_list`        | List files in a directory, optionally filtered by extension |\n| `dw_files_directories` | List subdirectories                                         |\n\n### Delivery API (read-only)\n\n| Tool                    | Description                   |\n| ----------------------- | ----------------------------- |\n| `dw_content_areas`      | Fetch areas from Delivery API |\n| `dw_content_pages`      | Fetch pages with content      |\n| `dw_content_paragraphs` | Fetch paragraphs with content |\n\n### API Discovery\n\n| Tool                     | Description                                      |\n| ------------------------ | ------------------------------------------------ |\n| `dw_api_search`          | Search the Swagger spec for endpoints by keyword |\n| `dw_api_endpoint_schema` | Get request/response schema for an endpoint      |\n| `dw_api_call`            | Raw call to any Admin API endpoint               |\n\n## Reference\n\n<details>\n<summary><b>Item type field types</b> - aliases for <code>dw_field_save</code> and <code>dw_itemtype_create</code></summary>\n\nWhen creating fields, you can use short aliases instead of full .NET class names:\n\n| Alias            | Editor                 |\n| ---------------- | ---------------------- |\n| `text`           | TextEditor             |\n| `longtext`       | LongTextEditor         |\n| `richtext`       | RichTextEditor         |\n| `richtextlight`  | RichTextEditorLight    |\n| `file` / `image` | FileEditor             |\n| `folder`         | FolderEditor           |\n| `media`          | MediaEditor            |\n| `link`           | LinkEditor             |\n| `itemlink`       | ItemLinkEditor         |\n| `itemrelation`   | ItemRelationListEditor |\n| `number`         | IntegerEditor          |\n| `decimal`        | DecimalEditor          |\n| `date`           | DateEditor             |\n| `datetime`       | DateTimeEditor         |\n| `checkbox`       | CheckboxEditor         |\n| `checkboxlist`   | CheckboxListEditor     |\n| `dropdown`       | DropDownListEditor     |\n| `radiolist`      | RadioButtonListEditor  |\n| `editablelist`   | EditableListEditor     |\n| `color`          | ColorEditor            |\n| `colorswatch`    | ColorSwatchEditor      |\n| `itemtype`       | ItemTypeEditor         |\n| `itemtab`        | ItemTypeTabEditor      |\n| `user`           | UserEditor             |\n| `singleuser`     | SingleUserEditor       |\n| `usergroup`      | SingleUserGroupEditor  |\n| `geolocation`    | GeolocationEditor      |\n| `googlefont`     | GoogleFontEditor       |\n| `hidden`         | HiddenFieldEditor      |\n| `password`       | PasswordEditor         |\n\nAny full .NET editor class name is also accepted. Use `dw_field_types` to discover all available editors from your DW instance.\n\n#### Repeatable lists (`itemrelation`)\n\n`itemrelation` (ItemRelationListEditor) creates a **repeatable list of child items** — the generic way to model FAQ items, rows, persons, etc. (instead of fixed numbered slots like `Question1..5`). It needs two extra params:\n\n| Param              | Required | Description                                                              |\n| ------------------ | -------- | ------------------------------------------------------------------------ |\n| `itemRelationType` | yes      | systemName of the **child item type** the list holds. Create it first.   |\n| `itemSource`       | no       | where items live. Default `CurrentParagraph` (rows stored on the owner). |\n\nCreate the child item type first, then the parent:\n\n```jsonc\n// 1) child row\ndw_itemtype_create { systemName: \"OpeningHoursRow\", fields: [\n  { name: \"Label\", systemName: \"Label\", type: \"text\" },\n  { name: \"Value\", systemName: \"Value\", type: \"text\" },\n]}\n// 2) parent with the repeatable list\ndw_itemtype_create { systemName: \"OpeningHours\", fields: [\n  { name: \"Title\", systemName: \"Title\", type: \"text\" },\n  { name: \"Rows\",  systemName: \"Rows\",  type: \"itemrelation\", itemRelationType: \"OpeningHoursRow\" },\n]}\n```\n\nThe tool emits the required `EditorConfiguration` + `EditorFields` (Item type / Item source) and the `Int32` underlying type automatically.\n\n</details>\n\n<details>\n<summary><b>Product field types</b> - aliases for <code>dw_product_field_save</code></summary>\n\nProduct fields use a different system - integer `TypeId` from `FieldTypeAll`, not editor class names:\n\n| Alias                | TypeId | Name        |\n| -------------------- | ------ | ----------- |\n| `text` / `text255`   | 1      | Text (255)  |\n| `longtext`           | 2      | Long text   |\n| `checkbox`           | 3      | Checkbox    |\n| `date`               | 4      | Date        |\n| `datetime`           | 5      | Date/Time   |\n| `number` / `integer` | 6      | Integer     |\n| `decimal`            | 7      | Decimal     |\n| `link`               | 8      | Link        |\n| `file`               | 9      | File        |\n| `text100`            | 10     | Text (100)  |\n| `text50`             | 11     | Text (50)   |\n| `text20`             | 12     | Text (20)   |\n| `text5`              | 13     | Text (5)    |\n| `richtext` / `editor`| 14     | Editor      |\n| `list` / `dropdown`  | 15     | List        |\n\nNumeric TypeId is also accepted directly. Use `dw_product_field_type_list` to fetch the live list from your DW instance.\n\n</details>\n\n<details>\n<summary><b>Troubleshooting</b></summary>\n\n| Symptom                                          | Cause                                                                          |\n| ------------------------------------------------ | ------------------------------------------------------------------------------ |\n| `DW_API_TOKEN not set` on startup                | `env` block missing or misplaced in the config - it belongs inside the server entry |\n| `DW API error 401`                               | Token wrong, expired, or from a different instance                             |\n| `DW API error 403` on some tools only            | API key lacks full access - recreate it with broader rights                     |\n| `Non-JSON response`                              | `DW_BASE_URL` points at the frontend or a login redirect, not the Admin API root |\n| `fetch failed` / `self-signed certificate`       | Remote host with an untrusted certificate, or DW not running                    |\n| Tools missing after an upgrade                   | Client caches the old process - restart it fully                               |\n\n</details>\n\n## Development\n\n```bash\nnpm install\nnpm run dev      # tsx, hot reload\nnpm run build    # tsc\nnpm run start    # compiled\n```\n\n```\nsrc/\n  index.ts    stdio entrypoint - env, process-level policy, transport\n  server.ts   createServer() - registers every tool, knows no transport\n  client.ts   DwClient - the three DW API calling conventions, documented in its header\n  utils.ts    shared Zod and response helpers\n  tools/      one module per concept, each exporting registerXTools(server, client)\n```\n\nA new tool module means one import and one entry in `registrars` in `server.ts`. A new tool needs `annotations` beside its description, or clients cannot tell whether it writes. The server version comes from `package.json`, so a release bumps one file. After changes, `npm run build` and restart your client - clients cache the tool list at startup.\n\nA second transport (Streamable HTTP, for ChatGPT and the Responses API) is a new entrypoint beside `index.ts`, not a change to `server.ts`.\n","readmeFilename":"README.md"}