Skip to main content
Glama

!export-data

Export data from specified database tables to external formats using the MCP-enabled server db-mcp-tool, supporting PostgreSQL, MySQL, and Firestore.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tableYes

Implementation Reference

  • src/index.ts:289-320 (registration)
    Registers the "!export-data" MCP tool. Defines the input schema (table name) and the handler function that delegates to DatabaseService.exportTableData().
    server.tool( "!export-data", { table: z.string(), }, async (args: { table: string }) => { if (!dbService) { return { content: [{ type: "text", text: "You must connect to a database first!" }], isError: true, }; } try { const data = await dbService.exportTableData(args.table); return { content: [ { type: "text", text: data, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return { content: [{ type: "text", text: `Failed to export table data: ${errorMessage}` }], isError: true, }; } } );
  • The direct handler function for the "!export-data" tool, which validates the database connection and invokes the service method.
    async (args: { table: string }) => { if (!dbService) { return { content: [{ type: "text", text: "You must connect to a database first!" }], isError: true, }; } try { const data = await dbService.exportTableData(args.table); return { content: [ { type: "text", text: data, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return { content: [{ type: "text", text: `Failed to export table data: ${errorMessage}` }], isError: true, }; } }
  • Zod input schema for the tool: requires a 'table' string parameter.
    { table: z.string(), },
  • Core helper method in DatabaseService that exports table data as SQL INSERT statements for PostgreSQL and MySQL.
    async exportTableData(tableName: string): Promise<string> { switch (this.config.type) { case 'postgres': { if (!this.postgresClient) { throw new Error('PostgreSQL connection not found'); } // Önce tablo verilerini al const dataQuery = `SELECT * FROM ${tableName};`; const result = await this.postgresClient.query(dataQuery); if (result.rows.length === 0) { return ''; } // Sütun isimlerini al const columns = Object.keys(result.rows[0]); // INSERT ifadelerini oluştur const insertStatements = result.rows.map(row => { const values = columns.map(col => { const val = row[col]; if (val === null) return 'NULL'; if (typeof val === 'string') return `'${val.replace(/'/g, "''")}'`; return val; }); return `INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${values.join(', ')});`; }); return insertStatements.join('\n'); } case 'mysql': { if (!this.mysqlConnection) { throw new Error('MySQL connection not found'); } // Önce tablo verilerini al const [rows] = await this.mysqlConnection.query( 'SELECT * FROM ??', [tableName] ); if (rows.length === 0) { return ''; } // Sütun isimlerini al const columns = Object.keys(rows[0]); // INSERT ifadelerini oluştur const insertStatements = rows.map((row: any) => { const values = columns.map(col => { const val = row[col]; if (val === null) return 'NULL'; if (typeof val === 'string') return `'${val.replace(/'/g, "''")}'`; return val; }); return `INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${values.join(', ')});`; }); return insertStatements.join('\n'); } case 'firestore': { throw new Error('SQL data export is not supported for Firestore'); } default: throw new Error('Unsupported database type'); } }

Other Tools

Related Tools

Latest Blog Posts

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/wirdes/db-mcp-tool'

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