{"_id":"@mcp-abap-adt/http","_rev":"13-83033483b2aa17ef7651b3cf383e02c8","name":"@mcp-abap-adt/http","dist-tags":{"latest":"23.1.0"},"versions":{"0.0.0-stage":{"name":"@mcp-abap-adt/http","version":"0.0.0-stage","_id":"@mcp-abap-adt/http@0.0.0-stage","stub":true,"maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"dist":{"shasum":"4b8207ea6a478e22e00c178923282eaf27333b7d","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-t6lx2JJyhHcO8PKkojpXUb8QG3UhAErA7RuLyReHAR7tC3ShTaRM1YHZ6t7vn+gYx1H7az+95LLndjw6fHNVRQ==","signatures":[{"sig":"MEUCIQDFASUrPl1acYt8OYKc1L8G3ddm0HUk2Hu6N/+pk4V2YwIgLoZNlJ0ZzpSd8x+ualK+tjSASK4ZxwJFFX3cbOc4T60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"19.0.0":{"name":"@mcp-abap-adt/http","version":"19.0.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@19.0.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"1fd6216331bf2b4fc835ec3ff81ada6eac7c44f0","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-19.0.0.tgz","fileCount":28,"integrity":"sha512-vw+0zDDG/OCM3+octwolv8AY6kJFT1Khi+PiYBdPqV65VHlyFTXOCFtxHBuRwKOPZLB03M7QBulIav5Eqp0d5w==","signatures":[{"sig":"MEUCIHtKDF/b5p3SE6keGOnxEZW0irEZOTqE0n5UFhG8h8raAiEAzlz5k959V8XX9O6CpPBtRECEl14YyvDTQQIWO0iHRHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDYS55kSyFp243rMk5WJ0JcGTzZz4qdFf878RmHhGadDwIhAPTavpQCXEfNq68W4i7bA8UsI3SfxOVut2XD3tEvWaP3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145461},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"fe54bfcdeb9af732ffbb9a5cdcae0481abba6044","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"npx tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"npx biome check src","test:check":"npx tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"express":"^5.2.1","@mcp-abap-adt/lib":"^19.0.0","@mcp-abap-adt/logger":"^0.4.1","@modelcontextprotocol/sdk":"^1.32.0","@mcp-abap-adt/responsible-rules":"^19.0.0","@mcp-abap-adt/background-runs-memory":"^19.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_19.0.0_1792555528115_0.39368941801772084","host":"s3://npm-registry-packages-npm-production"}},"19.1.0":{"name":"@mcp-abap-adt/http","version":"19.1.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@19.1.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"ac919ef77ae30abaa34c456951ba42dcf29bfc0a","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-19.1.0.tgz","fileCount":28,"integrity":"sha512-k7dH2olKAhPX4o0Z4CpImxsEoYzouspdYDOIw4Nyzt6Wq19JIf2cNUiON31JJMotKszEV8F0j2MGoWmOaycxjA==","signatures":[{"sig":"MEQCIFLRu4QdgEga4YrNhps863GgkptQY6M3CEBGPsSOtKszAiAGgmkz5UD16ARZljN5K/4VLKe6f0No5gYkXTq6CS3YLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCNqBUuCnxONkFgfsvhX+gmSyA6cXI75p89n9w5tTV4/wIgX6a3HGRADxdKDpfrElN0Qmuetx8PzYcBwi3izjQIzAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145461},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"a9baabab2820e87c66f53ea3c29a4f71c73e5e92","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"npx tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"npx biome check src","test:check":"npx tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"express":"^5.2.1","@mcp-abap-adt/lib":"^19.1.0","@mcp-abap-adt/logger":"^0.4.1","@modelcontextprotocol/sdk":"^1.32.0","@mcp-abap-adt/responsible-rules":"^19.1.0","@mcp-abap-adt/background-runs-memory":"^19.1.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_19.1.0_1792577824038_0.26013630677337685","host":"s3://npm-registry-packages-npm-production"}},"19.2.0":{"name":"@mcp-abap-adt/http","version":"19.2.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@19.2.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"7ad78dbe408f245a77c3511e980262e876cd535f","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-19.2.0.tgz","fileCount":16,"integrity":"sha512-983lriFkjK2RAsThVuXfeKdu21ZBIzenhadwo/tq6G2Y+z/ZeSwduHZmrJZ1+8hlvy1ZFe9L02c0olde0PJl+g==","signatures":[{"sig":"MEYCIQD7WPbm+XGVjocaUtgv6cIkmii1raFUcA1dFP64CcZA6wIhALA2ZYdfyUx0rUZHFvqka8lgGchV3m8UvjrZhOgHYkA3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC5e0/mMYzHlbcSx6LT4Gh2dv2l80VfNQAEoTBFEKXkNgIhAMgCkPaGlxM32NzakYZ07jw4fyORKJ/ADdxj1hPraUuw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59089},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"f2695e6097ed28e829e432d91ea860bb697116f1","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"npx tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"npx biome check src","test:check":"npx tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^19.2.0","@mcp-abap-adt/server-runtime":"^19.2.0","@mcp-abap-adt/responsible-rules":"^19.2.0","@mcp-abap-adt/background-runs-memory":"^19.2.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_19.2.0_1792615181838_0.3602970660019491","host":"s3://npm-registry-packages-npm-production"}},"20.0.0":{"name":"@mcp-abap-adt/http","version":"20.0.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@20.0.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"61c123adb91da93575a37ffed42e898e872daedf","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-20.0.0.tgz","fileCount":16,"integrity":"sha512-2dsDRIdLuRYBrOC6my/oyL7QcbU7uKjrl9WquvmBxoFLs/bUyZvinq7RkqoaJBkyptUzp9kF19chMP+c3XwUCg==","signatures":[{"sig":"MEYCIQDorEZ2Ctjzt8vOoC2TQo28asU1xjVbIJs5I8a0wcu4IAIhALhC2EcoNz9Eu/whRi+bsrAKNHze82p+o5D2ndBb76/I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXpK+Dk+SwrxR/sk3FccF7f4K8trIrCwaRWaElXa5sLgIgEZB+3C+PfTAFrEmvnxKRzNk3X5mykjRS+mQ2zLZPW9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"312702d284a216e793b9146aac9cf948cbafc2ac","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^20.0.0","@mcp-abap-adt/server-runtime":"^20.0.0","@mcp-abap-adt/responsible-rules":"^20.0.0","@mcp-abap-adt/background-runs-memory":"^20.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_20.0.0_1792688330314_0.848344000440735","host":"s3://npm-registry-packages-npm-production"}},"20.1.0":{"name":"@mcp-abap-adt/http","version":"20.1.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@20.1.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"b8418a8bcb74af484b3b0b425cb6c5555c358192","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-20.1.0.tgz","fileCount":16,"integrity":"sha512-CX3uz8Q+kUzCYvhBBRNzK8HMNpgKHB4trN/5L5HWsd7IVpLmLfagtXiOSCK+pYRXzmxriA4oBOOAUN5/vZN0PA==","signatures":[{"sig":"MEUCIQCBSapL7HbJzi0ReDpBwqfSwXv4YnBOwVmwSLFTcSsh1wIgNkom1rbsd7l4F+vVo+iBfGtMvS4V02kgrxrsvq9qb3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHDmx5+x4yGnFB68+Ntry2brxqtwNR+TYIKbtMbC5uJRAiEAjKuKGURwB2VAVFe5To0jXR9YG63xegn2CtrEMlQniEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"50f4b9928e685966c70c9521499f6240eedcf05c","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^20.1.0","@mcp-abap-adt/server-runtime":"^20.1.0","@mcp-abap-adt/responsible-rules":"^20.1.0","@mcp-abap-adt/background-runs-memory":"^20.1.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_20.1.0_1792732770468_0.887928195280451","host":"s3://npm-registry-packages-npm-production"}},"21.0.0":{"name":"@mcp-abap-adt/http","version":"21.0.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@21.0.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"7b2e99cf75859720c6a987d303105be6f31fa3f6","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-21.0.0.tgz","fileCount":16,"integrity":"sha512-4tQvOi1TiqwhoeKzyTQeJmAaFCPEtHypQNhFnTJZhivr3AcQvzspHPM+dvN/1jJDxIOD1TGk0hIjMQpEMD4bmw==","signatures":[{"sig":"MEYCIQCOfk83vgL7KqZAyAOmOjlf1ei31eRAICsgnuyQea7WJQIhAOzpJc4yVCnHeKN/tmDuONG8vFIUZ79h+JY6Etfkjmcx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFKHcuwvMDsK9oUezgJ/ckyKtZl1wYb4Vjps54f5YL5qAiEAmz963/28BpfPX7nz9bFDG2iIQWTbT1c2c0J6X5iJlT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"b1caedd228c6ee790c8ee7df5e3f834d005bb645","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^21.0.0","@mcp-abap-adt/server-runtime":"^21.0.0","@mcp-abap-adt/responsible-rules":"^21.0.0","@mcp-abap-adt/background-runs-memory":"^21.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_21.0.0_1793366801429_0.8479823587713274","host":"s3://npm-registry-packages-npm-production"}},"22.0.0":{"name":"@mcp-abap-adt/http","version":"22.0.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@22.0.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"38831ed0553bf433f743aa6ca7f9643e4edf000c","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-22.0.0.tgz","fileCount":16,"integrity":"sha512-UApL+ZZ/9re88dI8g8wSfSMb6znt5LcRIUQLBf4L5+7xiQFGWpLMRIsPxrJW1AlGogylv3f00q7Zigm2D3Ag9w==","signatures":[{"sig":"MEQCIBqFGtMQhicgnl3O8Uj9Dqi8WFWEc0UGJ151S+5SefVOAiAT8mAE8lr4sJMEAQQpa8GvE9p2pMgvn+CZye+lhzH0iA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDr+lKht4yQva7qzzLHxzErUZjMR+NJ0Hp++OKAHakC+QIgBBL198r6WjZrWslRaLU4XGW4t5y7zsesBxsX/Apg4t0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"67c99384daaf2a0b4df0792d5504bf3a799f7769","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^22.0.0","@mcp-abap-adt/server-runtime":"^22.0.0","@mcp-abap-adt/responsible-rules":"^22.0.0","@mcp-abap-adt/background-runs-memory":"^22.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_22.0.0_1793472958147_0.2311460494406944","host":"s3://npm-registry-packages-npm-production"}},"22.0.1":{"name":"@mcp-abap-adt/http","version":"22.0.1","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@22.0.1","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"dc0a9bcc62272ff3439b8cb0f46d92192bbdfc7b","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-22.0.1.tgz","fileCount":16,"integrity":"sha512-Hxrq2siDjU81BS0f7iMdD1JjBwj4r40+jFrAYlanoWfJKHh5WENVsmebRm/58kr+AV/AkYll06PrVQ+6gd9e7Q==","signatures":[{"sig":"MEUCIQCHSE35dIj9GDGjZ+ddxv1JBSRld/siXT4fPaCOZcDmFwIgN+PYQrB6thWCJCuGu9vP64UJOeVYdfID/h1MMab8HQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBFLLHwHEC3kPNXF2E7pUvSD06ANRPln0WqOfDTEDLNTAiA3Y4u1x5y4G5VDmjhhE94lijHg+0r6G24bbtvZALJWSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"822e164a27d7cfa0a00dadfe84970f1aeb3a537f","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^22.0.1","@mcp-abap-adt/server-runtime":"^22.0.1","@mcp-abap-adt/responsible-rules":"^22.0.1","@mcp-abap-adt/background-runs-memory":"^22.0.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_22.0.1_1793479706811_0.15978099127527234","host":"s3://npm-registry-packages-npm-production"}},"23.0.0":{"name":"@mcp-abap-adt/http","version":"23.0.0","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@23.0.0","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"9205113bdda53d3e8db52f8efb5803c50b3090b1","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-23.0.0.tgz","fileCount":16,"integrity":"sha512-F/QQCkI2kw0LGmpZGxa1z9pg2jn3I4d7EuYOh7n34oG0wtV1xGMwEB1FjP2Yv+GHEIFlEjR+1diNPsmZXyD9yw==","signatures":[{"sig":"MEUCIQCfSvn67kgD9kOCtgwYkL5ps8tlWYTO7AFKMsaJY//42gIgHzJcwFyKJn0jzaok9sCK3Co0LHo3ArI1YCchKbEdgUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEpdtJ5JjooSygAjfDxNMiFYqHDYqjzXN/T87fKTQb1OAiAuwMvgl2BHFO1Y64YzTncr+VjO/riMnnTGJnLOoQKySQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"b6a46adbc2354a9da30847188c2c0b6b8dfb2922","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^23.0.0","@mcp-abap-adt/server-runtime":"^23.0.0","@mcp-abap-adt/responsible-rules":"^23.0.0","@mcp-abap-adt/background-runs-memory":"^23.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_23.0.0_1793605464397_0.00009846870121155149","host":"s3://npm-registry-packages-npm-production"}},"23.0.1":{"name":"@mcp-abap-adt/http","version":"23.0.1","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@23.0.1","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"9be916f52454c5b7bfa77a3852d14c152118605e","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-23.0.1.tgz","fileCount":16,"integrity":"sha512-g1aS90anJ7CaQFucRpXKSKx0PTK6kjl8wqI2iXD0Ymufi5lirbig6o3hnQlrxopGBb0iBxL2Q+vKpdzm1cYpyQ==","signatures":[{"sig":"MEQCIE1UEPmh2qvzfunbKtjelbWJhKdyILUUZA1wwlLe0gQ3AiAAllwsnJD14olB4ibEeGvmQsgerxoPJB9Zw4T2Gy7q1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEvNOzA9pCfGIwL2FqM6o4ek5XfeDz1aUsFB8d6tE0syAiEAgtoo6RCkmnJP/yFtjrggSG19ziVPJotphF1meH4sti0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"eefb6d34d740e0ad4b4ff7fa691552ed77487ba1","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^23.0.1","@mcp-abap-adt/server-runtime":"^23.0.1","@mcp-abap-adt/responsible-rules":"^23.0.1","@mcp-abap-adt/background-runs-memory":"^23.0.1"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_23.0.1_1793625911751_0.4959935542197891","host":"s3://npm-registry-packages-npm-production"}},"23.0.2":{"name":"@mcp-abap-adt/http","version":"23.0.2","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","_id":"@mcp-abap-adt/http@23.0.2","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"dist":{"shasum":"e1656f6ca8eab56752ed49eb92343431a4c653bb","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-23.0.2.tgz","fileCount":16,"integrity":"sha512-AGHBWrtMfo86fOuOMkRsQcSIcgTLLhqwHPTzsnTKF/O5VNBn7pohfvq7nBp6LVZXS7UdAqDUnY91eIOL3nd43A==","signatures":[{"sig":"MEQCIEhR41gS9yiFT6l2SOw1kpXrHldpR07ljMTPmxPPi8XJAiAckoq99hhXLQ3YBNFC+cFRT9i4IuzLAvRk7/ZdmeUurw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCdOLnooJpyI3amXl9hnvubmi5RNj/bXyBoKR6ptyp//AIhAP3cK36kD04OMyTEwdmoFH5/8tY4eE7RG5rL4iutxURM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"acd4cc09276840676d62667a2052a2156d0ffcef","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^23.0.2","@mcp-abap-adt/server-runtime":"^23.0.2","@mcp-abap-adt/responsible-rules":"^23.0.2","@mcp-abap-adt/background-runs-memory":"^23.0.2"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"tmp":"tmp/http_23.0.2_1793641095619_0.03780404805363824","host":"s3://npm-registry-packages-npm-production"}},"23.1.0":{"_id":"@mcp-abap-adt/http@23.1.0","bin":{"mcp-abap-adt-http":"bin/mcp-abap-adt-http.js"},"bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"dist":{"shasum":"18f934ddbfd9f947e674e98bb3f994abb9bf3d12","tarball":"https://registry.npmjs.org/@mcp-abap-adt/http/-/http-23.1.0.tgz","fileCount":16,"integrity":"sha512-8DMkKM7rMzh5WQ0znpT7i8wbgyKQM3rFLgkf6im2TAuaAyqpfKj+taGgGWvj/XGJwbMIk6aAhyV4NBufwVSPjw==","signatures":[{"sig":"MEYCIQCi9ytEnjatLVLzbm5ffyrD2FJMXJOS3XFr8Hc1Y7NtPgIhALvQ8Xq3HZsNRm9Cm/8HcDNyKqS/QkeKHn2ZZgMOGxEs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGrLbYu/ph2V0o4x0H+YB05wXMicjdCQJYhKvfQwXuLQAiAFERMpEgMj6bfXuI1WOpNoN0PxCBx3vZjUJBmyi6dw6g=="}],"unpackedSize":61915},"main":"dist/index.js","name":"@mcp-abap-adt/http","types":"dist/index.d.ts","author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"engines":{"npm":">=9.0.0","node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./launcher":{"types":"./dist/launcher.d.ts","import":"./dist/launcher.js","require":"./dist/launcher.js"}},"gitHead":"b29d6ffdc8665ce00580e100ca70e28d341f7bfb","license":"AGPL-3.0-only","mcpName":"io.github.fr0ster/mcp-abap-adt-http","scripts":{"test":"npm --prefix .. test -- --roots http/src","build":"tsc -p tsconfig.json","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","lint:check":"biome check src","test:check":"tsc --noEmit -p tsconfig.test.json","prepublishOnly":"npm run build"},"version":"23.1.0","_npmUser":{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"},"homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"_npmVersion":"11.19.0","description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","directories":{},"maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"_nodeVersion":"26.7.0","dependencies":{"@mcp-abap-adt/lib":"^23.1.0","@mcp-abap-adt/server-runtime":"^23.1.0","@mcp-abap-adt/responsible-rules":"^23.1.0","@mcp-abap-adt/background-runs-memory":"^23.1.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"launcher":["dist/launcher.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"typescript":"*","@types/jest":"*","@types/node":"*","@types/express":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/http_23.1.0_1793694419865_0.725762779342723"}}},"time":{"created":"2026-10-21T04:03:50.899Z","modified":"2026-11-03T08:27:00.250Z","0.0.0-stage":"2026-10-21T04:03:50.899Z","19.0.0":"2026-10-21T04:05:28.196Z","19.1.0":"2026-10-21T10:17:04.133Z","19.2.0":"2026-10-21T20:39:41.951Z","20.0.0":"2026-10-22T16:58:50.425Z","20.1.0":"2026-10-23T05:19:30.560Z","21.0.0":"2026-10-30T13:26:41.506Z","22.0.0":"2026-10-31T18:55:58.224Z","22.0.1":"2026-10-31T20:48:26.889Z","23.0.0":"2026-11-02T07:44:24.500Z","23.0.1":"2026-11-02T13:25:11.883Z","23.0.2":"2026-11-02T17:38:15.716Z","23.1.0":"2026-11-03T08:26:59.946Z"},"bugs":{"url":"https://github.com/fr0ster/mcp-abap-adt/issues"},"author":{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"},"license":"AGPL-3.0-only","homepage":"https://github.com/fr0ster/mcp-abap-adt#readme","keywords":["abap","sap","adt","mcp","model-context-protocol","mcp-server","streamable-http"],"repository":{"url":"git+https://github.com/fr0ster/mcp-abap-adt.git","type":"git"},"description":"The Streamable HTTP transport of the MCP ABAP ADT server: an Express app serving the ADT tools of @mcp-abap-adt/lib over MCP Streamable HTTP, with DNS rebinding protection and TLS.","maintainers":[{"name":"fr0ster","email":"oleksij.kyslytsja@gmail.com"}],"readme":"# @mcp-abap-adt/http\n\nThe Streamable HTTP server of MCP ABAP ADT: the binary `mcp-abap-adt-http`, and\n`StreamableHttpServer`, which serves the ADT tools of\n[`@mcp-abap-adt/lib`](https://www.npmjs.com/package/@mcp-abap-adt/lib) over MCP Streamable HTTP on an\nExpress app, with DNS rebinding protection and optional TLS. Licensed AGPL-3.0-only.\n\n```bash\nnpm install -g @mcp-abap-adt/http\nmcp-abap-adt-http --port=3000 --system-type=onprem\n```\n\n**The binary fixes the tool set (19.0.0).** `mcp-abap-adt-http` serves readonly (with system and search),\nhigh, the debugger and background runs; the readonly\ntools alone are [`@mcp-abap-adt/http-ro`](https://www.npmjs.com/package/@mcp-abap-adt/http-ro) (`mcp-abap-adt-http-ro`). There is no\n`--exposition`: passing it, or a config file's `exposition`, stops the start with a sentence naming\nthe binary to install instead.\n\n**No leftover-session tools, no session files (19.0.0).** One server holds the sessions of many\nusers, so it writes no runtime session file and serves no leftover-session tool; those are the\nstdio binaries' (`mcp-abap-adt`, `mcp-abap-adt-ro`). Resuming a SAP session here is yours to do if you hold what it takes;\notherwise SAP ends it on its own timeout, which releases its locks: [MIGRATION-19.0](https://github.com/fr0ster/mcp-abap-adt/blob/main/docs/MIGRATION-19.0.md#stdio-leftover-sap-sessions-of-a-killed-process).\n\n**No low set (19.0.0).** `--exposition=…,low` stops the start with this sentence: *\"the low set is gone from mcp-abap-adt / -http / -sse; use mcp-abap-adt-compact (or -compact-http / -compact-sse)\"*. Its single-step operations are compact's — see [MIGRATION-19.0](https://github.com/fr0ster/mcp-abap-adt/blob/main/docs/MIGRATION-19.0.md#the-low-set-leaves-the-full-binaries).\n\n## Credentials: each request's headers, nothing else\n\nEvery request carries its own credentials, and the server takes them from nowhere else: no\ndestination, no service key, no session file, no login, no auth broker.\n\n| Header | |\n|---|---|\n| `x-sap-url` | the system's URL (required) |\n| `x-sap-client` | the client (optional) |\n| `x-sap-jwt-token` | a token you hold, presented as a Bearer token |\n| `x-sap-login` + `x-sap-password` | a user and password (basic) |\n\n- A request without `x-sap-url` and either a token or a user and password is answered `400`:\n  *this server takes credentials only from the request's headers: send x-sap-url with\n  x-sap-jwt-token, or with x-sap-login and x-sap-password*. `ping` answers without them.\n- A request carrying `x-mcp-destination` is answered `400`: *destinations are served only by\n  mcp-abap-adt (stdio); send x-sap-* headers*. Destinations — service keys, sessions, the browser\n  login — are [`@mcp-abap-adt/core`](https://www.npmjs.com/package/@mcp-abap-adt/core)'s, over stdio.\n- Each request builds its own credential and its own connection; nothing is stored, shared or\n  cached across requests. The one exception is held state (below): the connections it opened stay\n  with it until it ends.\n- The system kind follows `--system-type` / `SAP_SYSTEM_TYPE` (`cloud`, `onprem`, `legacy`) and is\n  required — no request header states it: it decides the tools offered and how the system's\n  `systeminformation` is read. Without it the binary does not start: exit `1` before anything\n  listens, on stderr `[MCP] The SAP system type is required — set --system-type, SAP_SYSTEM_TYPE (the environment) or system-type\n  (YAML) to onprem, cloud or legacy; the server did not start`. (An embedder's own host of the\n  exported server class reads `SAP_SYSTEM_TYPE` at each call: a call without it is refused\n  `system_type_required`, nothing sent.)\n\nPer request, beside the credential: `x-sap-responsible`, `x-sap-master-system`, `x-sap-language`,\nand the debugger's `x-sap-debug-terminal-id` / `x-sap-debug-ide-id` (then `SAP_RESPONSIBLE`,\n`SAP_MASTER_SYSTEM`, `SAP_DEBUG_TERMINAL_ID`, `SAP_DEBUG_IDE_ID` of the environment). With\n`x-sap-login`, the login is the responsible when none is stated.\n\nThe system is asked first, when the instance's connection is created (`systeminformation`, by\n`@mcp-abap-adt/responsible-rules`; each request's credential is its own destination): its user and system id win over\nthese headers. They count only where an on-premise system gives no information — the responsible\nif stated, else the login, else the call is refused `system_user_unknown`; on ABAP Cloud no\ninformation is an error (`cloud_without_systeminformation` for a `404`, else\n`system_lookup_failed`). See [MIGRATION-19.0](https://github.com/fr0ster/mcp-abap-adt/blob/main/docs/MIGRATION-19.0.md#every-transport-only-lock-and-unlock-are-sent-stateful-and-an-instances-calls-run-one-at-a-time).\n\n## Options\n\nAs before 19.0.0, under the same names: `--host` / `--http-host` / `MCP_HTTP_HOST`, `--port` /\n`--http-port` / `MCP_HTTP_PORT` (default `3000`), `--path` / `--http-path` (default\n`/mcp/stream/http`), `--http-json-response` / `MCP_HTTP_ENABLE_JSON_RESPONSE`,\n`--http-allowed-hosts` / `MCP_HTTP_ALLOWED_HOSTS`, `--http-allowed-origins` /\n`MCP_HTTP_ALLOWED_ORIGINS`, `--http-enable-dns-protection` / `MCP_HTTP_ENABLE_DNS_PROTECTION`,\n`--tls-cert` / `--tls-key` / `--tls-ca` (`MCP_TLS_*`), `--system-type`, `--state-idle-minutes` / `MCP_STATE_IDLE_MINUTES`, `--conf`, `--help`, `--version`;\nnew in 19.0.0, `--shutdown-timeout` / `MCP_SHUTDOWN_TIMEOUT` (see [Shutdown](#shutdown)).\n`mcp-abap-adt-http --help` lists them.\n\n## Held state, and the long session\n\nEvery request is an MCP session of its own, served by a new instance unless it names an instance\nthat holds state. A tool that holds state — a long session, a lock, a batch, a debug session —\nanswers a `state_handle`. **Send it as the `state_handle` argument** of every call that must reach\nthat state: every tool of this binary declares that optional argument (the debugger tools keep\ntheir own declaration, required where it is required). A client that sets request headers may\nsend it in the `x-mcp-state-handle` header instead; when both are sent, the header wins. Such a\ncall is routed to the instance that holds the state, one request at a time, and its own headers\ngive its credential. A tool call whose handle the pool does\nnot know — one that never existed, or whose state ended — is answered `state is not available`\nby the pool itself, the same answer whatever the handle was, and no instance is made and nothing\nlogs on for it — a JSON-RPC array holding a tool call too, one such answer per request in it with\nan `id` (an array whose tool call carries a `state_handle` argument is answered `400`); another request carrying such a handle (an `initialize`, a list) gets a new\ninstance, as a request without a handle does. The handle is a bearer secret: whoever holds it\nreaches the state, and the server does not identify the caller. Held state ends\nby its stop tool (a long session's: `SessionClose`), the idle bound (`--state-idle-minutes`, 30–35 791, default 30), or the server's\nstop. See\n[the debugger guide](https://github.com/fr0ster/mcp-abap-adt/blob/main/docs/user-guide/DEBUGGER.md).\n\n**The long session.** `SessionOpen` keeps an instance and its SAP connection for a run of calls\nand answers `{ \"state_handle\": \"…\" }`. Every call carrying that `state_handle` runs on that\ninstance, on its held SAP session: no new connection, no `systeminformation` lookup, no logoff\nbetween the calls. A call without it runs on a new instance, as before. Called with the handle of\nan instance that already holds state (a lock, a batch, a debug session), or of an open session,\n`SessionOpen` answers that same handle and keeps what the instance holds; called without a handle\nit opens a new instance with a handle of its own — each long session is its own instance.\n`SessionClose` with the handle answers `{ \"closed\": true, \"held\": { \"locks\": …, \"batch\": …,\n\"debug_session\": … } }` — what the instance held — and once that answer is written the instance\nleaves the pool and is closed: every SAP session it owns gets its logoff, which releases the locks\ntaken in it; an open batch and its recorded calls are dropped unsent; nothing is undone (the\nlogoff ends in SAP what the state held); the MCP server closes. From then on the handle answers\n`state is not available` at once, whether or not SAP has answered the logoffs yet; the close\nawaits each logoff's write and its answer with no timer of the server's, and the server's\nshutdown awaits a close still running. `SessionClose` without a handle, or with an unknown one,\nanswers `state is not available`. A session never closed ends at the idle bound — no call on it for\n`--state-idle-minutes`: its state ends, every SAP session of the instance is logged off, and the instance leaves the pool.\nThere is no list tool: the model keeps the handles it opened, and the handle is its only way back\nto its session. Both tools change nothing in the system, so `mcp-abap-adt-http-ro` serves them too;\nin batch mode they run at once and are never recorded — open leaves the batch open, close drops\nit. No stdio or SSE binary serves them: there the instance lives as long as the connection.\n\n**Locks (compact).** compact `HandlerLock` holds the lock as the pooled instance's state and answers its `state_handle`;\n`HandlerUpdate`, `HandlerDelete` of a class include and `HandlerUnlock` under that lock send it as\nthe `state_handle` argument (or in the `x-mcp-state-handle` header) and reach the SAP session that\nholds the lock — without it they reach another instance and are refused, sending nothing. A\nrequest with another credential (a renewed token, a new user and password) works on the held\nconnection too: the instance keeps its SAP session and the lock, and the new credential is put in\nforce for its next sends; what SAP answers to that credential reaches the caller as it came. The\nhold ends at the `UNLOCK`, or with the instance (`SessionClose` of a long session, the idle bound,\nthe server's stop), whose logoff releases the lock.\n\n**Batch mode.** `BatchBegin` (compact: `HandlerBatch` with `action: 'begin'`) holds state and\nanswers the instance's `state_handle`: send it as the `state_handle` argument (or in\n`x-mcp-state-handle`) on every call of the batch, `BatchEnd` and `BatchAnswers` included. A call\nwithout it reaches an instance where no batch is open. See\n[Batch Mode](https://github.com/fr0ster/mcp-abap-adt/blob/main/docs/user-guide/BATCH_MODE.md#over-streamable-http).\n\n## Every ADT session ends with a logoff\n\nAn instance logs off every ADT session it opened when it leaves the pool: a request's instance\nafter its request, when it holds nothing; a pooled instance when its state ends (its stop tool,\nthe idle bound); a long session's instance at its `SessionClose`, with no undo — the logoff ends\nwhat it held. An instance whose state undo fails is kept for a retry — it has not left, and its\nsessions stay open — until a later undo succeeds or the server shuts down, where its sessions are\nlogged off at once. (After the idle bound's stop a pooled instance's sessions are logged off even\nwhen the undo failed.) The logoff is what releases a lock a tool left. A client that drops its\nrequest closes nothing: the request's tool runs to its end, and its instance leaves the pool as\nabove — after its work when it holds nothing, at its state's end when it holds state.\n\n## Shutdown\n\nOn `SIGTERM` / `SIGINT` / `SIGHUP` / `SIGQUIT` (`SIGBREAK` on Windows), or a crash outside a\ntool (then exit `1`), the server stops taking requests (`503`, *the server is shutting down*;\na call already accepted whose body arrives later reaches no tool), stops listening, **logs off\nevery ADT session of every instance at once** — pooled instances and their held state's included;\nno state undo is sent, the logoff ends the state — and interrupts the running tools: **nothing\nwaits for a running tool**, and a write whose `UNLOCK` was still to come never sends it (the\nlogoff releases its lock). Each logoff is let finish — until SAP answered it or its connection\nfailed. It exits `0`. There is no deadline. A killed process (`SIGKILL`, out of memory) sends no\nlogoff: SAP keeps its sessions until its own timeout. A second signal, or\n`--shutdown-timeout=<seconds>` (no default), matters only while a logoff is still being written or\nanswered: exit `1` naming the requests still running. That forced close is the one end that does\nnot wait for SAP's answers, a deliberate exception: it exits once each logoff is written, so a\nsession whose logoff SAP had not received whole can stay until SAP's security-session timeout.\nThis server keeps no runtime session files, so nothing lists such a session\n(`ListLeftoverSessions` is stdio's, where such a session keeps its file for the next process).\n\n## Health\n\n`GET /mcp/health` answers `{ status: 'ok', uptime, version, transport: 'http' }` without\ncredentials.\n\n## Embedding\n\n`new StreamableHttpServer(handlersRegistry, options)` — the same options, and `app` to register\nthe routes on your own Express (or CAP) application instead of listening itself. `main({ toolSet,\nprogram, version, packageName })` is the binary's launcher (`@mcp-abap-adt/http/launcher`;\n`packageName`, the package a second copy of lib asks to reinstall, is optional on this path and\ndefaults to `@mcp-abap-adt/http`, as 19.1.0's `{ toolSet, program, version }` still compiles). An embedder that stops the\nserver itself calls `stop()`: admission stops, the listener closes, the pool's instances are\ndisposed (their state undone) and logged off. The binary's own shutdown does not wait: it logs\nevery session off at once (lib's `installTransportShutdown`, with `releaseConnections()` after the\nlogoffs).\n\n**Where the code lives (19.2.0).** The launcher and `StreamableHttpServer` live in\n[`@mcp-abap-adt/server-runtime`](https://www.npmjs.com/package/@mcp-abap-adt/server-runtime),\nwhich is installed with this package; this package holds the `mcp-abap-adt-http` binary and its\nversion. Its exports are unchanged, as re-exports: `@mcp-abap-adt/http` of\n`server-runtime/http/server` (its `StreamableHttpServer` answers http's version when constructed\nwithout one), `@mcp-abap-adt/http/launcher` of `server-runtime/http`. No other server package\ndepends on this one: `compact-http`, `http-ro` and `compact-http-ro` run the same launcher from\n`server-runtime`. The runtime also carries the stdio destination layer, so `@mcp-abap-adt/auth-broker`\nand `@mcp-abap-adt/auth-stores` are installed with this server; it never loads them.\n","readmeFilename":"README.md"}