@tanstack/ai-mcp
Version:
Host-side Model Context Protocol client for TanStack AI: discover and run MCP server tools, resources, and prompts in any adapter's chat() loop, with generated end-to-end types.
71 lines (70 loc) • 2.77 kB
JavaScript
//#region src/errors.ts
var MCPConnectionError = class extends Error {
cause;
constructor(message, cause) {
super(message);
this.cause = cause;
this.name = "MCPConnectionError";
}
};
var DuplicateToolNameError = class extends Error {
toolName;
constructor(toolName) {
super(`Duplicate MCP tool name "${toolName}". Set a unique \`prefix\` on one of the MCP clients (createMCPClient({ transport, prefix: '...' })) to disambiguate.`);
this.toolName = toolName;
this.name = "DuplicateToolNameError";
}
};
/**
* Thrown when a task-required tool is explicitly bound via `mcp.tools([...])`,
* called via `callTool()`, or named in a `toolFilter` list, but the server
* does not declare the tasks capability for tools/call, so the call could
* never execute. (Auto-discovery without a `toolFilter` list skips such tools.)
*/
var MCPTaskRequiredToolError = class extends Error {
toolName;
constructor(toolName) {
super(`MCP tool "${toolName}" requires task-based execution, but the server does not declare the tasks capability for tools/call`);
this.toolName = toolName;
this.name = "MCPTaskRequiredToolError";
}
};
var MCPToolNotFoundError = class extends Error {
toolName;
constructor(toolName) {
super(`toolDefinition name "${toolName}" was passed to mcp.tools([...]) but the MCP server exposes no tool with that name, or the client's \`toolFilter\` hides it. Check the name or run mcp.tools() to list.`);
this.toolName = toolName;
this.name = "MCPToolNotFoundError";
}
};
function toolFilterMessage(details) {
const names = (list) => list.map((name) => `"${name}"`).join(", ");
const parts = ["The MCP client `toolFilter` list does not match the server."];
if (details.missing.length > 0) parts.push(`The server has no tool named ${names(details.missing)}.`);
if (details.repeated.length > 0) parts.push(`The list repeats ${names(details.repeated)}.`);
const available = details.available.length > 0 ? names(details.available) : "(none)";
parts.push(`Available tools: ${available}.`);
return parts.join(" ");
}
/**
* Thrown by `tools()` when a `toolFilter` list names a tool that the server
* does not have, or names a tool more than once.
*/
var MCPToolFilterError = class extends Error {
/** Listed, but the server has no tool with this name. */
missing;
/** Listed more than once. */
repeated;
/** The server's tool names. */
available;
constructor(details) {
super(toolFilterMessage(details));
this.name = "MCPToolFilterError";
this.missing = details.missing;
this.repeated = details.repeated;
this.available = details.available;
}
};
//#endregion
export { DuplicateToolNameError, MCPConnectionError, MCPTaskRequiredToolError, MCPToolFilterError, MCPToolNotFoundError };
//# sourceMappingURL=errors.js.map