Skip to main content
Glama

MCP SQL Server

by ryudg
SchemaValidationError.ts2.81 kB
/** * SchemaValidationError * * Domain-specific error for schema validation failures. * Implements the 4H principles for user-friendly error messages. */ export class SchemaValidationError extends Error { constructor( readonly objectType: string, readonly objectName: string, readonly validationIssue: string, message: string = 'Schema validation failed' ) { super(`${message}: ${validationIssue} for ${objectType} '${objectName}'`); this.name = 'SchemaValidationError'; // Ensure prototype chain is properly maintained Object.setPrototypeOf(this, SchemaValidationError.prototype); } /** * Gets a human-readable error message following the 4H principles: * - Human: Written in human language * - Helpful: Provides context and possible solutions * - Humorous: Keeps a light tone (where appropriate) * - Humble: Doesn't blame the user * * @returns User-friendly error message */ getHumanReadableMessage(): string { const baseMessage = `We found an issue with the ${this.objectType.toLowerCase()} "${this.objectName}".`; // Provide specific guidance based on the validation issue if ( this.validationIssue.includes('not found') || this.validationIssue.includes('does not exist') ) { return `${baseMessage} It doesn't seem to exist in the database. Please check the name and try again.`; } if (this.validationIssue.includes('permission')) { return `${baseMessage} You might not have permission to access it. Please contact your database administrator.`; } if (this.validationIssue.includes('column')) { return `${baseMessage} There appears to be an issue with one of its columns. Please verify the column definitions.`; } // Default message for other validation issues return `${baseMessage} ${this.validationIssue}. Please review the schema and try again.`; } /** * Gets specific recommendations to fix the validation issue. * @returns Array of recommendation strings */ getRecommendations(): string[] { const recommendations: string[] = []; // Add general recommendations recommendations.push('Verify that the object name is spelled correctly'); recommendations.push('Check that you have the necessary permissions'); // Add specific recommendations based on object type if (this.objectType.toLowerCase() === 'table') { recommendations.push('Ensure the table exists in the current database'); recommendations.push('Check if the table is in a different schema'); } else if (this.objectType.toLowerCase() === 'column') { recommendations.push('Verify the column exists in the specified table'); recommendations.push('Check for typos in the column name'); } return recommendations; } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryudg/mcp-sql'

If you have feedback or need assistance with the MCP directory API, please join our Discord server