eyaltoledano/claude-task-master · error
The MCP model function cannot be called with the new keyword
Error message
The MCP model function cannot be called with the new keyword.
What it means
The object returned by createMCP is a plain provider function implementing the AI SDK provider-callable convention; calling it with `new` is unsupported. The library explicitly rejects new.target so users get a clear message instead of subtle failures from skipping MCPLanguageModel construction. Call the provider as a normal function: provider('model-id', settings).
Source
Thrown at mcp-server/src/custom-sdk/index.js:25
import { MCPLanguageModel } from './language-model.js';
/**
* Create MCP provider factory function following AI SDK patterns
* @param {object} options - Provider options
* @param {object} options.session - MCP session object
* @param {object} options.defaultSettings - Default settings for the provider
* @returns {Function} Provider factory function
*/
export function createMCP(options = {}) {
if (!options.session) {
throw new Error('MCP provider requires session object');
}
// Return the provider factory function that AI SDK expects
const provider = function (modelId, settings = {}) {
if (new.target) {
throw new Error(
'The MCP model function cannot be called with the new keyword.'
);
}
return new MCPLanguageModel({
session: options.session,
modelId: modelId || 'claude-3-5-sonnet-20241022',
settings: {
temperature: settings.temperature,
maxTokens: settings.maxTokens,
...options.defaultSettings,
...settings
}
});
};
// Add required methods for AI SDK compatibility
provider.languageModel = (modelId, settings) => provider(modelId, settings);View on GitHub (pinned to c0c98d367c)
Solutions
- Remove the `new` keyword and call the provider directly: ai.generateText({ model: provider('model-id') })
- Use the languageModel property or template literal form (e.g. mcp('model-id')) per AI SDK v1 provider convention
Example fix
// before
const model = new mcpProvider('my-model', {});
// after
const model = mcpProvider('my-model'); Defensive patterns
Strategy: validation
Prevention
- Call the provider as a plain function: provider(modelId, settings) — never with `new`
- Use AI SDK helpers (generateText/generateObject with `model: mcp('id')`) instead of manual instantiation
- Add an ESLint rule or code-review note against `new` on provider functions
When it happens
Trigger: Writing `new provider(modelId)` or `new createMCP({session})(modelId)` — treating the provider factory as a class constructor.
Common situations: Refactoring from class-based providers to AI SDK function-style providers; copy-pasting old instantiation code.
Related errors
- MCP provider requires session object
- MCP session must have client sampling capabilities
- Schema is required for object generation
- Failed to parse JSON response: ${parseError.message}. Respon
- Generated object does not match schema: ${validationError.me
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/b1100997e0badb0e.
Report an issue: GitHub.