Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Tsql Mcp Server

    SQL Server MCP Server - Provides SQL Server database access via Model Context Protocol

    8 stars
    C#
    Updated Oct 19, 2025

    Table of Contents

    • Features
    • Getting Started
    • Prerequisites
    • Installation
    • Option 1: Docker (Recommended)
    • Option 2: Install as a .NET Tool
    • Option 2: Build from Source
    • Running the Server
    • Using the .NET Tool
    • Using Source Code
    • MCP Server Configuration
    • If Installed as a .NET Tool
    • If Built from Source
    • Using Docker
    • Using Environment Variables for Sensitive Information
    • Command Line Options
    • Available MCP Tools
    • Query Tools
    • Schema Tools (Token-Optimized)
    • Database Resources
    • Security Considerations
    • Example Usage
    • Querying Data
    • Accessing Database Resources
    • License

    Table of Contents

    • Features
    • Getting Started
    • Prerequisites
    • Installation
    • Option 1: Docker (Recommended)
    • Option 2: Install as a .NET Tool
    • Option 2: Build from Source
    • Running the Server
    • Using the .NET Tool
    • Using Source Code
    • MCP Server Configuration
    • If Installed as a .NET Tool
    • If Built from Source
    • Using Docker
    • Using Environment Variables for Sensitive Information
    • Command Line Options
    • Available MCP Tools
    • Query Tools
    • Schema Tools (Token-Optimized)
    • Database Resources
    • Security Considerations
    • Example Usage
    • Querying Data
    • Accessing Database Resources
    • License

    Documentation

    SQL Server MCP Server

    A Model Context Protocol (MCP) server that provides tools for interacting with SQL Server databases. This server allows Large Language Models (LLMs) to query and inspect SQL Server databases through a standardized protocol.

    Features

    • Database Querying: Execute SQL queries and retrieve results
    • Schema Inspection: List tables, views, stored procedures, and examine table schemas
    • SQL Injection Prevention: Built-in validation to prevent SQL injection attacks
    • Resource Caching: Metadata caching for improved performance

    Getting Started

    Prerequisites

    • .NET 10.0 SDK or later (or Docker)
    • SQL Server instance (local or remote)

    Installation

    Option 1: Docker (Recommended)

    Run the server using Docker without installing .NET:

    bash
    # Build the image
    docker build -t tsql-mcp-server .
    
    # Run with connection string
    docker run -i tsql-mcp-server --dsn "Server=host.docker.internal;Database=mydb;User Id=sa;Password=mypassword;TrustServerCertificate=True;"
    
    # Run in read-only mode
    docker run -i tsql-mcp-server --dsn "..." --read-only
    
    # Run with environment variable
    docker run -i -e SQL_CONNECTION="Server=..." tsql-mcp-server --env-var SQL_CONNECTION

    Notes:

    • The -i flag is required for stdio transport
    • Use host.docker.internal to connect to SQL Server on your host machine
    • For WSL2 users: if host.docker.internal doesn't resolve, use --network host and localhost instead

    Option 2: Install as a .NET Tool

    Install globally as a .NET tool:

    bash
    dotnet tool install --global tsql-mcp-server

    To update to the latest version:

    bash
    dotnet tool update --global tsql-mcp-server

    Option 2: Build from Source

    bash
    # Clone the repository
    git clone https://github.com/Popplywop/tsql-mcp-server
    cd tsql-mcp-server
    
    # Build the project
    dotnet build

    Running the Server

    Using the .NET Tool

    If installed as a .NET global tool:

    bash
    # Using a direct connection string
    tsql-mcp-server --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
    
    # Using an environment variable
    tsql-mcp-server --env-var "SQL_CONNECTION_STRING"

    Using Source Code

    If building from source:

    bash
    # Using a direct connection string
    dotnet run --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
    
    # Using an environment variable
    dotnet run --env-var "SQL_CONNECTION_STRING"

    MCP Server Configuration

    To use this server with Claude or other LLMs that support the Model Context Protocol, you'll need to configure it in your MCP configuration file.

    If Installed as a .NET Tool

    json
    {
      "servers": [
        {
          "name": "SqlServerMcp",
          "command": "tsql-mcp-server",
          "args": [
            "--dsn",
            "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
          ]
        }
      ]
    }

    If Built from Source

    json
    {
      "servers": [
        {
          "name": "SqlServerMcp",
          "command": "path/to/tsql-mcp-server.exe",
          "args": [
            "--dsn",
            "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
          ]
        }
      ]
    }

    Replace the connection string with your actual values. This configuration can be used with Claude's MCP integration or other LLM platforms that support the Model Context Protocol.

    Using Docker

    json
    {
      "mcpServers": {
        "sqlserver": {
          "command": "docker",
          "args": [
            "run", "-i", "--rm", "tsql-mcp-server",
            "--dsn", "Server=host.docker.internal;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
          ]
        }
      }
    }

    For read-only mode, add "--read-only" to the args array.

    Using Environment Variables for Sensitive Information

    For better security, you can use environment variables for your connection string:

    json
    {
      "servers": [
        {
          "name": "SqlServerMcp",
          "command": "tsql-mcp-server",
          "args": [
            "--env-var",
            "SQL_CONNECTION_STRING"
          ]
        }
      ]
    }

    Command Line Options

    OptionShortDescription
    --dsn-dSQL Server connection string
    --env-var-eEnvironment variable name containing the connection string
    --read-only-rRun in read-only mode (blocks INSERT, UPDATE, DELETE, etc.)

    Available MCP Tools

    Query Tools

    • ExecuteQuery: Executes a SQL query against the database and returns the results
    • Parameters:
    • query: The SQL query to execute
    • commandTimeout: Optional command timeout in seconds
    • maxRows: Optional maximum number of rows to return
    • ExecuteStoredProcedure: Executes a stored procedure with optional parameters
    • Parameters:
    • schema: The schema name (e.g., 'dbo')
    • procedureName: The stored procedure name
    • parametersJson: Optional JSON object of parameters (e.g., {"@param1": "value"})
    • commandTimeout: Optional command timeout in seconds
    • maxRows: Optional maximum number of rows to return

    Schema Tools (Token-Optimized)

    Lightweight tools for exploring database structure without fetching data:

    • GetTableColumns: Get column names and types for a table
    • GetTableRowCount: Get row count for a table
    • ListTables: List all tables in a schema (with optional row counts)
    • GetPrimaryKey: Get primary key columns for a table
    • GetSampleData: Get a small sample of data (max 20 rows)

    Database Resources

    The server provides database schema information through a resource-based approach. Resources are accessed via URIs and are lazy-loaded with caching for improved performance.

    Resource URIDescriptionLoading Behavior
    sqlserver://schemas/{schema_name}Information about a specific schemaLoaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/tablesList of tables in a schemaLoaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/viewsList of views in a schemaLoaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/proceduresList of stored procedures in a schemaLoaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/tables/{table_name}Detailed information about a specific tableLoaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/views/{view_name}View columns (definition excluded)Loaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/views/{view_name}/definitionView SQL definitionLoaded on request
    sqlserver://schemas/{schema_name}/procedures/{procedure_name}Procedure parameters (definition excluded)Loaded on first request, cached for 10 minutes
    sqlserver://schemas/{schema_name}/procedures/{procedure_name}/definitionProcedure SQL definitionLoaded on request

    Note: View and procedure definitions are excluded by default to reduce token usage. Use the /definition endpoint when you need the SQL source code.

    Resources are automatically discovered by the MCP client and can be accessed directly without requiring specific tool calls.

    Security Considerations

    • Use a SQL Server account with appropriate permissions (principle of least privilege)
    • Store connection strings securely (not in source control)
    • Consider using environment variables for connection strings
    • Enable TLS/SSL for database connections
    • SQL injection validation prevents dangerous operations and protects against common attack vectors

    Example Usage

    Querying Data

    code
    ExecuteQuery:
      query: "SELECT TOP 10 * FROM MyTable"
      maxRows: 100

    Accessing Database Resources

    Resources can be accessed directly via their URIs:

    code
    # List all schemas
    GET sqlserver://schemas
    
    # Get information about a specific schema
    GET sqlserver://schemas/dbo
    
    # List all tables in a schema
    GET sqlserver://schemas/dbo/tables
    
    # Get detailed information about a specific table
    GET sqlserver://schemas/dbo/tables/Customers

    The resource-based approach provides a RESTful way to explore and interact with the database schema.

    License

    This project is licensed under the MIT License - see the LICENSE.md file for details.

    The MIT License is a permissive license that allows for reuse with minimal restrictions. It permits anyone to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, subject to the condition that the original copyright notice and permission notice appear in all copies.

    Similar MCP

    Based on tags & features

    • ES

      Esp Rainmaker Mcp

      Python·
      9
    • PE

      Personalizationmcp

      Python·
      12
    • FA

      Fal Mcp Server

      Python·
      8
    • ME

      Metmuseum Mcp

      TypeScript·
      14

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • ES

      Esp Rainmaker Mcp

      Python·
      9
    • PE

      Personalizationmcp

      Python·
      12
    • FA

      Fal Mcp Server

      Python·
      8
    • ME

      Metmuseum Mcp

      TypeScript·
      14

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k