eyaltoledano/claude-task-master · error
The MCP model function cannot be called with the new…
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).
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
- Failed to parse JSON response
- Generated object does not match schema
- MCP provider requires session object
- MCP session must have client sampling capabilities
- Schema is required for object generation
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/b1100997e0badb0e.
Report an issue: GitHub.
Appendix: 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)