Skip to main content
Glama

SQL Server MCP

by cwilby
transactions.ts2.34 kB
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import crypto from "node:crypto"; import { z } from "zod"; import { BaseTools } from "./base"; import * as database from "../utils/database"; export class TransactionTools extends BaseTools { transactions: Map<string, any> = new Map(); static create(server: McpServer) { const tools = new TransactionTools(); server.tool( "start-transaction", "Start a new transaction", tools.startTransaction.bind(tools) ); server.tool( "commit-transaction", "Commit a transaction", { transactionId: z.string().describe("The ID of the transaction to commit.") }, tools.commitTransaction.bind(tools), ); server.tool( "rollback-transaction", "Rollback a transaction", { transactionId: z.string().describe("The ID of the transaction to rollback.") }, tools.rollbackTransaction.bind(tools), ); return tools; } async startTransaction() { const transactionId = crypto.randomUUID(); const transaction = await database.startTransaction(); this.transactions.set(transactionId, transaction); return this.toResult(`Transaction started with ID: ${transactionId}. You can use this ID to commit or rollback the transaction later.`); } async commitTransaction({ transactionId }: { transactionId: string }) { const transaction = this.transactions.get(transactionId); if (!transaction) { throw new Error(`Transaction with ID ${transactionId} not found.`); } await transaction.commit(); this.transactions.delete(transactionId); return this.toResult(`Transaction with ID ${transactionId} committed successfully.`); } async rollbackTransaction({ transactionId }: { transactionId: string }) { const transaction = this.transactions.get(transactionId); if (!transaction) { throw new Error(`Transaction with ID ${transactionId} not found.`); } await transaction.rollback(); this.transactions.delete(transactionId); return this.toResult(`Transaction with ID ${transactionId} rolled back successfully.`); } }

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/cwilby/mcp-node-mssql'

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