transactions
Manage PostgreSQL database transactions with actions including begin, commit, rollback, and savepoint operations for controlled data modifications.
Instructions
Transaction management: begin, commit, rollback, savepoints
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: begin (start transaction), commit (commit transaction), rollback (rollback transaction), savepoint (create savepoint), rollback_to (rollback to savepoint), release (release savepoint), status (transaction status) | |
| isolationLevel | No | Transaction isolation level (for begin action) | |
| readOnly | No | Start read-only transaction (for begin action) | |
| savepointName | No | Savepoint name (required for savepoint, rollback_to, release) | |
| transactionId | No | Transaction ID (required for commit, rollback, and operations within transaction) |
Implementation Reference
- src/index.ts:1082-1126 (handler)Main handler function for the 'transactions' tool. Dispatches actions (begin, commit, rollback, status) to DatabaseConnectionManager methods and returns MCP-formatted responses.private async handleTransactions(args: any) { const { action, transactionId, readOnly, isolationLevel } = args; switch (action) { case 'begin': const txId = await this.dbManager.beginTransaction(readOnly); return { content: [{ type: 'text', text: JSON.stringify({ transactionId: txId, status: 'started' }, null, 2) }] }; case 'commit': ParameterValidator.validateRequired(transactionId, 'transactionId'); await this.dbManager.commitTransaction(transactionId); return { content: [{ type: 'text', text: JSON.stringify({ transactionId, status: 'committed' }, null, 2) }] }; case 'rollback': ParameterValidator.validateRequired(transactionId, 'transactionId'); await this.dbManager.rollbackTransaction(transactionId); return { content: [{ type: 'text', text: JSON.stringify({ transactionId, status: 'rolled_back' }, null, 2) }] }; case 'status': return { content: [{ type: 'text', text: JSON.stringify(this.dbManager.getOperationalStats(), null, 2) }] }; default: throw new Error(`Unknown transaction action: ${action}`); } }
- src/index.ts:288-316 (schema)JSON Schema defining the input parameters for the 'transactions' tool, including actions and parameters like transactionId, readOnly, etc.inputSchema: { type: 'object', properties: { action: { type: 'string', enum: ['begin', 'commit', 'rollback', 'savepoint', 'rollback_to', 'release', 'status'], description: 'Action: begin (start transaction), commit (commit transaction), rollback (rollback transaction), savepoint (create savepoint), rollback_to (rollback to savepoint), release (release savepoint), status (transaction status)' }, transactionId: { type: 'string', description: 'Transaction ID (required for commit, rollback, and operations within transaction)' }, savepointName: { type: 'string', description: 'Savepoint name (required for savepoint, rollback_to, release)' }, readOnly: { type: 'boolean', description: 'Start read-only transaction (for begin action)', default: false }, isolationLevel: { type: 'string', enum: ['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'], description: 'Transaction isolation level (for begin action)' } }, required: ['action'] }
- src/index.ts:658-659 (registration)Registration of the transactions tool handler in the main tool dispatch switch statement within CallToolRequestSchema handler.case 'transactions': return await this.handleTransactions(args);
- src/index.ts:286-317 (registration)Tool definition object for 'transactions' included in the toolDefinitions array, which is returned by ListToolsRequestSchema.name: 'transactions', description: 'Transaction management: begin, commit, rollback, savepoints', inputSchema: { type: 'object', properties: { action: { type: 'string', enum: ['begin', 'commit', 'rollback', 'savepoint', 'rollback_to', 'release', 'status'], description: 'Action: begin (start transaction), commit (commit transaction), rollback (rollback transaction), savepoint (create savepoint), rollback_to (rollback to savepoint), release (release savepoint), status (transaction status)' }, transactionId: { type: 'string', description: 'Transaction ID (required for commit, rollback, and operations within transaction)' }, savepointName: { type: 'string', description: 'Savepoint name (required for savepoint, rollback_to, release)' }, readOnly: { type: 'boolean', description: 'Start read-only transaction (for begin action)', default: false }, isolationLevel: { type: 'string', enum: ['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'], description: 'Transaction isolation level (for begin action)' } }, required: ['action'] } },
- src/validation.ts:291-291 (helper)Mapping in TOOL_NAME_MAPPINGS for suggesting 'transactions' tool when 'transaction' is used incorrectly.'transaction': 'transactions',