{"_id":"@xen-orchestra/mcp","_rev":"10-5d5a9ae9aa79f4b1bad6f9c69d5186e1","name":"@xen-orchestra/mcp","dist-tags":{"latest":"1.4.3"},"versions":{"1.0.0":{"name":"@xen-orchestra/mcp","version":"1.0.0","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.0.0","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"dist/index.mjs"},"dist":{"shasum":"57efb71c5cd6371a8a6fbc9756b4067dc0057ba7","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.0.0.tgz","fileCount":9,"integrity":"sha512-QrhbnhGsmjBRza2+0ex44uXEgxbTz5oN+1bV5JU2lSvJe4rhftMOd2iuzzE7Vix3HrYHCutUa+sfGVTz0bWC1g==","signatures":[{"sig":"MEUCIG4S1CEIgDq1kubn5+CECNA3G9B66X8C5T/fCs3E4pBqAiEA6aCATMXzSwKLWhKlStKdKqMUOSCx64+U5pjnU1O5DB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26817},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"a12192d3543b28b66f5ac33fcd88ddaf8ac853af","private":false,"scripts":{"lint":"eslint src/","test":"tsc && node --test dist/*.test.mjs","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.5.1","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.19.0","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.0_1772028924980_0.10197265867390048","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@xen-orchestra/mcp","version":"1.0.1","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.0.1","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"fc78b4f2035bad41a7557af918fc105d0ddf4929","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.0.1.tgz","fileCount":10,"integrity":"sha512-D6j+Hyagk+DHsU45m/q5OM6Lwhqgaudp6o1i6Y3t3LV9p/7IbF7Q8NpG6kS+yzRlg2rbJ7PS4l8SDGtVOZPtPQ==","signatures":[{"sig":"MEQCIEFdV1VTaMv5n9J9UKDvgbOYlbgMGXNNl0lyqSYXUPy+AiAYGbog5vAR6VIRKQ2JtpWlJXBNvdpcoQKP+QCZWXyBAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27895},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"283a0ee537d067cc8a10436946e7bd472e1f68d5","private":false,"scripts":{"lint":"eslint src/","test":"tsc && node --test dist/*.test.mjs","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.5.1","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.21.0","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.1_1772112446133_0.19154816730178226","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@xen-orchestra/mcp","version":"1.1.0","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.1.0","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"e9b87166bf0d66c6c8385966ff754f529faa701c","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.1.0.tgz","fileCount":40,"integrity":"sha512-0qKVqrA7AYlXNv9tcHSVAl4WQuNmopxlU4wBCJCjVaVXh+LpEGIKahE9AqWBX0M8Uwn6xVpqeoRMsjC1ri62Kw==","signatures":[{"sig":"MEUCIQD61xnjq5BX5TAqkICNgiEzhQC9Fj5tOEWxTk3MqbcV4gIgAqsnSsDKyPzGvFSBisbyzx2c0AzGWMm38Y9Bz77it5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40369},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"00d5916aa647b8056cee16979ed3de21a339765a","private":false,"scripts":{"lint":"eslint src/","test":"tsc && node --test dist/*.test.mjs","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"elise-f","email":"elise.franzini@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.6.2","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.22.0","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.1.0_1774602130490_0.46130380873331367","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@xen-orchestra/mcp","version":"1.2.0","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.2.0","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"7a18d64866c8be6576c40c4e16d500e5481b4442","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.2.0.tgz","fileCount":24,"integrity":"sha512-O1qZ3SYzkYnyrDF8eMXkHazUD9GcdQ+ogMKc2yfSceWRdUwhMpXUIcqb69ZtoaEDBfQbbRTeOHB83Cor0uV2fQ==","signatures":[{"sig":"MEUCIQDp0ctIgtc24dKTTNH85SbJGrp+68D3fwvAn987aTKXTwIgS78xDY3fYNNLSf/JvWDeHsbHn9Fcs+8SkT8WRcWWT5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29562},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6176ce0717978c6437a22260565dc1f3393b8b39","private":false,"scripts":{"lint":"eslint src/","test":"tsc && node --test dist/*.test.mjs","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"b-nollet","email":"bastien.nollet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"10.9.4","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.23.0","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.2.0_1777032744416_0.3754122164952749","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@xen-orchestra/mcp","version":"1.3.0","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.3.0","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"b41d55eeaafa7cac133a91a494fd94ace2ca29ab","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.3.0.tgz","fileCount":34,"integrity":"sha512-3GM7ZrMwTyMBaN9ghBw8YcK9ieDMBB4UGHbdVO+ShdQppaXONlNZ9mW5UD33pjDJFdgaFcDOroejbO8EUA/c6Q==","signatures":[{"sig":"MEYCIQDFRUBRElFeMXXobeQ2NaDbZ2UOBBHVyrqAYNszcY/EDQIhAP/1mSk6vsSiMhZ4qcFtI8zdb+ozHkxBEeqgIkEN7eUU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47064},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"f45350c4c47c92ea09dd4a37db5c3ccc5e38ef85","private":false,"scripts":{"lint":"eslint src/","test":"tsc && cd dist && node --test","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.5.1","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.3.6","undici":"^6.5.0","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.25.0","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.3.0_1779437840182_0.770367814054824","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@xen-orchestra/mcp","version":"1.4.0","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.4.0","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"cb819b3fb99ab0b4f6b687857a7c6fa0aefa1307","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.4.0.tgz","fileCount":34,"integrity":"sha512-Jf+cxeyc2h7wr0pV9sV8yaKguoh/pMVnHV6mnnf9PSI8I0Xl30q0WN4clpkhI05QTk3Gp11lvsqizZsjT5qgQA==","signatures":[{"sig":"MEUCIDjtpzfFpEiC6exRPUegZyz8MF2bVrwYDOJbjT3GNUkfAiEA6rjQ59KED75dwdcoe8s8ZGxIClNKXhD/4QZOwPsRxkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51485},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"5c73f5e8e2348991d1c445e74f626b968caeec63","private":false,"scripts":{"lint":"eslint src/","test":"tsc && cd dist && node --test","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.15.0","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"24.6.0","dependencies":{"zod":"^4.3.6","undici":"^6.5.0","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.25.1","typescript-eslint":"^8.23.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.4.0_1779886232676_0.9329154511399094","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@xen-orchestra/mcp","version":"1.4.1","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.4.1","maintainers":[{"name":"mpiton","email":"matpiton@protonmail.com"},{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"ca9f860f65d8d7210065dd9e52a9d4adf0d61000","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.4.1.tgz","fileCount":34,"integrity":"sha512-HkOEwMhzAJYrMQpZxpaPvyLszjcq5JSBZm+9aw0SwrL329JnExvt0zDKWza8rsrPuTqqSaZpXLOZnegbIuwVOw==","signatures":[{"sig":"MEYCIQCdCxm2LCFVWSiIjlqsbDIPc5FS2pXUibryf3tRhw4nZQIhAO951CFGotiYdx+5CYDZbCbxfo2EobWxhwal34I6mrKu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51704},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"359c4d4f775a3974a33cc173a52c8def91febecb","private":false,"scripts":{"lint":"eslint src/","test":"tsc && cd dist && node --test","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"b-nollet","email":"bastien.nollet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"10.9.7","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","undici":"^6.5.0","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^1.27.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.4.1_1782287237782_0.43468858228894325","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@xen-orchestra/mcp","version":"1.4.2","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","_id":"@xen-orchestra/mcp@1.4.2","maintainers":[{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"bin":{"xo-mcp":"bin/xo-mcp.mjs"},"dist":{"shasum":"f42c82f882ab819c171ee5b09daf1ae22e030c62","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.4.2.tgz","fileCount":34,"integrity":"sha512-9e2ks3CkJZXRdP5wMiEtYmqgEMSFDzes2EJ+AmEvOIq6qcfwrrHWzY7+cbvnCNIY6D3xzM+ZVDsuljM5WvnCrg==","signatures":[{"sig":"MEUCIBwV6ntaqDF7pCU2q69aO2M1hNqzG/beXNzoetH0DI49AiEAv2UpnFFp5O016mYXDEENPi01pSAiy7WXZ04OUaZoKi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDU1Yi/S6AqBCxpHiYtbjJF/VNoVVtsWdYD+zyxGYlGswIgZ2ipbvONLWgzrzhRd+y2NmI88mUelTYEJk6A7BwFYf0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51703},"main":"./dist/index.mjs","type":"module","engines":{"node":">=20.0.0"},"gitHead":"d15812482a636710288df1a58357aab8f082a339","private":false,"scripts":{"lint":"eslint src/","test":"tsc && cd dist && node --test","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"b-nollet","email":"bastien.nollet@vates.tech"},"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"10.9.7","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","undici":"^6.5.0","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^2.0.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.4.2_1787920710336_0.26813943856031286","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"_id":"@xen-orchestra/mcp@1.4.3","bin":{"xo-mcp":"bin/xo-mcp.mjs"},"bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"dist":{"shasum":"0baa8e952e89832ca01cab84e566381624e64287","tarball":"https://registry.npmjs.org/@xen-orchestra/mcp/-/mcp-1.4.3.tgz","fileCount":34,"integrity":"sha512-NqA7r52ZNWWfLVemBczLlbAzXee0caNkAZqXCiIJ3D3Y94KlfOLa+EWzUFSMgwafniEzY+zJhk1qhVsu3/qrng==","signatures":[{"sig":"MEYCIQD/k0FuQ/cOt7EofP//DcsMtjk30EPtHRC5WF8bCEqS6gIhAODYeV0hz1sSeyMjAKk3hc2HNJ9FL7EIOqK9PXfvKMWg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDQ6+zCi4YFZIOUwq5HSiuX7OEa8AxcgMMrB1Q/fMEPlgIhALDnPPxKZZEXpyjcC9uLFlcs55hgo996awCe0HHCx9WV"}],"unpackedSize":53738},"main":"./dist/index.mjs","name":"@xen-orchestra/mcp","type":"module","author":{"url":"https://vates.fr","name":"Vates SAS"},"engines":{"node":">=20.0.0"},"gitHead":"f5846094c54378a527b32124377b3e2deb46f7fe","license":"AGPL-3.0-or-later","private":false,"scripts":{"lint":"eslint src/","test":"tsc && cd dist && node --test","build":"tsc","clean":"rimraf dist/","start":"node dist/index.mjs","prebuild":"npm run clean","postversion":"npm publish --access public","prepublishOnly":"npm run build"},"version":"1.4.3","_npmUser":{"name":"elise-f","email":"elise.franzini@vates.tech"},"homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"_npmVersion":"11.6.2","description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","directories":{},"maintainers":[{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","undici":"^6.5.0","@modelcontextprotocol/sdk":"^1.26.0"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.0","@eslint/js":"^9.19.0","typescript":"~5.6.3","@types/node":"^22.3.0","@vates/types":"^2.1.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.4.3_1790328783472_0.7638553106888581"}}},"time":{"created":"2026-02-25T14:15:24.894Z","modified":"2026-09-25T09:33:03.695Z","1.0.0":"2026-02-25T14:15:25.168Z","1.0.1":"2026-02-26T13:27:26.284Z","1.1.0":"2026-03-27T09:02:10.633Z","1.2.0":"2026-04-24T12:12:24.570Z","1.3.0":"2026-05-22T08:17:20.325Z","1.4.0":"2026-05-27T12:50:32.819Z","1.4.1":"2026-06-24T07:47:17.961Z","1.4.2":"2026-08-28T12:38:30.441Z","1.4.3":"2026-09-25T09:33:03.549Z"},"bugs":{"url":"https://github.com/vatesfr/xen-orchestra/issues"},"author":{"url":"https://vates.fr","name":"Vates SAS"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mcp","keywords":["xen-orchestra","xcp-ng","mcp","model-context-protocol","ai","virtualization"],"repository":{"url":"git+https://github.com/vatesfr/xen-orchestra.git","type":"git","directory":"@xen-orchestra/mcp"},"description":"MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure","maintainers":[{"name":"mlssfrncjrg","email":"melissa.franca@vates.tech"},{"name":"mathieura","email":"contact@mathieu-raisin.fr"},{"name":"florent.beauchamp","email":"florent.beauchamp@vates.fr"},{"name":"julien-f","email":"julien.fontanet@isonoe.net"},{"name":"marsaud","email":"marsaud.fabrice@neuf.fr"},{"name":"pdonias","email":"pierre.donias@gmail.com"},{"name":"benjireis","email":"benjamin.reis@vates.fr"},{"name":"tgoettelmann","email":"thierry@byscripts.info"},{"name":"b-nollet","email":"bastien.nollet@vates.tech"},{"name":"joris-k","email":"joris.kosacki@vates.tech"},{"name":"elise-f","email":"elise.franzini@vates.tech"},{"name":"olivier.f","email":"olivier.floch@vates.tech"},{"name":"pierre.brunet289","email":"pierre.brunet@vates.tech"}],"readme":"<!-- DO NOT EDIT MANUALLY, THIS FILE HAS BEEN GENERATED -->\n\n# @xen-orchestra/mcp\n\n[![Package Version](https://badgen.net/npm/v/@xen-orchestra/mcp)](https://npmjs.org/package/@xen-orchestra/mcp) ![License](https://badgen.net/npm/license/@xen-orchestra/mcp) [![PackagePhobia](https://badgen.net/bundlephobia/minzip/@xen-orchestra/mcp)](https://bundlephobia.com/result?p=@xen-orchestra/mcp) [![Node compatibility](https://badgen.net/npm/node/@xen-orchestra/mcp)](https://npmjs.org/package/@xen-orchestra/mcp)\n\n> MCP server for Xen Orchestra — allows AI assistants to query and manage XO infrastructure\n\n## Install\n\nInstallation of the [npm package](https://npmjs.org/package/@xen-orchestra/mcp):\n\n```sh\nnpm install --global @xen-orchestra/mcp\n```\n\n## Usage\n\n[MCP](https://modelcontextprotocol.io/) (Model Context Protocol) is an open standard that lets AI assistants interact with external tools. This package provides an MCP server that connects AI assistants like Claude to your [Xen Orchestra](https://xen-orchestra.com/) infrastructure, allowing natural language queries about your pools, hosts, and VMs.\n\n### Quick Start\n\n**Claude Desktop** — Add to your config (`~/.config/claude-desktop/config.json`):\n\nUsing a token (recommended):\n\n```json\n{\n  \"mcpServers\": {\n    \"xo\": {\n      \"command\": \"npx\",\n      \"args\": [\"@xen-orchestra/mcp\"],\n      \"env\": {\n        \"XO_URL\": \"https://your-xo-server\",\n        \"XO_TOKEN\": \"your-token\"\n      }\n    }\n  }\n}\n```\n\nUsing username/password:\n\n```json\n{\n  \"mcpServers\": {\n    \"xo\": {\n      \"command\": \"npx\",\n      \"args\": [\"@xen-orchestra/mcp\"],\n      \"env\": {\n        \"XO_URL\": \"https://your-xo-server\",\n        \"XO_USERNAME\": \"admin@example.com\",\n        \"XO_PASSWORD\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\n**Claude Code:**\n\n```bash\n# Using a token (recommended)\nclaude mcp add xo \\\n  -e XO_URL=https://your-xo-server \\\n  -e XO_TOKEN=your-token \\\n  -- npx @xen-orchestra/mcp\n\n# Using username/password\nclaude mcp add xo \\\n  -e XO_URL=https://your-xo-server \\\n  -e XO_USERNAME=admin@example.com \\\n  -e XO_PASSWORD=your-password \\\n  -- npx @xen-orchestra/mcp\n```\n\n### Multiple XO instances\n\nTo connect several XO servers at once, add one entry per instance with a different name (e.g., `xo-production`, `xo-staging`). Each entry runs its own process with its own credentials.\n\nSee the [full documentation](https://docs.xen-orchestra.com/mcp) for configuration examples.\n\n### Prerequisites\n\n- **Node.js** >= 20\n- **Xen Orchestra** 6.5 or later, with the [REST API](https://docs.xen-orchestra.com/restapi) enabled\n- An **AI assistant** that supports MCP (Claude Desktop, Claude Code, etc.)\n\n> **Note:** this MCP server requires **Xen Orchestra 6.5 or later**. On an older XO it stops at startup with an error such as `Unable to verify MCP status (HTTP 404)` — upgrade your Xen Orchestra to use it.\n\n### Configuration\n\nTwo authentication modes are supported: **token** (recommended) or **username/password**.\n\n| Variable                | Required                | Description                                                                                   |\n| ----------------------- | ----------------------- | --------------------------------------------------------------------------------------------- |\n| `XO_URL`                | Yes                     | Xen Orchestra server URL (e.g., `https://xo.example.com`)                                     |\n| `XO_TOKEN`              | If no username/password | Authentication token                                                                          |\n| `XO_USERNAME`           | If no token             | XO user with admin privileges                                                                 |\n| `XO_PASSWORD`           | If no token             | XO password                                                                                   |\n| `XO_MCP_ENABLE_ACTIONS` | No                      | Set to `1` to expose write/destructive operations (see [Write operations](#write-operations)) |\n\nTo generate a token, go to the XO user page (`/user`) or run `xo-cli create-token`. If both `XO_TOKEN` and `XO_USERNAME`/`XO_PASSWORD` are set, token authentication takes priority.\n\n### Behind a corporate proxy\n\nThe MCP server respects `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`. Set them when your AI assistant uses an outbound proxy but your XOA is on the internal network.\n\n| Variable      | Effect                                                                                                                                                                                                                                                                                                                                                              |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `HTTP_PROXY`  | Proxy URL for plain HTTP requests, e.g. `http://proxy.corp.example:3128`. Credentials are supported: `http://user:pass@proxy:3128` (Basic auth only — NTLM/Kerberos proxies need a sidecar like cntlm).                                                                                                                                                             |\n| `HTTPS_PROXY` | Proxy URL for HTTPS requests. Same format as `HTTP_PROXY`. The proxy itself is contacted over HTTP; `https://` schemes are unusual.                                                                                                                                                                                                                                 |\n| `NO_PROXY`    | Comma-separated list of hostnames that bypass the proxy. Three forms: exact host (`xoa.internal.example.com`), suffix wildcard (`.example.com` or `*.example.com` — matches subdomains, **not** the bare domain — list both if needed), or `*` alone to bypass everything. CIDR ranges are not supported by the underlying library. Lowercase `no_proxy` works too. |\n\nExample for Claude Desktop, with a corporate proxy and a XOA on the internal network:\n\n```json\n{\n  \"mcpServers\": {\n    \"xo\": {\n      \"command\": \"npx\",\n      \"args\": [\"@xen-orchestra/mcp\"],\n      \"env\": {\n        \"XO_URL\": \"https://xoa.internal.example.com\",\n        \"XO_TOKEN\": \"your-token\",\n        \"HTTPS_PROXY\": \"http://proxy.corp.example:3128\",\n        \"NO_PROXY\": \"xoa.internal.example.com\"\n      }\n    }\n  }\n}\n```\n\n### Available Tools\n\nAt startup, the server fetches the OpenAPI spec from your XO instance (`/rest/v0/docs/swagger.json`) and generates one tool per resource domain. Domain and operation names come straight from the spec: the primary tag (`tags[0]`) becomes `{tag}_query`, and each `operationId` (e.g. `GetVms`, `StartVm`, `HardShutdownVm`) is used verbatim as the enum value. No hand-curated mapping — if the XO server adds a new endpoint, it appears automatically. Responses are rendered as markdown tables by the REST API itself (via `?markdown=true`); the MCP layer only relays them.\n\n**Utility tools** (always present):\n\n| Tool                         | Description                                                                 |\n| ---------------------------- | --------------------------------------------------------------------------- |\n| `check_connection`           | Test the connection to the Xen Orchestra server                             |\n| `search_documentation`       | Search and retrieve Xen Orchestra documentation                             |\n| `get_infrastructure_summary` | Aggregate pools/hosts/VMs across the infrastructure into a markdown summary |\n\n**Domain query tools** (generated, read-only). Each tool accepts an `operation` enum (the OpenAPI `operationId`) plus optional `id`, `filter`, `fields`, `limit`. On a current xo-server the generated domains are:\n\n- Compute: `pools_query`, `hosts_query`, `vms_query` (covers VMs, templates, snapshots, controllers — tsoa groups them under the `vms` tag server-side)\n- Storage: `vdis_query` (includes VDI snapshots), `srs_query`, `vbds_query`, `pbds_query`\n- Network: `networks_query`, `vifs_query`, `pifs_query`\n- Backup: `backup_jobs_query`, `backup_logs_query`, `restore_logs_query`, `backup_repositories_query`, `backup_archives_query`, `schedules_query`\n- Access: `users_query`, `groups_query`, `servers_query`\n- Observability: `alarms_query`, `messages_query`, `events_query`, `tasks_query`\n- System: `proxies_query`, `pgpus_query`, `pcis_query`, `sms_query`, `xoa_query`\n- Misc: `docs_query`\n\nStats endpoints (`/…/stats`) and binary download endpoints (`.xva`, `.ova`, `.vhd`, `.raw`, …) are deliberately not exposed — the payloads are unsuitable for LLM context. Query them via the REST API directly when needed.\n\n### Configuration\n\n| Env var                 | Effect                                                                                   |\n| ----------------------- | ---------------------------------------------------------------------------------------- |\n| `XO_MCP_ENABLE_ACTIONS` | Set to `1` to expose write operations (`{domain}_action` tools). Default: read-only.     |\n| `XO_MCP_DENY_LIST`      | Comma-separated list of `operationId`s to drop entirely, e.g. `DeleteVm,HardShutdownVm`. |\n\n### Write operations\n\nAction tools (create/update/delete) are gated behind `XO_MCP_ENABLE_ACTIONS=1` so the default surface stays read-only. When enabled, each domain gets a companion `{domain}_action` tool. Every action — from creating a snapshot to a `DELETE` or `pools/emergency_shutdown` — returns a preview and a one-shot `confirm_token` the assistant must send back within 5 minutes to execute.\n\n### Security model\n\n`x-mcp-exposure` controls **which REST endpoints this MCP server turns into LLM tools — it is not a REST API security boundary.**\n\n- The XO REST API never reads `x-mcp-exposure`; the annotation lives only in the OpenAPI spec and is consumed solely by this server's tool generation. Every endpoint keeps its own RBAC/ACL authorization, which remains the actual access-control gate.\n- Any REST client with valid credentials — including a non-official or compromised MCP — can call a `deny`-tagged endpoint directly. The annotation cannot stop it.\n- The benefit is a **narrower threat model**: limiting what an LLM can see and invoke (a guard against prompt injection and model mistakes), not authorization.\n\nIn short, `x-mcp-exposure` (and the `mcp/require-mcp-expose` lint rule that enforces it on the REST side) is a _surface-control policy_ for the assistant's toolset. Rely on XO's RBAC/ACL for \"who may do what\".\n\n### Server-side kill-switch\n\nAn xo-server admin can globally block MCP by setting `[mcp] enabled = false` in the server config. With that flag set, the binary exits at startup with `MCP disabled by admin` on stderr and any active client receives `503 { \"error\": \"mcp_disabled\" }` on its next request. It's not a bug — re-enable MCP in xo-server's config to recover.\n\nFull documentation with tool parameters, examples, and troubleshooting: [docs.xen-orchestra.com/mcp](https://docs.xen-orchestra.com/mcp)\n\n## Contributions\n\nContributions are _very_ welcomed, either on the documentation or on\nthe code.\n\nYou may:\n\n- report any [issue](https://github.com/vatesfr/xen-orchestra/issues)\n  you've encountered;\n- fork and create a pull request.\n\n## License\n\n[AGPL-3.0-or-later](https://spdx.org/licenses/AGPL-3.0-or-later) © [Vates SAS](https://vates.fr)\n","readmeFilename":"README.md"}