In roots.ts, clientCapabilites.roots and response.roots are optional.

Fixes #2818
This commit is contained in:
cliffhall
2026-01-10 17:32:20 -05:00
parent 9691b958ec
commit 7300631a5c

View File

@@ -30,7 +30,7 @@ export const roots: Map<string | undefined, Root[]> = new Map<
*/
export const syncRoots = async (server: McpServer, sessionId?: string) => {
const clientCapabilities = server.server.getClientCapabilities() || {};
const clientSupportsRoots: boolean = clientCapabilities.roots !== undefined;
const clientSupportsRoots: boolean = clientCapabilities?.roots !== undefined;
// Fetch the roots list for this client
if (clientSupportsRoots) {
@@ -41,14 +41,14 @@ export const syncRoots = async (server: McpServer, sessionId?: string) => {
const response = await server.server.listRoots();
if (response && "roots" in response) {
// Store the roots list for this client
roots.set(sessionId, response.roots);
roots.set(sessionId, response?.roots);
// Notify the client of roots received
await server.sendLoggingMessage(
{
level: "info",
logger: "everything-server",
data: `Roots updated: ${response.roots.length} root(s) received from client`,
data: `Roots updated: ${response?.roots?.length} root(s) received from client`,
},
sessionId
);