diff --git a/cli/src/client/connection.ts b/cli/src/client/connection.ts index 931f803da..dcbe8e518 100644 --- a/cli/src/client/connection.ts +++ b/cli/src/client/connection.ts @@ -18,6 +18,12 @@ export async function connect( ): Promise { try { await client.connect(transport); + + if (client.getServerCapabilities()?.logging) { + // default logging level is undefined in the spec, but the user of the + // inspector most likely wants debug. + await client.setLoggingLevel("debug"); + } } catch (error) { throw new Error( `Failed to connect to MCP server: ${error instanceof Error ? error.message : String(error)}`, diff --git a/client/src/App.tsx b/client/src/App.tsx index 3836aa9b8..537f80bfa 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -260,6 +260,7 @@ const App = () => { window.location.hash = "elicitations"; }, getRoots: () => rootsRef.current, + defaultLoggingLevel: logLevel, }); useEffect(() => { diff --git a/client/src/lib/hooks/useConnection.ts b/client/src/lib/hooks/useConnection.ts index edc21d92f..78dfa6df6 100644 --- a/client/src/lib/hooks/useConnection.ts +++ b/client/src/lib/hooks/useConnection.ts @@ -28,6 +28,7 @@ import { ToolListChangedNotificationSchema, PromptListChangedNotificationSchema, Progress, + LoggingLevel, ElicitRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js"; @@ -72,6 +73,7 @@ interface UseConnectionOptions { onElicitationRequest?: (request: any, resolve: any) => void; // eslint-disable-next-line @typescript-eslint/no-explicit-any getRoots?: () => any[]; + defaultLoggingLevel?: LoggingLevel; } export function useConnection({ @@ -90,6 +92,7 @@ export function useConnection({ onPendingRequest, onElicitationRequest, getRoots, + defaultLoggingLevel, }: UseConnectionOptions) { const [connectionStatus, setConnectionStatus] = useState("disconnected"); @@ -560,6 +563,10 @@ export function useConnection({ }); } + if (capabilities?.logging && defaultLoggingLevel) { + await client.setLoggingLevel(defaultLoggingLevel); + } + if (onElicitationRequest) { client.setRequestHandler(ElicitRequestSchema, async (request) => { return new Promise((resolve) => {