Skip to main content
Glama
bymcs

MS SQL Server MCP Server

by bymcs

MS SQL Server MCP Server v2.3.2

๐Ÿš€ Model Context Protocol (MCP) server for Microsoft SQL Server - compatible with Claude Desktop, Cursor, Windsurf and VS Code.

CI npm version License: MIT

Standards Alignment

๐Ÿš€ Quick Start

1. Install

npm install -g mssql-mcp

2. Configure IDE

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "mssql": {
      "command": "npx",
      "args": ["-y", "mssql-mcp@latest"],
      "env": {
        "DB_SERVER": "your-server.com",
        "DB_DATABASE": "your-database",
        "DB_USER": "your-username",
        "DB_PASSWORD": "your-password",
        "DB_ENCRYPT": "true",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}

Cursor/Windsurf/VS Code (.vscode/mcp.json):

{
  "servers": {
    "mssql": {
      "command": "npx",
      "args": ["-y", "mssql-mcp@latest"],
      "env": {
        "DB_SERVER": "your-server.com",
        "DB_DATABASE": "your-database",
        "DB_USER": "your-username",
        "DB_PASSWORD": "your-password",
        "DB_ENCRYPT": "true",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}

HTTP transport (remote/hosted scenarios):

{
  "servers": {
    "mssql": {
      "type": "http",
      "url": "http://127.0.0.1:3001",
      "env": {}
    }
  }
}

Replace with your actual database credentials. Credentials are read from the server environment only โ€” never passed as tool parameters.

๏ฟฝ๏ฟฝ๏ธ Tool Catalog

Primary tools (use these)

Tool

Read-only

Description

mssql_connect_database

No

Connect using env variables. Idempotent.

mssql_disconnect_database

No

Close connection. Idempotent.

mssql_connection_status

โœ…

Connection state and pool metrics

mssql_run_sql_query

โš ๏ธ No

Execute arbitrary SQL. May mutate data.

mssql_list_schema_objects

โœ…

List tables/views/procedures/functions with pagination

mssql_describe_table_columns

โœ…

Column definitions for a table

mssql_read_table_rows

โœ…

Paginated rows with projection and safe WHERE

mssql_execute_stored_procedure

โš ๏ธ No

Execute a stored procedure

mssql_list_databases

โœ…

List all databases on the instance

All data tools accept a response_format parameter ("json" | "markdown", default "json"). Use "markdown" to get human-readable table output.

Deprecated aliases (still work for backward compatibility)

Old name

Use instead

connect_database

mssql_connect_database

disconnect_database

mssql_disconnect_database

connection_status

mssql_connection_status

execute_query

mssql_run_sql_query

run_sql_query

mssql_run_sql_query

get_schema

mssql_list_schema_objects

list_schema_objects

mssql_list_schema_objects

describe_table

mssql_describe_table_columns

describe_table_columns

mssql_describe_table_columns

get_table_data

mssql_read_table_rows

read_table_rows

mssql_read_table_rows

execute_procedure

mssql_execute_stored_procedure

execute_stored_procedure

mssql_execute_stored_procedure

list_databases

mssql_list_databases

๐ŸšŒ Transport Modes

Mode

Use when

stdio (default)

Local IDE integration (Claude Desktop, Cursor, VS Code)

http

Remote/hosted deployment, testing with MCP Inspector

# stdio (default)
node dist/src/index.js

# HTTP on 127.0.0.1:3001
MCP_TRANSPORT=http node dist/src/index.js

# Custom HTTP host/port
MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=8080 node dist/src/index.js

๐Ÿ”ง Environment Variables

Database connection

Variable

Required

Default

Description

DB_SERVER

โœ…

โ€”

SQL Server hostname or IP

DB_DATABASE

โŒ

โ€”

Database name

DB_USER

โŒ

โ€”

Login username

DB_PASSWORD

โŒ

โ€”

Login password

DB_PORT

โŒ

1433

TCP port

DB_ENCRYPT

โŒ

true

Enable TLS (required for Azure SQL)

DB_TRUST_SERVER_CERTIFICATE

โŒ

false

Trust self-signed certs

DB_CONNECTION_TIMEOUT

โŒ

30000

Connection timeout ms

DB_REQUEST_TIMEOUT

โŒ

30000

Query timeout ms

Transport

Variable

Default

Description

MCP_TRANSPORT

stdio

stdio or http

MCP_HOST

127.0.0.1

HTTP bind address

MCP_PORT

3001

HTTP port

๐Ÿ”’ Security Model

  • No credential parameters: All connection settings come from environment variables only. Tool inputs cannot override connection config.

  • Identifier validation: Schema, table, and procedure names are validated against a safe identifier pattern before interpolation into SQL.

  • Parameterized queries: All user-supplied values (WHERE clause values, column values) must be passed as named parameters via @paramName โ€” never embedded in query strings.

  • Origin validation: HTTP transport validates Origin header and only allows localhost by default.

  • SQL risk labeling: run_sql_query and execute_stored_procedure are explicitly labeled as non-read-only and open-world.

โš ๏ธ SQL Risk Notes

run_sql_query accepts arbitrary SQL including DDL and DML. To minimize risk:

  • Use a least-privilege SQL login (SELECT-only where possible)

  • Never run the server with a sysadmin or sa account

  • Consider network firewall rules to limit what the server can reach

๐Ÿ“„ Pagination

All list tools return a pagination object:

{
  "count": 20,
  "limit": 20,
  "offset": 0,
  "has_more": true,
  "next_offset": 20,
  "total_count": 150
}

Default page size: 20 rows. Maximum: 200 rows.

Results are also truncated if the serialized payload exceeds 100KB, with a truncation_message explaining how many rows were dropped.

๐Ÿ—๏ธ Architecture

src/
  index.ts          โ† bootstrap (env, transport selection)
  server.ts         โ† createServer() factory
  constants.ts      โ† limits, defaults, protocol strings
  config.ts         โ† env parsing
  types.ts          โ† shared TypeScript interfaces
  db/
    connection.ts   โ† connection pool singleton
    validators.ts   โ† SQL identifier validation
    query-builders.ts โ† safe parameterized query construction
  tools/            โ† one file per tool group
  resources/        โ† MCP resource handlers
  transports/       โ† stdio and HTTP transports
  utils/
    errors.ts       โ† error normalization helpers
    format.ts       โ† JSON formatting, payload truncation
    markdown.ts     โ† markdown table/list rendering helpers
    pagination.ts   โ† pagination metadata helpers

๐Ÿงช Inspector Smoke Test

npx @modelcontextprotocol/inspector

Expected:

  • stdio server connects

  • Tool list renders with all tools

  • mssql_connection_status returns JSON without a connection

  • mssql_connect_database works when env variables are set

๐Ÿ”จ Development

npm install
npm run typecheck   # type check only
npm run build       # compile TypeScript
npm test            # run unit tests
npm run ci          # typecheck + build + test

License

MIT ยฉ BYMCS

-
security - not tested
A
license - permissive license
-
quality - not tested

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

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