{"id":43033,"library":"mcp-mssql-server","title":"MCP MSSQL Server","description":"A Model Context Protocol (MCP) server for interacting with MS SQL Server databases. Version 1.0.2. It provides a standardized interface (tools: execute_sql_query, list_tables, describe_table) for AI models to perform database operations via JSON-RPC. Supports both stdio and HTTP transport modes. Uses @modelcontextprotocol/sdk ^1.13.0, mssql ^11.0.1, dotenv for config, and winston for logging. Key differentiators: focused on MSSQL, full MCP spec compliance, parameterized queries, and simple setup.","status":"active","version":"1.0.2","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","mcp","sql","mssql","database"],"install":[{"cmd":"npm install mcp-mssql-server","lang":"bash","label":"npm"},{"cmd":"yarn add mcp-mssql-server","lang":"bash","label":"yarn"},{"cmd":"pnpm add mcp-mssql-server","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required to implement the MCP protocol and server transport.","package":"@modelcontextprotocol/sdk","optional":false},{"reason":"Microsoft SQL Server client for Node.js. Used to connect and query the database.","package":"mssql","optional":false},{"reason":"Used for HTTP transport mode to serve the MCP server over HTTP.","package":"express","optional":true},{"reason":"Loads environment variables from .env file for configuration.","package":"dotenv","optional":false},{"reason":"Logging framework used for structured logging to files and console.","package":"winston","optional":false}],"imports":[{"note":"The SDK exports Server from a specific subpath. Direct import from root may not work.","wrong":"import { Server } from '@modelcontextprotocol/sdk'","symbol":"Server","correct":"import { Server } from '@modelcontextprotocol/sdk/server/index.js'"},{"note":"Package is ESM-only. CommonJS require will fail unless using dynamic import.","wrong":"const sql = require('mssql')","symbol":"mssql","correct":"import sql from 'mssql'"},{"note":"For ESM, use import 'dotenv/config' to load .env automatically. The object export is also available.","wrong":"import dotenv from 'dotenv'; dotenv.config()","symbol":"dotenv","correct":"import 'dotenv/config'"}],"quickstart":{"code":"import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport sql from 'mssql';\nimport 'dotenv/config';\n\nasync function main() {\n  const server = new Server({\n    name: 'mcp-mssql-server',\n    version: '1.0.2'\n  }, {\n    capabilities: { tools: {} }\n  });\n\n  const pool = await sql.connect({\n    server: process.env.DB_SERVER,\n    user: process.env.DB_USER,\n    password: process.env.DB_PASSWORD,\n    database: process.env.DB_DATABASE_NAME,\n    options: { encrypt: true, trustServerCertificate: true }\n  });\n\n  server.setRequestHandler('tools/list', async () => ({\n    tools: [\n      {\n        name: 'execute_sql_query',\n        description: 'Execute a SQL query',\n        inputSchema: {\n          type: 'object',\n          properties: {\n            query: { type: 'string' },\n            parameters: {\n              type: 'array',\n              items: {\n                type: 'object',\n                properties: {\n                  name: { type: 'string' },\n                  type: { type: 'string' },\n                  value: {}\n                }\n              }\n            }\n          },\n          required: ['query']\n        }\n      },\n      {\n        name: 'list_tables',\n        description: 'List all tables',\n        inputSchema: { type: 'object', properties: {} }\n      },\n      {\n        name: 'describe_table',\n        description: 'Describe a table',\n        inputSchema: {\n          type: 'object',\n          properties: {\n            table_name: { type: 'string' }\n          },\n          required: ['table_name']\n        }\n      }\n    ]\n  }));\n\n  server.setRequestHandler('tools/call', async (request) => {\n    const { name, arguments: args } = request.params;\n    if (name === 'execute_sql_query') {\n      const result = await pool.request().query(args.query);\n      return { content: [{ type: 'text', text: JSON.stringify(result.recordset) }] };\n    } else if (name === 'list_tables') {\n      const result = await pool.request().query(\"SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'\");\n      return { content: [{ type: 'text', text: JSON.stringify(result.recordset) }] };\n    } else if (name === 'describe_table') {\n      const result = await pool.request()\n        .input('table_name', sql.NVarChar, args.table_name)\n        .query(\"SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @table_name\");\n      return { content: [{ type: 'text', text: JSON.stringify(result.recordset) }] };\n    }\n    throw new Error(`Unknown tool: ${name}`);\n  });\n\n  const transport = new StdioServerTransport();\n  await server.connect(transport);\n}\n\nmain().catch(console.error);","lang":"typescript","description":"Sets up an MCP server for MSSQL, connecting to the database and registering tools for executing queries, listing tables, and describing schemas."},"warnings":[{"fix":"Use import syntax or enable ESM in your project.","message":"The package uses ES modules (type: module in package.json). require() will fail.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"If using Express directly, refer to Express 5 migration guide.","message":"Express 5.x is used. Some APIs changed from Express 4 (e.g., app.query, async error handling).","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Set options: { encrypt: true/false, trustServerCertificate: true/false } as needed.","message":"The mssql package defaults to 'tedious' driver. Ensure the server is reachable and TLS settings are correct.","severity":"gotcha","affected_versions":"*"},{"fix":"Define all required environment variables in your environment or .env file.","message":"The server expects environment variables DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE_NAME. Missing them causes silent failure.","severity":"gotcha","affected_versions":"*"},{"fix":"Check for newer protocol versions and update accordingly.","message":"The SDK may deprecate old protocol versions. The package uses '2024-11-05'.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.0.2':18 '1.13.0':52 '11.0.1':54 'ai':33 'complianc':70 'config':57 'context':6 'databas':16,37,80 'describ':30 'differenti':63 'dotenv':55 'execut':25 'focus':64 'full':67 'http':47 'interact':11 'interfac':23 'javascript':76 'json':41 'json-rpc':40 'key':62 'list':28 'log':61 'mcp':1,8,68,77 'mode':49 'model':5,34 'modelcontextprotocol/sdk':51 'ms':13 'mssql':2,53,66,79 'oper':38 'parameter':71 'perform':36 'protocol':7 'provid':20 'queri':27,72 'rpc':42 'server':3,9,15 'setup':75 'simpl':74 'spec':69 'sql':14,26,78 'standard':22 'stdio':45 'support':43 'tabl':29,31 'tool':24 'transport':48 'use':50 'version':17 'via':39 'winston':59","created_at":"2026-06-05T16:57:51.551730+00:00","updated_at":"2026-06-05T16:57:51.551730+00:00","problems":[{"fix":"Run 'npm install @modelcontextprotocol/sdk' and ensure import path is correct: '@modelcontextprotocol/sdk/server/index.js'","cause":"Missing dependency or incorrect import path when using MCP SDK.","error":"TypeError: Cannot find module '@modelcontextprotocol/sdk'"},{"fix":"Check DB_SERVER, DB_USER, DB_PASSWORD, and ensure firewall allows port 1433. Also check options.encrypt and options.trustServerCertificate.","cause":"MSSQL server is not reachable or credentials are wrong.","error":"ConnectionError: Failed to connect to SERVER:1433 - Could not connect (sequence)"},{"fix":"Use dynamic import() or switch to import syntax in an ESM file.","cause":"The package is ESM-only; using CommonJS require() in an ESM context.","error":"ReferenceError: require is not defined"},{"fix":"Ensure parameters in the request match exactly with SQL variable names. Use mssql's input() method correctly.","cause":"SQL parameter name mismatch or missing parameter declaration.","error":"RequestError: Incorrect syntax near '@userId'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":null,"npm":"mcp-mssql-server","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}