@apideck/docs-mcp
Version:
MCP server that lets agents search and retrieve your documentation at query time instead of relying on stale training data.
61 lines • 2.31 kB
JavaScript
// SPDX-License-Identifier: MIT
import { getRequestListener } from '@hono/node-server';
import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/server';
/**
* Library-owned Node bridge to the supported SDK Web Standard transport.
* Protocol, limits, sessions and SSE remain SDK-owned; Node conversion and
* streamed writes remain owned by the explicitly declared patched Hono adapter.
* Mirrors the SDK Node bridge's delegation contract without importing its
* vulnerable transitive adapter. See docs/http-transport-security.md.
*/
export class NodeStreamableHTTPServerTransport {
web;
constructor(options = {}) {
this.web = new WebStandardStreamableHTTPServerTransport(options);
}
get sessionId() { return this.web.sessionId; }
get onclose() { return this.web.onclose; }
set onclose(callback) {
if (callback === undefined)
delete this.web.onclose;
else
this.web.onclose = callback;
}
get onerror() { return this.web.onerror; }
set onerror(callback) {
if (callback === undefined)
delete this.web.onerror;
else
this.web.onerror = callback;
}
get onmessage() { return this.web.onmessage; }
set onmessage(callback) {
if (callback === undefined)
delete this.web.onmessage;
else
this.web.onmessage = callback;
}
start() { return this.web.start(); }
close() { return this.web.close(); }
send(...args) {
return this.web.send(...args);
}
setSupportedProtocolVersions(versions) {
this.web.setSupportedProtocolVersions(versions);
}
setScopeChallengeResolver(...args) {
this.web.setScopeChallengeResolver(...args);
}
closeSSEStream(...args) {
this.web.closeSSEStream(...args);
}
closeStandaloneSSEStream() { this.web.closeStandaloneSSEStream(); }
async handleRequest(req, res, parsedBody) {
const authInfo = req.auth;
await getRequestListener((request) => this.web.handleRequest(request, {
...(authInfo !== undefined ? { authInfo } : {}),
...(parsedBody !== undefined ? { parsedBody } : {}),
}), { overrideGlobalObjects: false })(req, res);
}
}
//# sourceMappingURL=node-http.js.map