Skip to main content
Glama

SQL MCP Server

by polarisxb
MIT License
1
5
  • Apple
  • Linux
query-builder.ts3.54 kB
export class MySQLQueryBuilder { buildGetDatabasesQuery(): string { return 'SHOW DATABASES'; } buildGetTablesQuery(): string { return ` SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? ORDER BY TABLE_NAME `; } buildGetTableColumnsQuery(): string { return ` SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE, COLUMN_DEFAULT, EXTRA, COLUMN_COMMENT, COLUMN_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? ORDER BY ORDINAL_POSITION `; } buildGetPrimaryKeyQuery(): string { return ` SELECT COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND CONSTRAINT_NAME = 'PRIMARY' ORDER BY ORDINAL_POSITION `; } buildGetIndexesQuery(): string { return ` SELECT INDEX_NAME, COLUMN_NAME, NON_UNIQUE, SEQ_IN_INDEX, INDEX_TYPE FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? ORDER BY INDEX_NAME, SEQ_IN_INDEX `; } buildGetConstraintsQuery(): string { return ` SELECT tc.CONSTRAINT_NAME, tc.CONSTRAINT_TYPE, kcu.COLUMN_NAME, kcu.REFERENCED_TABLE_NAME, kcu.REFERENCED_COLUMN_NAME, rc.UPDATE_RULE, rc.DELETE_RULE FROM information_schema.TABLE_CONSTRAINTS tc JOIN information_schema.KEY_COLUMN_USAGE kcu ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME AND tc.TABLE_SCHEMA = kcu.TABLE_SCHEMA AND tc.TABLE_NAME = kcu.TABLE_NAME LEFT JOIN information_schema.REFERENTIAL_CONSTRAINTS rc ON tc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME AND tc.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA WHERE tc.TABLE_SCHEMA = ? AND tc.TABLE_NAME = ? ORDER BY tc.CONSTRAINT_NAME, kcu.ORDINAL_POSITION `; } buildGetRelationsQuery(): string { return ` SELECT rc.CONSTRAINT_NAME, kcu.TABLE_NAME as source_table, kcu.COLUMN_NAME as source_column, kcu.REFERENCED_TABLE_NAME as target_table, kcu.REFERENCED_COLUMN_NAME as target_column, rc.UPDATE_RULE, rc.DELETE_RULE FROM information_schema.REFERENTIAL_CONSTRAINTS rc JOIN information_schema.KEY_COLUMN_USAGE kcu ON rc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME AND rc.CONSTRAINT_SCHEMA = kcu.CONSTRAINT_SCHEMA WHERE rc.CONSTRAINT_SCHEMA = ? AND (kcu.TABLE_NAME = ? OR kcu.REFERENCED_TABLE_NAME = ?) ORDER BY rc.CONSTRAINT_NAME, kcu.ORDINAL_POSITION `; } buildGetTableCommentQuery(): string { return ` SELECT TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? `; } buildGetTableRowCountQuery(where?: string): string { // information_schema.TABLES.TABLE_ROWS 在InnoDB是估计值,已知行为 return ` SELECT TABLE_ROWS as row_count FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? `; } buildGetSampleDataQuery(limit: number, offset: number, where?: string): string { const whereClause = where ? `WHERE ${where}` : ''; return ` SELECT * FROM ??.?? ${whereClause} LIMIT ${limit} OFFSET ${offset} `; } }

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/polarisxb/sql-mcp'

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