Skip to main content
Glama
Benrishty

sql-assistant-mcp

by Benrishty

sql-assistant-mcp

License: MIT TypeScript Node.js

A Model Context Protocol (MCP) server for SQL Server / Azure SQL — query, monitor, and analyze databases directly from Claude. It is the data plane for the sql-assistant-agent lineage / reconciliation copilot.

Fork notice. Derived from @fabriciofs/mcp-sql-server (MIT). The headline addition is Microsoft Entra ID authentication; all original tools are retained. See LICENSE for attribution.

Features

  • Query ExecutionSELECT/WITH queries with parameterized inputs (read-only enforced)

  • Schema Exploration — tables, columns, procedures, indexes

  • Database Monitoring — active queries, blocking, wait stats, connections, sizes

  • Performance Analysis — missing/unused/duplicate indexes, fragmentation, statistics

  • Microsoft Entra ID authaz login, service principal, managed identity, access token, or Entra password

  • Write OperationsINSERT/UPDATE/DELETE, registered only when READONLY=false

Related MCP server: MCP SQL Server

Installation

This server is run from a local build (not published to npm).

git clone <your-repo-url> sql-assistant-mcp
cd sql-assistant-mcp
npm install        # runs the build via the prepare script
npm run build      # (re)compile to build/

Authentication modes

Set SQL_AUTH_TYPE (default sql). SQL_SERVER + SQL_DATABASE are always required.

SQL_AUTH_TYPE

What it does

Required vars (besides server/database)

sql

Classic SQL login (original behavior)

SQL_USER, SQL_PASSWORD

azure-default

Entra ID via DefaultAzureCredential (az login / env / workload / managed identity)

— (optional SQL_AZURE_CLIENT_ID for a user-assigned identity)

azure-service-principal

Entra app registration

SQL_AZURE_TENANT_ID, SQL_AZURE_CLIENT_ID, SQL_AZURE_CLIENT_SECRET

azure-password

Entra username + password (non-MFA only)

SQL_USER, SQL_PASSWORD, SQL_AZURE_CLIENT_ID, SQL_AZURE_TENANT_ID

azure-access-token

Pre-fetched Entra access token

SQL_ACCESS_TOKEN

azure-msi

Azure Managed Identity

— (optional SQL_AZURE_CLIENT_ID for a user-assigned identity)

The Entra modes acquire tokens through @azure/identity. Azure SQL requires encryption — keep SQL_ENCRYPT=true. A SQL_CONNECTION_URL is shorthand for sql auth.

{
  "mcpServers": {
    "dash2": {
      "command": "node",
      "args": ["/abs/path/to/sql-assistant-mcp/build/index.js"],
      "env": {
        "SQL_SERVER": "your-server.database.windows.net",
        "SQL_DATABASE": "Dash2",
        "SQL_AUTH_TYPE": "azure-default",
        "SQL_ENCRYPT": "true",
        "READONLY": "true"
      }
    }
  }
}

Run az login once (granting your Entra user access to the DB); the server picks up the credential automatically.

Service-principal example

{
  "env": {
    "SQL_SERVER": "your-server.database.windows.net",
    "SQL_DATABASE": "Dash2",
    "SQL_AUTH_TYPE": "azure-service-principal",
    "SQL_AZURE_TENANT_ID": "<tenant-guid>",
    "SQL_AZURE_CLIENT_ID": "<app-guid>",
    "SQL_AZURE_CLIENT_SECRET": "<secret>",
    "READONLY": "true"
  }
}

SQL login (original behavior)

{
  "env": {
    "SQL_SERVER": "localhost",
    "SQL_DATABASE": "mydb",
    "SQL_USER": "sa",
    "SQL_PASSWORD": "yourpassword",
    "READONLY": "true"
  }
}

See .env.example for the full variable reference.

Other settings

Variable

Default

Description

READONLY

required

true = read-only (SELECT/WITH); false also registers write tools

SQL_PORT

1433

Server port

SQL_ENCRYPT

true

Encrypt connection (required for Azure SQL)

SQL_TRUST_CERT

false

Trust self-signed certs (dev only)

QUERY_TIMEOUT

30000

Query timeout ms (max 120000)

MAX_ROWS

1000

Max rows returned (max 5000)

POOL_MIN / POOL_MAX

2 / 10

Connection pool bounds

LOG_LEVEL

info

debug | info | warn | error

Available Tools

Query

Tool

Description

sql_execute

Execute SELECT/WITH queries with parameterized inputs

Schema

Tool

Description

schema_list_tables

List tables and views

schema_describe_table

Columns, indexes, foreign keys for a table

schema_list_columns

Search columns across tables

schema_list_procedures

List stored procedures

schema_list_indexes

List indexes with usage stats

Monitor

Tool

Description

monitor_active_queries

Currently running queries

monitor_blocking

Blocking sessions and lock chains

monitor_wait_stats

Wait statistics

monitor_database_size

Size and file usage

monitor_connections

Active connections

monitor_performance_counters

Performance counters

Analysis

Tool

Description

analyze_query

Execution plan and statistics

analyze_suggest_indexes

Suggested missing indexes

analyze_unused_indexes

Unused indexes

analyze_duplicate_indexes

Duplicate/overlapping indexes

analyze_fragmentation

Index fragmentation

analyze_statistics

Stale statistics

Write (only when READONLY=false)

Tool

Description

sql_insert

Insert a row

sql_update

Update rows (WHERE required)

sql_delete

Delete rows (WHERE required)

Security Considerations

  • Keep READONLY=true unless writes are explicitly required — the read-only validator blocks anything that isn't a SELECT/WITH, plus stacked-query and SELECT INTO bypasses.

  • Prefer Entra ID auth over SQL logins; avoid embedding secrets where you can use azure-default / managed identity.

  • Grant the principal minimal permissions (read-only DB role for this copilot).

Requirements

  • Node.js >= 20

  • SQL Server 2016+ or Azure SQL Database / Managed Instance

Development

npm install        # install + build
npm run build      # compile
npm run dev        # watch compile
npm run typecheck  # tsc --noEmit
npm test           # vitest
npm run inspector  # MCP Inspector

License

MIT — see LICENSE. Original work © fabriciofs; modifications © Benrishty.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Benrishty/sql-assistant-mcp'

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