Skip to content

Commit a34bc6a

Browse files
committed
fix: recursive loading
1 parent 1732ac2 commit a34bc6a

File tree

3 files changed

+26
-33
lines changed

3 files changed

+26
-33
lines changed

src/core/MCPServer.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -137,27 +137,6 @@ export class MCPServer {
137137
};
138138
logger.debug(`Creating HttpStreamTransport. response mode: ${httpConfig.responseMode}`);
139139
transport = new HttpStreamTransport(httpConfig);
140-
141-
(transport as HttpStreamTransport).setServerConfig(
142-
{ name: this.serverName, version: this.serverVersion },
143-
async (mcpServer) => {
144-
for (const [toolName, tool] of this.toolsMap.entries()) {
145-
(mcpServer as any).tool(
146-
toolName,
147-
tool.inputSchema.properties || {},
148-
async (params: any) => {
149-
const result = await tool.toolCall({
150-
params: {
151-
name: toolName,
152-
arguments: params,
153-
},
154-
});
155-
return result;
156-
}
157-
);
158-
}
159-
}
160-
);
161140
break;
162141
}
163142
case 'stdio':

src/loaders/BaseLoader.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { join, dirname } from 'path';
2+
import { pathToFileURL } from 'url';
23
import { existsSync } from 'fs';
34
import { logger } from '../core/Logger.js';
45
import { discoverFilesRecursively, hasValidFiles } from '../utils/fileDiscovery.js';
@@ -85,7 +86,7 @@ export abstract class BaseLoader<T> {
8586
`Attempting to load ${this.config.subdirectory.slice(0, -1)} from: ${fullPath}`
8687
);
8788

88-
const importPath = `file://${fullPath}`;
89+
const importPath = pathToFileURL(fullPath).href;
8990
const module = await import(importPath);
9091

9192
let ItemClass = null;

src/transports/http/server.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,8 @@ export class HttpStreamTransport extends AbstractTransport {
1515
private _endpoint: string;
1616
private _enableJsonResponse: boolean = false;
1717

18-
1918
private _transports: Map<string, StreamableHTTPServerTransport> = new Map();
2019

21-
2220
private _serverConfig: any;
2321
private _serverSetupCallback?: (server: McpServer) => Promise<void>;
2422

@@ -54,7 +52,6 @@ export class HttpStreamTransport extends AbstractTransport {
5452
);
5553
}
5654

57-
5855
setServerConfig(serverConfig: any, setupCallback: (server: McpServer) => Promise<void>): void {
5956
this._serverConfig = serverConfig;
6057
this._serverSetupCallback = setupCallback;
@@ -120,13 +117,30 @@ export class HttpStreamTransport extends AbstractTransport {
120117
logger.info('Creating new session for initialization request');
121118

122119
if (!this._serverSetupCallback || !this._serverConfig) {
123-
logger.error('No server configuration available');
124-
this.sendError(
125-
res,
126-
500,
127-
-32603,
128-
'Internal server error: No server configuration available'
129-
);
120+
logger.debug('No server configuration available, using standard transport behavior');
121+
transport = new StreamableHTTPServerTransport({
122+
sessionIdGenerator: () => randomUUID(),
123+
onsessioninitialized: (sessionId: string) => {
124+
logger.info(`Session initialized: ${sessionId}`);
125+
this._transports.set(sessionId, transport);
126+
},
127+
enableJsonResponse: this._enableJsonResponse,
128+
});
129+
130+
transport.onclose = () => {
131+
if (transport.sessionId) {
132+
logger.info(`Transport closed for session: ${transport.sessionId}`);
133+
this._transports.delete(transport.sessionId);
134+
}
135+
};
136+
137+
transport.onmessage = async (message: JSONRPCMessage) => {
138+
if (this._onmessage) {
139+
await this._onmessage(message);
140+
}
141+
};
142+
143+
await transport.handleRequest(req, res, body);
130144
return;
131145
}
132146

@@ -135,7 +149,6 @@ export class HttpStreamTransport extends AbstractTransport {
135149
sessionIdGenerator: () => randomUUID(),
136150
onsessioninitialized: (sessionId: string) => {
137151
logger.info(`Session initialized: ${sessionId}`);
138-
// Store the transport by session ID
139152
this._transports.set(sessionId, transport);
140153
},
141154
enableJsonResponse: this._enableJsonResponse,

0 commit comments

Comments
 (0)