Compare commits

..

No commits in common. "dev/custom_baseUrl" and "main" have entirely different histories.

30 changed files with 72 additions and 115 deletions

View File

@ -1,28 +0,0 @@
{
"mcpServers": {
"filesystem": {
"name": "filesystem",
"type": "stdio",
"command": "npx",
"args": [
"@modelcontextprotocol/server-filesystem",
"/Users/cesarmendivil/WebstormProjects"
]
},
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp@latest"],
"env": {
"YTDLP_COOKIES_FROM_BROWSER": "chrome"
}
},
"latexpdf-mcp":{
"command": "latexpdf-mcp",
"env": {
"LATEXPDF_OUTPUT_DIR": "/Users/cesarmendivil/Documents/Nextream/TubeScript-API"
}
}
}
}

View File

@ -4,7 +4,6 @@ export interface ConfigToStreamableHttpArgs {
configPath: string;
port: number;
host: string;
baseUrl?: string;
streamableHttpPath: string;
logger: Logger;
corsOrigin: CorsOptions['origin'];

View File

@ -1 +1 @@
{"version":3,"file":"configToStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/configToStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAQ7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAaD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,iBAkX5E"}
{"version":3,"file":"configToStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/configToStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAQ7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAaD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,iBA6W5E"}

View File

@ -14,15 +14,12 @@ const setResponseHeaders = ({ res, headers, }) => Object.entries(headers).forEac
res.setHeader(key, value);
});
export async function configToStreamableHttp(args) {
const { configPath, port, host, baseUrl, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, stateless = false, sessionTimeout, } = args;
const { configPath, port, host, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, stateless = false, sessionTimeout, } = args;
logger.info(` - config: ${configPath}`);
logger.info(` - Headers: ${Object.keys(headers).length ? JSON.stringify(headers) : '(none)'}`);
logger.info(` - host: ${host}`);
logger.info(` - port: ${port}`);
logger.info(` - streamableHttpPath: ${streamableHttpPath}`);
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`);
}
logger.info(` - stateless: ${stateless}`);
logger.info(` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`);
logger.info(` - Health endpoints: ${healthEndpoints.length ? healthEndpoints.join(', ') : '(none)'}`);
@ -280,11 +277,9 @@ export async function configToStreamableHttp(args) {
app.get(streamableHttpPath, handleSessionRequest);
app.delete(streamableHttpPath, handleSessionRequest);
}
const hostForPrint = host === '0.0.0.0' ? 'localhost' : host;
const endpointUrl = baseUrl ? `${baseUrl}${streamableHttpPath}` : `http://${hostForPrint}:${port}${streamableHttpPath}`;
app.listen(port, host, () => {
logger.info(`Listening on ${host}:${port}`);
logger.info(`StreamableHttp endpoint: ${endpointUrl}`);
logger.info(`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`);
logger.info(`Mode: ${stateless ? 'stateless' : 'stateful'}`);
});
logger.info('Config-to-StreamableHttp gateway ready');

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,6 @@ export interface StdioToStreamableHttpArgs {
stdioCmd: string;
port: number;
host: string;
baseUrl?: string;
streamableHttpPath: string;
logger: Logger;
corsOrigin: CorsOptions['origin'];

View File

@ -1 +1 @@
{"version":3,"file":"stdioToStatefulStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/stdioToStatefulStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAK7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAQpC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAaD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,yBAAyB,iBAmPhC"}
{"version":3,"file":"stdioToStatefulStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/stdioToStatefulStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAK7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAQpC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAaD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,yBAAyB,iBA6OhC"}

View File

@ -13,14 +13,11 @@ const setResponseHeaders = ({ res, headers, }) => Object.entries(headers).forEac
res.setHeader(key, value);
});
export async function stdioToStatefulStreamableHttp(args) {
const { stdioCmd, port, host, baseUrl, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, sessionTimeout, } = args;
const { stdioCmd, port, host, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, sessionTimeout, } = args;
logger.info(` - Headers: ${Object(headers).length ? JSON.stringify(headers) : '(none)'}`);
logger.info(` - port: ${port}`);
logger.info(` - stdio: ${stdioCmd}`);
logger.info(` - streamableHttpPath: ${streamableHttpPath}`);
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`);
}
logger.info(` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`);
logger.info(` - Health endpoints: ${healthEndpoints.length ? healthEndpoints.join(', ') : '(none)'}`);
logger.info(` - Session timeout: ${sessionTimeout ? `${sessionTimeout}ms` : 'disabled'}`);
@ -185,9 +182,8 @@ export async function stdioToStatefulStreamableHttp(args) {
// Handle DELETE requests for session termination
app.delete(streamableHttpPath, handleSessionRequest);
app.listen(port, host, () => {
const publicHost = baseUrl ?? (host === '0.0.0.0' ? 'localhost' : host);
logger.info(`Listening on ${host}:${port}`);
logger.info(`StreamableHttp endpoint: http://${publicHost}:${port}${streamableHttpPath}`);
logger.info(`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`);
});
}
//# sourceMappingURL=stdioToStatefulStreamableHttp.js.map

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,6 @@ export interface StdioToStreamableHttpArgs {
stdioCmd: string;
port: number;
host: string;
baseUrl?: string;
streamableHttpPath: string;
logger: Logger;
corsOrigin: CorsOptions['origin'];

View File

@ -1 +1 @@
{"version":3,"file":"stdioToStatelessStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/stdioToStatelessStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAK7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKpC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAaD,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,yBAAyB,iBAqKhC"}
{"version":3,"file":"stdioToStatelessStreamableHttp.d.ts","sourceRoot":"","sources":["../../src/gateways/stdioToStatelessStreamableHttp.ts"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAK7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKpC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAaD,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,yBAAyB,iBA8JhC"}

View File

@ -10,15 +10,12 @@ const setResponseHeaders = ({ res, headers, }) => Object.entries(headers).forEac
res.setHeader(key, value);
});
export async function stdioToStatelessStreamableHttp(args) {
const { stdioCmd, port, host, baseUrl, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, } = args;
const { stdioCmd, port, host, streamableHttpPath, logger, corsOrigin, healthEndpoints, headers, } = args;
logger.info(` - Headers: ${Object(headers).length ? JSON.stringify(headers) : '(none)'}`);
logger.info(` - host: ${host}`);
logger.info(` - port: ${port}`);
logger.info(` - stdio: ${stdioCmd}`);
logger.info(` - streamableHttpPath: ${streamableHttpPath}`);
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`);
}
logger.info(` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`);
logger.info(` - Health endpoints: ${healthEndpoints.length ? healthEndpoints.join(', ') : '(none)'}`);
onSignals({ logger });
@ -127,10 +124,9 @@ export async function stdioToStatelessStreamableHttp(args) {
id: null,
}));
});
const publicHost = baseUrl ?? (host === '0.0.0.0' ? 'localhost' : host);
app.listen(port, host, () => {
logger.info(`Listening on ${host}:${port}`);
logger.info(`StreamableHttp endpoint: http://${publicHost}:${port}${streamableHttpPath}`);
logger.info(`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`);
});
}
//# sourceMappingURL=stdioToStatelessStreamableHttp.js.map

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"streamableHttpToSse.d.ts","sourceRoot":"","sources":["../../src/gateways/streamableHttpToSse.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAc7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAuDD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,iBAgRtE"}
{"version":3,"file":"streamableHttpToSse.d.ts","sourceRoot":"","sources":["../../src/gateways/streamableHttpToSse.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAA;AAc7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAuDD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,iBA+QtE"}

View File

@ -112,10 +112,8 @@ export async function streamableHttpToSse(args) {
const originalRequest = streamableHttpClient.request;
streamableHttpClient.request = async function (requestMessage, ...restArgs) {
if (InitializeRequestSchema.safeParse(requestMessage).success &&
message.params?.protocolVersion) {
// requestMessage may have a loose type, cast to any to safely set protocolVersion
;
requestMessage.params = requestMessage.params ?? {};
message.params?.protocolVersion &&
requestMessage.params?.protocolVersion) {
requestMessage.params.protocolVersion =
message.params.protocolVersion;
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"streamableHttpToStdio.d.ts","sourceRoot":"","sources":["../../src/gateways/streamableHttpToStdio.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAwCD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,iBAyI1E"}
{"version":3,"file":"streamableHttpToStdio.d.ts","sourceRoot":"","sources":["../../src/gateways/streamableHttpToStdio.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAwCD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,iBAuI1E"}

View File

@ -76,9 +76,6 @@ export async function streamableHttpToStdio(args) {
.success &&
message.params?.protocolVersion) {
// respect the protocol version from the stdio client's init request
;
possibleInitRequestMessage.params =
possibleInitRequestMessage.params ?? {};
possibleInitRequestMessage.params.protocolVersion =
message.params.protocolVersion;
}

View File

@ -1 +1 @@
{"version":3,"file":"streamableHttpToStdio.js","sourceRoot":"","sources":["../../src/gateways/streamableHttpToStdio.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"streamableHttpToStdio.js","sourceRoot":"","sources":["../../src/gateways/streamableHttpToStdio.ts"],"names":[],"mappings":"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"}

3
dist/index.js vendored
View File

@ -232,7 +232,6 @@ async function main() {
stdioCmd: argv.stdio,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),
@ -250,7 +249,6 @@ async function main() {
stdioCmd: argv.stdio,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),
@ -395,7 +393,6 @@ async function main() {
configPath: argv.config,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

12
dist/lib/config.d.ts vendored
View File

@ -9,17 +9,17 @@ export declare const McpServerConfigSchema: z.ZodObject<{
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;
}, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;
@ -35,17 +35,17 @@ export declare const ConfigSchema: z.ZodObject<{
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;
}, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;
@ -53,9 +53,9 @@ export declare const ConfigSchema: z.ZodObject<{
}, "strip", z.ZodTypeAny, {
mcpServers?: Record<string, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;
@ -63,9 +63,9 @@ export declare const ConfigSchema: z.ZodObject<{
}, {
mcpServers?: Record<string, {
headers?: Record<string, string>;
url?: string;
name?: string;
type?: "stdio" | "sse" | "streamable-http";
url?: string;
command?: string;
args?: string[];
env?: Record<string, string>;

37
mcpconfig-example.json Normal file
View File

@ -0,0 +1,37 @@
{
"mcpServers": {
"filesystem": {
"name": "filesystem",
"type": "stdio",
"command": "npx",
"args": [
"@modelcontextprotocol/server-filesystem",
"/tmp"
]
},
"brave_search": {
"name": "brave_search",
"type": "stdio",
"command": "npx",
"args": [
"@modelcontextprotocol/server-brave-search"
]
},
"modern_remote_server": {
"name": "modern_remote_server",
"type": "stream",
"url": "http://localhost:8080/mcp"
},
"legacy_remote_server": {
"name": "legacy_remote_server",
"type": "http",
"url": "http://localhost:9090/sse"
},
"hub": {
"url": "https://mcp.xyz.com/sse",
"headers": {
"X-API-KEY": "XXXXXX"
}
}
}
}

View File

@ -20,8 +20,7 @@
},
"scripts": {
"build": "tsc",
"start": "node dist/index.js",
"startmcp": "node dist/index.js --config config.json --outputTransport streamableHttp --baseUrl http://0.0.0.0:3006 --host 0.0.0.0 --streamableHttpPath /mcp"
"start": "node dist/index.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.15.1",

View File

@ -20,7 +20,6 @@ export interface ConfigToStreamableHttpArgs {
configPath: string
port: number
host: string
baseUrl?: string
streamableHttpPath: string
logger: Logger
corsOrigin: CorsOptions['origin']
@ -46,7 +45,6 @@ export async function configToStreamableHttp(args: ConfigToStreamableHttpArgs) {
configPath,
port,
host,
baseUrl,
streamableHttpPath,
logger,
corsOrigin,
@ -63,9 +61,6 @@ export async function configToStreamableHttp(args: ConfigToStreamableHttpArgs) {
logger.info(` - host: ${host}`)
logger.info(` - port: ${port}`)
logger.info(` - streamableHttpPath: ${streamableHttpPath}`)
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`)
}
logger.info(` - stateless: ${stateless}`)
logger.info(
` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`,
@ -401,12 +396,11 @@ export async function configToStreamableHttp(args: ConfigToStreamableHttpArgs) {
app.delete(streamableHttpPath, handleSessionRequest)
}
const hostForPrint = host === '0.0.0.0' ? 'localhost' : host
const endpointUrl = baseUrl ? `${baseUrl}${streamableHttpPath}` : `http://${hostForPrint}:${port}${streamableHttpPath}`
app.listen(port, host, () => {
logger.info(`Listening on ${host}:${port}`)
logger.info(`StreamableHttp endpoint: ${endpointUrl}`)
logger.info(
`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`,
)
logger.info(`Mode: ${stateless ? 'stateless' : 'stateful'}`)
})

View File

@ -16,7 +16,6 @@ export interface StdioToStreamableHttpArgs {
stdioCmd: string
port: number
host: string
baseUrl?: string
streamableHttpPath: string
logger: Logger
corsOrigin: CorsOptions['origin']
@ -43,7 +42,6 @@ export async function stdioToStatefulStreamableHttp(
stdioCmd,
port,
host,
baseUrl,
streamableHttpPath,
logger,
corsOrigin,
@ -59,10 +57,6 @@ export async function stdioToStatefulStreamableHttp(
logger.info(` - stdio: ${stdioCmd}`)
logger.info(` - streamableHttpPath: ${streamableHttpPath}`)
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`)
}
logger.info(
` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`,
)
@ -274,10 +268,9 @@ export async function stdioToStatefulStreamableHttp(
app.delete(streamableHttpPath, handleSessionRequest)
app.listen(port, host, () => {
const publicHost = baseUrl ?? (host === '0.0.0.0' ? 'localhost' : host)
logger.info(`Listening on ${host}:${port}`)
logger.info(
`StreamableHttp endpoint: http://${publicHost}:${port}${streamableHttpPath}`,
`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`,
)
})
}

View File

@ -13,7 +13,6 @@ export interface StdioToStreamableHttpArgs {
stdioCmd: string
port: number
host: string
baseUrl?: string
streamableHttpPath: string
logger: Logger
corsOrigin: CorsOptions['origin']
@ -39,7 +38,6 @@ export async function stdioToStatelessStreamableHttp(
stdioCmd,
port,
host,
baseUrl,
streamableHttpPath,
logger,
corsOrigin,
@ -55,10 +53,6 @@ export async function stdioToStatelessStreamableHttp(
logger.info(` - stdio: ${stdioCmd}`)
logger.info(` - streamableHttpPath: ${streamableHttpPath}`)
if (baseUrl) {
logger.info(` - baseUrl: ${baseUrl}`)
}
logger.info(
` - CORS: ${corsOrigin ? `enabled (${serializeCorsOrigin({ corsOrigin })})` : 'disabled'}`,
)
@ -190,12 +184,10 @@ export async function stdioToStatelessStreamableHttp(
)
})
const publicHost = baseUrl ?? (host === '0.0.0.0' ? 'localhost' : host)
app.listen(port, host, () => {
logger.info(`Listening on ${host}:${port}`)
logger.info(
`StreamableHttp endpoint: http://${publicHost}:${port}${streamableHttpPath}`,
`StreamableHttp endpoint: http://${host}:${port}${streamableHttpPath}`,
)
})
}

View File

@ -217,11 +217,10 @@ export async function streamableHttpToSse(args: StreamableHttpToSseArgs) {
) {
if (
InitializeRequestSchema.safeParse(requestMessage).success &&
message.params?.protocolVersion
message.params?.protocolVersion &&
requestMessage.params?.protocolVersion
) {
// requestMessage may have a loose type, cast to any to safely set protocolVersion
;(requestMessage as any).params = (requestMessage as any).params ?? {}
;(requestMessage as any).params.protocolVersion =
requestMessage.params.protocolVersion =
message.params.protocolVersion
}

View File

@ -132,9 +132,7 @@ export async function streamableHttpToStdio(args: StreamableHttpToStdioArgs) {
message.params?.protocolVersion
) {
// respect the protocol version from the stdio client's init request
;(possibleInitRequestMessage as any).params =
(possibleInitRequestMessage as any).params ?? {}
;(possibleInitRequestMessage as any).params.protocolVersion =
possibleInitRequestMessage.params!.protocolVersion =
message.params.protocolVersion
}
result = await originalRequest.apply(this, [

View File

@ -259,7 +259,6 @@ async function main() {
stdioCmd: argv.stdio!,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),
@ -277,7 +276,6 @@ async function main() {
stdioCmd: argv.stdio!,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),
@ -417,7 +415,6 @@ async function main() {
configPath: argv.config!,
port: argv.port,
host: argv.host,
baseUrl: argv.baseUrl,
streamableHttpPath: argv.streamableHttpPath,
logger,
corsOrigin: corsOrigin({ argv }),