UNPKG

@rolandohuber/mysql-mcp-server

Version:

A comprehensive MCP server for MySQL database operations with 16 tools, multi-transport support, and intelligent test data generation

63 lines 2.42 kB
export const summarizeTableSchema = { name: 'mysql_summarizeTable', description: 'Generates a summary of a table including row count and column statistics', inputSchema: { type: 'object', properties: { table: { type: 'string', description: 'Name of the table to summarize', }, }, required: ['table'], }, }; export async function summarizeTableHandler(mysqlService, args) { try { // Get row count const countResult = await mysqlService.query(`SELECT COUNT(*) as count FROM \`${args.table}\``); const rowCount = countResult.rows[0].count; // Get table schema const schema = await mysqlService.describeTable(args.table); const columns = []; for (const column of schema) { const columnName = column.column_name; const columnType = column.data_type; // Get sample values (top 5 most common) const sampleQuery = ` SELECT \`${columnName}\`, COUNT(*) as freq FROM \`${args.table}\` WHERE \`${columnName}\` IS NOT NULL GROUP BY \`${columnName}\` ORDER BY freq DESC LIMIT 5 `; const sampleResult = await mysqlService.query(sampleQuery); const sampleValues = sampleResult.rows.map(row => row[columnName]); // Get null count const nullQuery = `SELECT COUNT(*) as null_count FROM \`${args.table}\` WHERE \`${columnName}\` IS NULL`; const nullResult = await mysqlService.query(nullQuery); const nullCount = nullResult.rows[0].null_count; // Get unique count const uniqueQuery = `SELECT COUNT(DISTINCT \`${columnName}\`) as unique_count FROM \`${args.table}\``; const uniqueResult = await mysqlService.query(uniqueQuery); const uniqueCount = uniqueResult.rows[0].unique_count; columns.push({ name: columnName, type: columnType, sampleValues, nullCount, uniqueCount, }); } return { table: args.table, rowCount, columns, }; } catch (error) { throw new Error(`Failed to summarize table ${args.table}: ${error}`); } } //# sourceMappingURL=summarizeTable.js.map