Skip to main content
Glama
wirdes

db-mcp-tool

!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');
        }
    }
Install Server

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