{"record":{"id":"7b42354b5b5d8c91","repo":"eyaltoledano/claude-task-master","slug":"mcp-session-must-have-client-sampling-capabilities-7b4235","errorCode":null,"errorMessage":"MCP session must have client sampling capabilities","messagePattern":"MCP session must have client sampling capabilities","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"mcp-server/src/providers/mcp-provider.js","lineNumber":38,"sourceCode":"\t\treturn 'MCP_API_KEY';\n\t}\n\n\tisRequiredApiKey() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Override validateAuth to validate MCP session instead of API key\n\t * @param {object} params - Parameters to validate\n\t */\n\tvalidateAuth(params) {\n\t\t// Validate MCP session instead of API key\n\t\tif (!this.session) {\n\t\t\tthrow new Error('MCP Provider requires active MCP session');\n\t\t}\n\n\t\tif (!this.session.clientCapabilities?.sampling) {\n\t\t\tthrow new Error('MCP session must have client sampling capabilities');\n\t\t}\n\t}\n\n\t/**\n\t * Creates and returns an MCP AI SDK client instance.\n\t * @param {object} params - Parameters for client initialization\n\t * @returns {Function} MCP AI SDK client function\n\t * @throws {Error} If initialization fails\n\t */\n\tgetClient(params) {\n\t\ttry {\n\t\t\t// Pass MCP session to AI SDK implementation\n\t\t\treturn createMCP({\n\t\t\t\tsession: this.session,\n\t\t\t\tdefaultSettings: {\n\t\t\t\t\ttemperature: params.temperature,\n\t\t\t\t\tmaxTokens: params.maxTokens\n\t\t\t\t}","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/mcp-server/src/providers/mcp-provider.js#L20-L56","documentation":"After confirming an MCP session exists, the provider also requires the connected client to declare sampling capabilities (`session.clientCapabilities.sampling`). This error is thrown when the session is valid but the client never advertised sampling support, so the provider cannot delegate model calls to the client.","triggerScenarios":"An MCP client connects without `sampling` in its `clientCapabilities` during initialization, then the provider's validateAuth runs on a sampling-backed request.","commonSituations":"Using a minimal or older MCP client that doesn't implement the sampling capability; client initialized with capabilities explicitly omitting sampling; connecting through a proxy/bridge that drops capability declarations.","solutions":["Update/reconfigure the MCP client so its initialize request includes `capabilities: { sampling: {} }`.","Upgrade the client library if it predates MCP sampling support.","Use a server-side model provider (API key based) instead of client sampling when the client cannot sample.","Verify the capability object isn't being overwritten after initialization."],"exampleFix":"// before\nconst client = await connect({ capabilities: {} }); // no sampling\n// after\nconst client = await connect({ capabilities: { sampling: {} } });","handlingStrategy":"validation","validationCode":"if (!client.getInfo?.().capabilities?.sampling) throw new Error('Client does not support MCP sampling');","typeGuard":"function supportsSampling(session) { return !!session?.clientCapabilities?.sampling; }","tryCatchPattern":"try { await provider.generate(params); } catch (e) { if (e.message.includes('sampling capabilities')) { fallbackToServerSideModel(); } else { throw e; } }","preventionTips":["Declare sampling capabilities in the client initialize request","Pin/upgrade client libraries that support MCP sampling","Document client requirements for consumers of your MCP server"],"tags":["mcp","session","capabilities","sampling"],"backgroundTag":"missing-capability","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}