From 81c2e8bda50e650140d2043453ae9d774a223756 Mon Sep 17 00:00:00 2001 From: Deivid Date: Wed, 24 Sep 2025 13:31:55 -0300 Subject: [PATCH] Add: support for username/password SQL authentication --- MssqlMcp/Node/src/index.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/MssqlMcp/Node/src/index.ts b/MssqlMcp/Node/src/index.ts index 8dc1f30..785f71b 100644 --- a/MssqlMcp/Node/src/index.ts +++ b/MssqlMcp/Node/src/index.ts @@ -30,16 +30,31 @@ let globalAccessToken: string | null = null; let globalTokenExpiresOn: Date | null = null; // Function to create SQL config with fresh access token, returns token and expiry -export async function createSqlConfig(): Promise<{ config: sql.config, token: string, expiresOn: Date }> { +export async function createSqlConfig(): Promise<{ config: sql.config, token: string | null, expiresOn: Date | null }> { + const trustServerCertificate = process.env.TRUST_SERVER_CERTIFICATE?.toLowerCase() === 'true'; + const connectionTimeout = process.env.CONNECTION_TIMEOUT ? parseInt(process.env.CONNECTION_TIMEOUT, 10) : 30; + + if (process.env.DB_USER && process.env.DB_PASSWORD) { + const config: sql.config = { + server: process.env.SERVER_NAME!, + database: process.env.DATABASE_NAME!, + user: process.env.DB_USER!, + password: process.env.DB_PASSWORD!, + options: { + encrypt: true, + trustServerCertificate + }, + connectionTimeout: connectionTimeout * 1000, + }; + return { config, token: null, expiresOn: null }; + } + const credential = new InteractiveBrowserCredential({ redirectUri: 'http://localhost' // disableAutomaticAuthentication : true }); const accessToken = await credential.getToken('https://database.windows.net/.default'); - const trustServerCertificate = process.env.TRUST_SERVER_CERTIFICATE?.toLowerCase() === 'true'; - const connectionTimeout = process.env.CONNECTION_TIMEOUT ? parseInt(process.env.CONNECTION_TIMEOUT, 10) : 30; - return { config: { server: process.env.SERVER_NAME!,