Skip to content

Commit e50d706

Browse files
committed
chore: Gracefully fail when the server is down
The server might be closed because the connection made the server die or because it's a unit test. In that case, do not fail, just log the error and continue. This is not a critical feature, in case that we couldn't sync once, we will try again at some point or just let it be.
1 parent 550a284 commit e50d706

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/resources/resource.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { UserConfig } from "../common/config.js";
44
import { Telemetry } from "../telemetry/telemetry.js";
55
import type { SessionEvents } from "../common/session.js";
66
import { ReadResourceCallback, ResourceMetadata } from "@modelcontextprotocol/sdk/server/mcp.js";
7+
import logger, { LogId } from "../common/logger.js";
78

89
type PayloadOf<K extends keyof SessionEvents> = SessionEvents[K][0];
910

@@ -58,8 +59,16 @@ export function ReactiveResource<Value, RelevantEvents extends readonly (keyof S
5859
});
5960

6061
private async triggerUpdate() {
61-
await this.server.mcpServer.server.sendResourceUpdated({ uri });
62-
this.server.mcpServer.sendResourceListChanged();
62+
try {
63+
await this.server.mcpServer.server.sendResourceUpdated({ uri });
64+
this.server.mcpServer.sendResourceListChanged();
65+
} catch (error: unknown) {
66+
logger.warning(
67+
LogId.serverClosed,
68+
"Could not send the latest resources to the client.",
69+
error as string
70+
);
71+
}
6372
}
6473

6574
reduceApply(eventName: SomeEvent, ...event: PayloadOf<SomeEvent>[]): void {

0 commit comments

Comments
 (0)