!triggers
Manage and explore database triggers to automate actions and maintain data integrity across PostgreSQL, MySQL, and Firestore using this MCP server tool.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:157-186 (handler)The handler function for the !triggers MCP tool. It checks for database connection, calls dbService.getTriggers(), formats the result as JSON text, and handles errors.server.tool( "!triggers", {}, async () => { if (!dbService) { return { content: [{ type: "text", text: "You must connect to a database first!" }], isError: true, }; } try { const triggers = await dbService.getTriggers(); return { content: [ { type: "text", text: JSON.stringify(triggers, null, 2), }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return { content: [{ type: "text", text: `Failed to get trigger information: ${errorMessage}` }], isError: true, }; } } );
- src/services/database.ts:91-127 (helper)The core implementation of trigger retrieval in DatabaseService.getTriggers(), with database-specific SQL queries for PostgreSQL and MySQL, empty for Firestore.async getTriggers(): Promise<TriggerInfo[]> { switch (this.config.type) { case 'postgres': { const query = ` SELECT trigger_name as name, event_object_table as table, event_manipulation as event, action_timing as timing, action_statement as statement FROM information_schema.triggers WHERE trigger_schema = 'public'; `; const result = await this.postgresClient!.query(query); return result.rows; } case 'mysql': { const [rows] = await this.mysqlConnection!.query(` SELECT TRIGGER_NAME as name, EVENT_OBJECT_TABLE as \`table\`, EVENT_MANIPULATION as event, ACTION_TIMING as timing, ACTION_STATEMENT as statement FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA = DATABASE(); `); return rows; } case 'firestore': { // Firestore does not support triggers at database level return []; } default: return []; } }
- src/types/database.ts:31-37 (schema)TypeScript interface defining the structure of TriggerInfo returned by getTriggers().export interface TriggerInfo { name: string; table: string; event: string; timing: string; statement: string; }
- src/index.ts:157-186 (registration)Registration of the !triggers tool on the MCP server with empty input schema.server.tool( "!triggers", {}, async () => { if (!dbService) { return { content: [{ type: "text", text: "You must connect to a database first!" }], isError: true, }; } try { const triggers = await dbService.getTriggers(); return { content: [ { type: "text", text: JSON.stringify(triggers, null, 2), }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return { content: [{ type: "text", text: `Failed to get trigger information: ${errorMessage}` }], isError: true, }; } } );