{"_id":"@abluva/mcp-remote","_rev":"9-5d1e16c73b860f29ebd930ef37637f5e","name":"@abluva/mcp-remote","dist-tags":{"latest":"2.1.0"},"versions":{"0.1.39":{"name":"@abluva/mcp-remote","version":"0.1.39","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@0.1.39","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"411c8b0d00a5149aebde7a041a86d73616f66b68","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-0.1.39.tgz","fileCount":8,"integrity":"sha512-MUGKPSyxfwsphuZO8Osl0/VFK792tFEhczhO0+hv6cAnu3z1i0OR2AwTR/2+PJO34UK4V0Lcu1sOyjfEIBkIoQ==","signatures":[{"sig":"MEUCIQCsbiTM7qDh4qBuJE3lEZEHLmbDg+Se9d0txH4vhXMoFQIgCh31YeuHUTv/exI/zLa/tMEWJCenr+ri562vCcZI1g0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":724133},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"4a620a59d1b39c47d90b2a9e410514d27ea6a499","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth and reliable OAuth callback handling","directories":{},"_nodeVersion":"23.11.0","dependencies":{"open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","zod":"^4.0.0","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_0.1.39_1785494471275_0.05141346960978299","host":"s3://npm-registry-packages-npm-production"}},"0.1.41":{"name":"@abluva/mcp-remote","version":"0.1.41","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@0.1.41","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"031876c53948069e2027f195c6cab25714f284dc","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-0.1.41.tgz","fileCount":8,"integrity":"sha512-2BUWvOJY1U5jcW5KmxoG3+eOMBoDVFhZ5ExufCyjtgsRSxNwDhaAbMWC/6gXoSxEm6rhsoXhT3N5XdfZDuintw==","signatures":[{"sig":"MEUCIQDVnl7Ga1nJXxHJCyoxnv1DyuyN74JbSHyvNBbHRh9WVAIgQPj9OMRdn0TvFeEsnmTPzhgWqpBibztOeL8qqzumc90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563543},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"4a620a59d1b39c47d90b2a9e410514d27ea6a499","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth and reliable OAuth callback handling","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_0.1.41_1785745290508_0.12462560757455443","host":"s3://npm-registry-packages-npm-production"}},"0.1.42":{"name":"@abluva/mcp-remote","version":"0.1.42","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@0.1.42","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"702a69204fb04efbee194c94cfb1e5cdb261d8c2","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-0.1.42.tgz","fileCount":8,"integrity":"sha512-hxAPLWSUGYYpQluzbbbfNg77CQ8i7N+vJTqITp/dGa1OfyQxNKLOf6XZPeJ5Zw1pGlSzottfNRTLSptpCOeosg==","signatures":[{"sig":"MEUCIDKx0Mg7dyZbbXzWerIz4aagU0qGFSvTT8fG+lC3DUfIAiEAxNchb3eRpQocGserYD5EeL1hBmT0g0g0ZV4NTBcE57A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564316},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"4a620a59d1b39c47d90b2a9e410514d27ea6a499","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth and reliable OAuth callback handling","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_0.1.42_1785752976938_0.8059449876392537","host":"s3://npm-registry-packages-npm-production"}},"0.1.43":{"name":"@abluva/mcp-remote","version":"0.1.43","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@0.1.43","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"f40634b624a0d980f3f204b7acabf7857b134833","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-0.1.43.tgz","fileCount":8,"integrity":"sha512-+rZVEd8IWlE0JViRIrd6tRj54YY5G/iovzFZikeZ9mGIycMmuf4uSlD+An+TsKVyJFS0wTLvH9sulMKlB/QTAQ==","signatures":[{"sig":"MEUCIEOose08dUoIIhtCrQWw0dXaVRuF3HDh8FnzoQBsLUaVAiEAnsfHM9eZNKHgMJadAFLISivWg88GjTbhlBNADm6klPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":566725},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"4a620a59d1b39c47d90b2a9e410514d27ea6a499","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth and reliable OAuth callback handling","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_0.1.43_1785753915517_0.12981568073194016","host":"s3://npm-registry-packages-npm-production"}},"0.1.44":{"name":"@abluva/mcp-remote","version":"0.1.44","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@0.1.44","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"f42fc2d17607fad7a2897033d20bf38bf9432d80","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-0.1.44.tgz","fileCount":8,"integrity":"sha512-72V49hd1gs1wG2fFuTGfbAGs38GEFEPPKtC7aELzebM+GiZSoOxsD3m+7suJnwBmrZTcy6uRjEjOSwL9R3AH6w==","signatures":[{"sig":"MEUCIQC5ZpO6u9Dr+wrEJvZv3N9roViJFE25U3G4ensv2ZCsGAIgYLUH85IvezuB6WLG6PwBJTXydDWMne1JZHQsY7i/Gok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567118},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"2f9e6459963ce95cc61633a3c153e96d5143c376","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth and reliable OAuth callback handling","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_0.1.44_1785820733853_0.20321155126672985","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@abluva/mcp-remote","version":"2.0.0","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@2.0.0","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"2b5b2f0e5c784471d1c19769eefbc58b5c855ef4","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-2.0.0.tgz","fileCount":8,"integrity":"sha512-/wQ9Sjv+IRUrBrUHYtr8MGTHji4xQ8VYaaqwpHiex5maBo601+a3OA+8MvjE90Ka0zE8vaEKsRsvDvfUUR2MQg==","signatures":[{"sig":"MEUCIQCgJh5XHtOhCT/Mu75nIcL1WUmLtucPHPSEe8xg8vuj6QIgKUihrwvncEy6IkpP8ODmvqvvwRaFML5X5hOHxIMdj9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112907},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"d8aa10b5a05b32a78b1d6c17671b709474d6fa0d","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth, reliable OAuth callback handling, and MCP 2026-07-28 stateless support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_2.0.0_1786012394428_0.8161891549705842","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@abluva/mcp-remote","version":"2.0.1","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@2.0.1","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"c6bcc9bece3b9f12564a71d64dab352b3622c2e2","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-2.0.1.tgz","fileCount":8,"integrity":"sha512-h7Ykf9SNOdUPL6frSSO3RE68p51d/v3JvcFzxSIj4xbv9Chebqsk9DluFUzYzM8WM5ku7VQRE6PNYtbbSmU+/A==","signatures":[{"sig":"MEUCIHjuXFTp6ABXNSexFvRi9uaW4C8SXx1tzbvcx/2GQFB3AiEA21Yr1yzewBC4vLeXdgjzIpt2lXXM3bPXn4tbQDWt/j4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116531},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"3d98618cadaa555d73cfae2cabad29d0a8a6cad0","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth, reliable OAuth callback handling, and MCP 2026-07-28 stateless support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_2.0.1_1786963359619_0.34394600302570844","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@abluva/mcp-remote","version":"2.1.0","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","_id":"@abluva/mcp-remote@2.1.0","maintainers":[{"name":"abluva-research","email":"research@abluva.com"},{"name":"as0007z","email":"as0007z@abluva.com"}],"homepage":"https://github.com/abluva-research/mcp-remote#readme","bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"bin":{"mcp-remote":"dist/proxy.js","mcp-remote-client":"dist/client.js"},"dist":{"shasum":"e07ee17f207c44a5618933bd705f657c84ed8a8a","tarball":"https://registry.npmjs.org/@abluva/mcp-remote/-/mcp-remote-2.1.0.tgz","fileCount":8,"integrity":"sha512-ns8g2JmTWN8UjHX1F5j0v8WITbZfWp00r11KZph+4nXZwusn9DEYGBLv+8DKCrj4O4xe6ZRGknFJ7p43xtFjXA==","signatures":[{"sig":"MEUCIQClcae8HW00rPf4+Y1F0iqqg3eD3KiMcr9+O5Oe9MxwFgIgWNOkeNbq/EjRfksn8642FkPC+feJD/UHZqcYFSd1Nk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGDCkOXFURS8enUmH4ut5ULHstg/Cfb1NrGzYpO18B9bAiEAheIoMbJQEYnsZp49crd3J3IMmJej4cxUBSBxhjfYfMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136215},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/client.ts","src/proxy.ts"],"format":["esm"],"outDir":"dist","external":[]},"type":"module","gitHead":"9fdc572056ec3131cec8dbc3f4e173cab68f70bf","scripts":{"build":"tsup","check":"prettier --check . && tsc","prepack":"npm run build","lint-fix":"prettier --check . --write","test:unit":"vitest run","build:watch":"tsup --watch","test:unit:watch":"vitest"},"_npmUser":{"name":"as0007z","email":"as0007z@abluva.com"},"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth, reliable OAuth callback handling, and MCP 2026-07-28 stateless support","directories":{},"_nodeVersion":"23.11.0","dependencies":{"zod":"^4.0.0","open":"^10.1.0","undici":"^7.12.0","express":"^4.21.2","strict-url-sanitise":"^0.0.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","vitest":"^3.2.3","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-remote_2.1.0_1788776590964_0.7729985032095288","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-31T10:41:11.112Z","modified":"2026-09-07T11:14:23.321Z","0.1.39":"2026-07-31T10:41:11.430Z","0.1.41":"2026-08-03T08:21:30.653Z","0.1.42":"2026-08-03T10:29:37.078Z","0.1.43":"2026-08-03T10:45:15.657Z","0.1.44":"2026-08-04T05:18:53.988Z","2.0.0":"2026-08-06T10:33:14.563Z","2.0.1":"2026-08-17T10:42:39.775Z","2.1.0":"2026-09-07T10:23:11.042Z"},"bugs":{"url":"https://github.com/abluva-research/mcp-remote/issues"},"author":{"name":"Abluva Research","email":"research@abluva.com"},"license":"MIT","homepage":"https://github.com/abluva-research/mcp-remote#readme","keywords":["mcp","stdio","sse","remote","oauth","abluva"],"repository":{"url":"git+https://github.com/abluva-research/mcp-remote.git","type":"git"},"description":"MCP remote proxy with OAuth — Abluva fork with mid-session re-auth, reliable OAuth callback handling, and MCP 2026-07-28 stateless support","maintainers":[{"email":"ks0432m@abluva.com","name":"karthikha_0432"},{"email":"research@abluva.com","name":"abluva-research"},{"email":"as0007z@abluva.com","name":"as0007z"}],"readme":"# `@abluva/mcp-remote`\n\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13951/badge)](https://www.bestpractices.dev/projects/13951) ![CodeQL](https://github.com/abluva/mcp-remote/actions/workflows/codeql.yml/badge.svg)\n![License](https://img.shields.io/github/license/abluva/mcp-remote)\n![npm version](https://img.shields.io/npm/v/@abluva/mcp-remote)\n\n**Abluva-maintained fork** of [`mcp-remote`](https://github.com/geelen/mcp-remote) — a stdio proxy that connects MCP clients (Claude Desktop, Cursor, etc.) to **remote MCP servers with OAuth**.\n\nUse this package when upstream `mcp-remote` hangs on auth, drops mid-session re-login, or refuses OAuth callbacks on `localhost`.\n\n| | |\n|---|---|\n| **npm** | [`@abluva/mcp-remote`](https://www.npmjs.com/package/@abluva/mcp-remote) |\n| **GitHub** | [abluva-research/mcp-remote](https://github.com/abluva-research/mcp-remote) |\n| **Upstream base** | [geelen/mcp-remote](https://github.com/geelen/mcp-remote) **v0.1.38** |\n| **Also incorporates** | [jacopoc PR #213](https://github.com/geelen/mcp-remote/pull/213) (mid-session re-auth — still open upstream) |\n\n📄 **Full fork changelog, upstream issue/PR mapping, and version history:** [ABLUVA-FORK.md](./ABLUVA-FORK.md)\n\n---\n\n## Why Abluva maintains this fork\n\nUpstream `mcp-remote` is the de facto OAuth bridge for stdio-only MCP clients. Several **critical OAuth bugs remain open** on [geelen/mcp-remote](https://github.com/geelen/mcp-remote/issues) — especially mid-session token expiry, Claude Desktop hangs, and `localhost` callback connection refused.\n\n`@abluva/mcp-remote` merges:\n\n- **jacopoc’s unmerged re-auth branch** ([PR #213](https://github.com/geelen/mcp-remote/pull/213))\n- **Selected open upstream PRs** ([#297](https://github.com/geelen/mcp-remote/pull/297), [#290](https://github.com/geelen/mcp-remote/pull/290), [#302](https://github.com/geelen/mcp-remote/pull/302), [#262](https://github.com/geelen/mcp-remote/pull/262) partial)\n- **Abluva production fixes** for MCP gateway OAuth (callback server lifetime, auto ports, Hub logout re-auth)\n\n---\n\n## Quick start (Claude Desktop)\n\n```json\n{\n  \"mcpServers\": {\n    \"remote-example\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@abluva/mcp-remote@latest\",\n        \"https://your-mcp-gateway.example/mcp-connect/<catalog-id>\"\n      ]\n    }\n  }\n}\n```\n\n**Direct stateless server (MCP `2026-07-28`, bypass gateway):**\n\n```json\n{\n  \"mcpServers\": {\n    \"sql-sandbox-v2\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@abluva/mcp-remote@latest\",\n        \"--protocol\",\n        \"2026-07-28\",\n        \"--allow-http\",\n        \"http://127.0.0.1:8095/mcp/v2\"\n      ]\n    }\n  }\n}\n```\n\n### Protocol modes (`--protocol`)\n\n| Mode | Behavior |\n|------|----------|\n| `auto` (default) | Probe remote with `server/discover`; use `2026-07-28` if supported, else legacy |\n| `legacy` | Stateful Streamable HTTP (`initialize` + session) — use for Obot/gateway URLs |\n| `2026-07-28` | Stateless POST-only transport with `_meta` injection and local `initialize` shim for Claude |\n\n---\n\n- **`-y`** — required for Claude (non-interactive npx install).\n- **Callback port** — optional third argument; omitted by default (auto-selected per server URL since v0.1.40).\n- **After first install or upgrade:** `rm -rf ~/.mcp-auth` then restart Claude (Cmd+Q).\n\n---\n\n## What we fixed (summary)\n\n| Problem | Upstream refs | Fixed in |\n|---------|---------------|----------|\n| Claude **hangs** after OAuth / tool errors | [#286](https://github.com/geelen/mcp-remote/issues/286), [#293](https://github.com/geelen/mcp-remote/issues/293) | 0.1.39, 0.1.41 |\n| **`refresh_token is invalid`** at startup | [#181](https://github.com/geelen/mcp-remote/issues/181), [#91](https://github.com/geelen/mcp-remote/issues/91) | 0.1.39 |\n| **Fatal connect** after stale Obot OAuth (`401 after successful authentication`) | Abluva gateway / Hub logout | 2.0.1 |\n| Hub logout → **`localhost` connection refused** on re-auth | [#248](https://github.com/geelen/mcp-remote/issues/248), [#245](https://github.com/geelen/mcp-remote/issues/245) | 0.1.39, 0.1.42 |\n| **Port clash** with multiple MCP servers (no explicit port) | [#306](https://github.com/geelen/mcp-remote/issues/306), [#262](https://github.com/geelen/mcp-remote/pull/262) | 0.1.40, 0.1.42 |\n| Silent token expiry → browser re-auth loops | [#273](https://github.com/geelen/mcp-remote/issues/273) | 0.1.41 ([#290](https://github.com/geelen/mcp-remote/pull/290)) |\n| Token exchange to wrong URL (proxy mode) | [#270](https://github.com/geelen/mcp-remote/issues/270) | 0.1.41 ([#302](https://github.com/geelen/mcp-remote/pull/302)) |\n| **Concurrent OAuth** when Claude spawns duplicate processes | [#17](https://github.com/abluva/mcp-remote/issues/17), [#245](https://github.com/geelen/mcp-remote/issues/245) | 2.1.0 |\n| **Stale dynamic client registration** after port / callback changes | [#253](https://github.com/geelen/mcp-remote/issues/253) | 2.1.0 |\n| **SSE reconnect** drops session / headers after network blip | — | 2.1.0 |\n| **Tool call failures** after MCP 2.0 (method metadata / transforms lost) | — | 2.1.0 |\n| **Agent keys logged** in custom header debug output | — | 2.1.0 |\n\nSee [ABLUVA-FORK.md](./ABLUVA-FORK.md) for the complete table and version notes.\n\n---\n\n## Branches & merges\n\n```\ngeelen/mcp-remote @ v0.1.38 (main)\n        │\n        ├── jacopoc/implement-reauth-after-auth-error-on-send  →  mid-session re-auth (#213)\n        │\n        └── abluva-research/mcp-remote (main)\n                ├── v0.1.39  OAuth re-auth + eager callback server\n                ├── v0.1.40  Auto callback port / EADDRINUSE recovery\n                ├── v0.1.41  #297, #290, #302\n                ├── v0.1.42  Stale registration invalidation + port sync\n                ├── v2.0.0   MCP 2026-07-28 stateless transport\n                ├── v2.0.1   Connect-time stale OAuth recovery\n                └── v2.1.0   OAuth coordination (#17), SSE reconnect, MCP metadata fixes\n```\n\n---\n\n## Not yet included\n\n- **[PR #272](https://github.com/geelen/mcp-remote/pull/272)** — respond to `initialize` immediately while OAuth runs in background (Claude 60s timeout). Requires larger proxy lifecycle change; tracked for a future release.\n\n---\n\n## Local build\n\n```bash\ngit clone https://github.com/abluva-research/mcp-remote.git\ncd mcp-remote\nnpm install\nnpm run build\nnode dist/proxy.js https://your-gateway.example/mcp-connect/<id>\n```\n\n---\n\n## Upstream documentation\n\nThe sections below are inherited from upstream `mcp-remote` (usage, headers, transport strategies, etc.). For Abluva-specific OAuth behaviour, prefer [ABLUVA-FORK.md](./ABLUVA-FORK.md).\n\n---\n\n# `mcp-remote` (upstream)\n\nConnect an MCP Client that only supports local (stdio) servers to a Remote MCP Server, with auth support:\n\n**Note: this is a working proof-of-concept** but should be considered **experimental**.\n\n## Why is this necessary?\n\nSo far, the majority of MCP servers in the wild are installed locally, using the stdio transport. This has some benefits: both the client and the server can implicitly trust each other as the user has granted them both permission to run. Adding secrets like API keys can be done using environment variables and never leave your machine. And building on `npx` and `uvx` has allowed users to avoid explicit install steps, too.\n\nBut there's a reason most software that _could_ be moved to the web _did_ get moved to the web: it's so much easier to find and fix bugs & iterate on new features when you can push updates to all your users with a single deploy.\n\nWith the latest MCP [Authorization specification](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization), we now have a secure way of sharing our MCP servers with the world _without_ running code on user's laptops. Or at least, you would, if all the popular MCP _clients_ supported it yet. Most are stdio-only, and those that _do_ support HTTP+SSE don't yet support the OAuth flows required.\n\nThat's where `mcp-remote` comes in. As soon as your chosen MCP client supports remote, authorized servers, you can remove it. Until that time, drop in this one liner and dress for the MCP clients you want!\n\n## Usage\n\nAll the most popular MCP clients (Claude Desktop, Cursor & Windsurf) use the following config format:\n\n```json\n{\n  \"mcpServers\": {\n    \"remote-example\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\"\n      ]\n    }\n  }\n}\n```\n\n* If `npx` is producing errors, consider adding `-y` as the first argument to auto-accept the installation of the `@abluva/mcp-remote` package.\n\n```json\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\"\n      ]\n```\n\n* To force `npx` to always check for an updated version, add the `@latest` flag:\n\n```json\n      \"args\": [\n        \"-y\",\n        \"@abluva/mcp-remote@latest\",\n        \"https://remote.mcp.server/sse\"\n      ]\n```\n\n* To change which port `@abluva/mcp-remote` listens for an OAuth redirect (by default auto-selected per server URL since v0.1.40), add an additional argument after the server URL. If the port is unavailable, an open port will be chosen at random.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"9696\"\n      ]\n```\n\n* To change which host `@abluva/mcp-remote` registers as the OAuth callback URL (by default `localhost`), add the `--host` flag.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"--host\",\n        \"127.0.0.1\"\n      ]\n```\n\n* To allow HTTP connections in trusted private networks, add the `--allow-http` flag. Note: This should only be used in secure private networks where traffic cannot be intercepted.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"http://internal-service.vpc/sse\",\n        \"--allow-http\"\n      ]\n```\n\n* To enable detailed debugging logs, add the `--debug` flag. This will write verbose logs to `~/.mcp-auth/{server_hash}_debug.log` with timestamps and detailed information about the auth process, connections, and token refreshing.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"--debug\"\n      ]\n```\n\n* To suppress default logs, add the `--silent` flag. This will prevent logs from being emitted, except in the case where `--debug` is also passed.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"--silent\"\n      ]\n```\n\n* To enable an outbound HTTP(S) proxy for mcp-remote, add the `--enable-proxy` flag. When enabled, mcp-remote will use the proxy settings from common environment variables (for example `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`).\n\n```json\n    \"args\": [\n      \"@abluva/mcp-remote\",\n      \"https://remote.mcp.server/sse\",\n      \"--enable-proxy\"\n    ],\n    \"env\": {\n      \"HTTPS_PROXY\": \"http://127.0.0.1:3128\",\n      \"NO_PROXY\": \"localhost,127.0.0.1\"\n    }\n```\n\n* To ignore specific tools from the remote server, add the `--ignore-tool` flag. This will filter out tools matching the specified patterns from both `tools/list` responses and block `tools/call` requests. Supports wildcard patterns with `*`.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"--ignore-tool\",\n        \"delete*\",\n        \"--ignore-tool\",\n        \"remove*\"\n      ]\n```\n\nYou can specify multiple `--ignore-tool` flags to ignore different patterns. Examples:\n- `delete*` - ignores all tools starting with \"delete\" (e.g., `deleteTask`, `deleteUser`)\n- `*account` - ignores all tools ending with \"account\" (e.g., `getAccount`, `updateAccount`)\n- `exactTool` - ignores only the tool named exactly \"exactTool\"\n\n* To change the timeout for the OAuth callback (by default `30` seconds), add the `--auth-timeout` flag with a value in seconds. This is useful if the authentication process on the server side takes a long time.\n\n```json\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\",\n        \"--auth-timeout\",\n        \"60\"\n      ]\n```\n\n### Transport Strategies\n\nMCP Remote supports different transport strategies when connecting to an MCP server. This allows you to control whether it uses Server-Sent Events (SSE) or HTTP transport, and in what order it tries them.\n\nSpecify the transport strategy with the `--transport` flag:\n\n```bash\nnpx @abluva/mcp-remote https://example.remote/server --transport sse-only\n```\n\n**Available Strategies:**\n\n- `http-first` (default): Tries HTTP transport first, falls back to SSE if HTTP fails with a 404 error\n- `sse-first`: Tries SSE transport first, falls back to HTTP if SSE fails with a 405 error\n- `http-only`: Only uses HTTP transport, fails if the server doesn't support it\n- `sse-only`: Only uses SSE transport, fails if the server doesn't support it\n\n### Static OAuth Client Metadata\n\nMCP Remote supports providing static OAuth client metadata instead of using the mcp-remote defaults.\nThis is useful when connecting to OAuth servers that expect specific client/software IDs or scopes.\n\nProvide the client metadata as a JSON string or as a `@` prefixed filepath with the `--static-oauth-client-metadata` flag:\n\n```bash\nnpx @abluva/mcp-remote https://example.remote/server --static-oauth-client-metadata '{ \"scope\": \"space separated scopes\" }'\n# uses node readfile, so you probably want to use absolute paths if you're not sure what the cwd is\nnpx @abluva/mcp-remote https://example.remote/server --static-oauth-client-metadata '@/Users/username/Library/Application Support/Claude/oauth_client_metadata.json'\n```\n\n### Static OAuth Client Information\n\nPer the [spec](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization#2-4-dynamic-client-registration),\nservers are encouraged but not required to support [OAuth dynamic client registration](https://datatracker.ietf.org/doc/html/rfc7591).\n\nFor these servers, MCP Remote supports providing static OAuth client information instead.\nThis is useful when connecting to OAuth servers that require pre-registered clients.\n\nProvide the client metadata as a JSON string or as a `@` prefixed filepath with the `--static-oauth-client-info` flag:\n\n```bash\nexport MCP_REMOTE_CLIENT_ID=xxx\nexport MCP_REMOTE_CLIENT_SECRET=yyy\nnpx @abluva/mcp-remote https://example.remote/server --static-oauth-client-info \"{ \\\"client_id\\\": \\\"$MCP_REMOTE_CLIENT_ID\\\", \\\"client_secret\\\": \\\"$MCP_REMOTE_CLIENT_SECRET\\\" }\"\n# uses node readfile, so you probably want to use absolute paths if you're not sure what the cwd is\nnpx @abluva/mcp-remote https://example.remote/server --static-oauth-client-info '@/Users/username/Library/Application Support/Claude/oauth_client_info.json'\n```\n\n### Claude Desktop\n\n[Official Docs](https://modelcontextprotocol.io/quickstart/user)\n\nIn order to add an MCP server to Claude Desktop you need to edit the configuration file located at:\n\n* macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n* Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\nIf it does not exist yet, [you may need to enable it under Settings > Developer](https://modelcontextprotocol.io/quickstart/user#2-add-the-filesystem-mcp-server).\n\nRestart Claude Desktop to pick up the changes in the configuration file.\nUpon restarting, you should see a hammer icon in the bottom right corner\nof the input box.\n\n### Cursor\n\n[Official Docs](https://docs.cursor.com/context/model-context-protocol). The configuration file is located at `~/.cursor/mcp.json`.\n\nAs of version `0.48.0`, Cursor supports unauthed SSE servers directly. If your MCP server is using the official MCP OAuth authorization protocol, you still need to add a **\"command\"** server and call `@abluva/mcp-remote`.\n\n### Windsurf\n\n[Official Docs](https://docs.codeium.com/windsurf/mcp). The configuration file is located at `~/.codeium/windsurf/mcp_config.json`.\n\n## Building Remote MCP Servers\n\nFor instructions on building & deploying remote MCP servers, including acting as a valid OAuth client, see the following resources:\n\n* https://developers.cloudflare.com/agents/guides/remote-mcp-server/\n\nIn particular, see:\n\n* https://github.com/cloudflare/workers-oauth-provider for defining an MCP-comlpiant OAuth server in Cloudflare Workers\n* https://github.com/cloudflare/agents/tree/main/examples/mcp for defining an `McpAgent` using the [`agents`](https://npmjs.com/package/agents) framework.\n\nFor more information about testing these servers, see also:\n\n* https://developers.cloudflare.com/agents/guides/test-remote-mcp-server/\n\nKnow of more resources you'd like to share? Please add them to this Readme and send a PR!\n\n## Troubleshooting\n\n### Clear your `~/.mcp-auth` directory\n\n`@abluva/mcp-remote` stores all the credential information inside `~/.mcp-auth` (or wherever your `MCP_REMOTE_CONFIG_DIR` points to). If you're having persistent issues, try running:\n\n```sh\nrm -rf ~/.mcp-auth\n```\n\nThen restarting your MCP client.\n\n### Check your Node version\n\nMake sure that the version of Node you have installed is [18 or\nhigher](https://modelcontextprotocol.io/quickstart/server). Claude\nDesktop will use your system version of Node, even if you have a newer\nversion installed elsewhere.\n\n### Restart Claude\n\nWhen modifying `claude_desktop_config.json` it can helpful to completely restart Claude\n\n### VPN Certs\n\nYou may run into issues if you are behind a VPN, you can try setting the `NODE_EXTRA_CA_CERTS`\nenvironment variable to point to the CA certificate file. If using `claude_desktop_config.json`,\nthis might look like:\n\n```json\n{\n \"mcpServers\": {\n    \"remote-example\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"@abluva/mcp-remote\",\n        \"https://remote.mcp.server/sse\"\n      ],\n      \"env\": {\n        \"NODE_EXTRA_CA_CERTS\": \"{your CA certificate file path}.pem\"\n      }\n    }\n  }\n}\n```\n\n### Check the logs\n\n* [Follow Claude Desktop logs in real-time](https://modelcontextprotocol.io/docs/tools/debugging#debugging-in-claude-desktop)\n* MacOS / Linux:<br/>`tail -n 20 -F ~/Library/Logs/Claude/mcp*.log`\n* For bash on WSL:<br/>`tail -n 20 -f \"C:\\Users\\YourUsername\\AppData\\Local\\Claude\\Logs\\mcp.log\"`\n* Powershell: <br/>`Get-Content \"C:\\Users\\YourUsername\\AppData\\Local\\Claude\\Logs\\mcp.log\" -Wait -Tail 20`\n\n## Debugging\n\n### Debug Logs\n\nFor troubleshooting complex issues, especially with token refreshing or authentication problems, use the `--debug` flag:\n\n```json\n\"args\": [\n  \"@abluva/mcp-remote\",\n  \"https://remote.mcp.server/sse\",\n  \"--debug\"\n]\n```\n\nThis creates detailed logs in `~/.mcp-auth/{server_hash}_debug.log` with timestamps and complete information about every step of the connection and authentication process. When you find issues with token refreshing, laptop sleep/resume issues, or auth problems, provide these logs when seeking support.\n\n### Authentication Errors\n\nIf you encounter the following error, returned by the `/callback` URL:\n\n```\nAuthentication Error\nToken exchange failed: HTTP 400\n```\n\nYou can run `rm -rf ~/.mcp-auth` to clear any locally stored state and tokens.\n\n### \"Client\" mode\n\nRun the following on the command line (not from an MCP server):\n\n```shell\nnpx -p @abluva/mcp-remote@latest mcp-remote-client https://remote.mcp.server/sse\n```\n\nThis will run through the entire authorization flow and attempt to list the tools & resources at the remote URL. Try this after running `rm -rf ~/.mcp-auth` to see if stale credentials are your problem, otherwise hopefully the issue will be more obvious in these logs than those in your MCP client.\n","readmeFilename":"README.md"}