Skip to main content
Glama
EvilPhatBoi

MSSQL MCP Server

by EvilPhatBoi

MSSQL MCP Server

A Model Context Protocol (MCP) server that enables LLMs like Claude to interact with Microsoft SQL Server databases through natural language.

Features

  • 🔍 Query your SQL Server database using natural language

  • 📊 Read, insert, update, and delete data

  • 🏗️ Create and manage tables and indexes

  • 🔒 Secure connection handling with optional read-only mode

  • ⚡ Direct TypeScript execution with tsx - no build step required

Related MCP server: ExecuteAutomation Database Server

Quick Start

No installation needed! Just configure Claude Desktop:

Windows

Add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "cmd",
      "args": ["/c", "npx", "-y", "github:EvilPhatBoi/McpSqlServer"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password",
        "PORT": "1433",
        "ENCRYPT": "true",
        "TRUST_SERVER_CERTIFICATE": "false",
        "CONNECTION_TIMEOUT": "30",
        "READONLY": "false"
      }
    }
  }
}

macOS/Linux

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:EvilPhatBoi/McpSqlServer"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password",
        "PORT": "1433",
        "ENCRYPT": "true",
        "TRUST_SERVER_CERTIFICATE": "false",
        "CONNECTION_TIMEOUT": "30",
        "READONLY": "false",
        "DEBUG": "false"
      }
    }
  }
}

Note for legacy SQL Servers: If you experience SSL/TLS connection issues with older SQL Server versions, try:

  • "ENCRYPT": "false" to disable TLS/SSL encryption

  • "TRUST_SERVER_CERTIFICATE": "true" to trust self-signed certificates

  • "CONNECTION_TIMEOUT": "60" or higher for slower connections

  • "DEBUG": "true" to see detailed connection logs

Option 2: Clone and run locally

  1. Clone the repository:

git clone https://github.com/EvilPhatBoi/McpSqlServer.git
cd McpSqlServer
  1. Install dependencies:

npm install
  1. Create .env file:

cp .env.example .env
# Edit .env with your database credentials
  1. Configure Claude Desktop to point to your local installation:

{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "npx",
      "args": ["tsx", "C:/path/to/McpSqlServer/src/index.ts"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password"
      }
    }
  }
}

Environment Variables

Variable

Description

Default

SERVER_NAME

SQL Server hostname

Required

DATABASE_NAME

Database name

Required

SQL_USERNAME

SQL username

Required

SQL_PASSWORD

SQL password

Required

PORT

SQL Server port

1433

ENCRYPT

Enable TLS/SSL encryption

true

TRUST_SERVER_CERTIFICATE

Trust self-signed certificates

false

CONNECTION_TIMEOUT

Connection timeout in seconds

30

READONLY

Enable read-only mode

false

DEBUG

Enable debug logging

false

Usage Examples

Once configured, you can interact with your database using natural language in Claude:

  • "Show me all customers from New York"

  • "Create a table called products with columns for id, name, and price"

  • "Update the price of product with id 5 to 29.99"

  • "List all tables in the database"

  • "Describe the structure of the orders table"

Development

Running locally with tsx:

npm run start  # Run the server
npm run dev    # Run with watch mode

Type checking:

npm run typecheck

Security Notes

  • Never commit .env files with real credentials

  • Use read-only mode (READONLY=true) in production for safety

  • The server requires WHERE clauses for updates to prevent accidental mass updates

  • Consider using environment-specific credentials

Troubleshooting

Connection issues

  • Ensure your SQL Server allows remote connections

  • Check firewall rules for SQL Server port (default 1433, or your custom PORT setting)

  • Verify credentials and server name

  • Enable debug logging by setting DEBUG=true in your environment variables

SSL/TLS connection issues

  • For older SQL Server versions that don't support modern TLS, set ENCRYPT=false

  • If using self-signed certificates, set TRUST_SERVER_CERTIFICATE=true

  • For connection timeout issues, increase CONNECTION_TIMEOUT to 60 or higher

  • Check that your SQL Server accepts the TLS version your Node.js supports

Debug mode

To enable detailed logging for troubleshooting:

"env": {
  "DEBUG": "true",
  // ... other environment variables
}

Authentication errors

  • This server uses SQL authentication, not Windows authentication

  • Ensure SQL authentication is enabled on your server

  • Check that the SQL user has appropriate permissions

License

MIT

Available Tools

8 tools
create_indexC

Creates an index on a specified column or columns in an MSSQL Database table

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNameNoName of the schema containing the table
tableNameYesName of the table to create index on
indexNameYesName for the new index
columnsYesArray of column names to include in the index
isUniqueNoWhether the index should enforce uniqueness (default: false)
isClusteredNoWhether the index should be clustered (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates an index, implying a write operation, but lacks details on permissions required, whether the operation is reversible, potential impacts on database performance, or error handling. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that efficiently conveys the core action and target without unnecessary words. It is front-loaded with the key information, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a database index creation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., side effects, error conditions), usage context, and expected outcomes, making it incomplete for safe and effective tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., columns, indexName, isClustered). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for adequate but not enhanced coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('creates an index') and target ('on a specified column or columns in an MSSQL Database table'), making the purpose evident. However, it does not differentiate from sibling tools like create_table or update_data, which also modify database structures, leaving room for ambiguity in tool selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For instance, it does not mention prerequisites (e.g., table must exist), performance implications, or when to choose indexing over other database operations, leaving the agent without context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_tableC

Creates a new table in the MSSQL Database with the specified columns.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNameYesName of the table to create
columnsYesArray of column definitions (e.g., [{ name: 'id', type: 'INT PRIMARY KEY' }, ...])

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Creates' implies a write operation, it doesn't specify critical details like whether this requires admin permissions, if it's idempotent, what happens on conflicts, or error handling. For a database mutation tool, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a database table creation tool with no annotations and no output schema, the description is insufficient. It lacks details on permissions, error cases, return values, or how it interacts with sibling tools, leaving the agent with incomplete context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'specified columns' which aligns with the 'columns' parameter, but adds no additional meaning beyond what the schema provides. With 100% schema description coverage, the schema already documents both parameters thoroughly, so the description meets the baseline without enhancing parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Creates') and resource ('new table in the MSSQL Database'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_index' or 'insert_data', which would require more specific context about when to create a table versus other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., database permissions), when not to use it (e.g., if a table already exists), or refer to sibling tools like 'drop_table' for cleanup or 'list_table' for checking existing tables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_tableA

Describes the schema (columns and types) of a specified MSSQL Database table.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNameYesName of the table to describe

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states what the tool does but does not disclose behavioral traits such as whether it requires specific permissions, how it handles errors (e.g., invalid table names), or if it has rate limits. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose without unnecessary words. It directly communicates the tool's function, making it appropriately sized and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is minimal but adequate for a simple read operation. It covers the basic purpose but lacks details on behavioral aspects and output format, which are important for a tool with no structured data support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter 'tableName' with its description. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('describes') and resource ('schema of a specified MSSQL Database table'), specifying it includes columns and types. It distinguishes from siblings like list_table (which likely lists table names) and read_data (which reads actual data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when schema information is needed, but does not explicitly state when to use this tool versus alternatives like list_table or create_table. It provides basic context but lacks explicit guidance on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drop_tableC

Drops a table from the MSSQL Database.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNameYesName of the table to drop

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Drops') which implies a destructive mutation, but it doesn't elaborate on critical traits such as irreversibility, permission requirements, or potential side effects (e.g., data loss, dependencies). This is a significant gap for a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with zero waste—it states the action and resource efficiently. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (destructive database operation) and lack of annotations or output schema, the description is incomplete. It fails to address critical context like safety warnings, return values, or error conditions, which are essential for proper agent usage in this scenario.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'tableName' clearly documented in the schema. The description doesn't add any additional meaning or context beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Drops') and resource ('a table from the MSSQL Database'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_table' or 'describe_table' beyond the obvious verb difference, which keeps it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., table must exist), exclusions (e.g., irreversible nature), or comparisons to siblings like 'list_table' or 'update_data', leaving the agent with minimal context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_dataA

Inserts data into an MSSQL Database table. Supports both single record insertion and multiple record insertion using standard SQL INSERT with VALUES clause. FORMAT EXAMPLES: Single Record Insert: { "tableName": "Users", "data": { "name": "John Doe", "email": "john@example.com", "age": 30, "isActive": true, "createdDate": "2023-01-15" } } Multiple Records Insert: { "tableName": "Users", "data": [ { "name": "John Doe", "email": "john@example.com", "age": 30, "isActive": true, "createdDate": "2023-01-15" }, { "name": "Jane Smith", "email": "jane@example.com", "age": 25, "isActive": false, "createdDate": "2023-01-16" } ] } GENERATED SQL FORMAT:

  • Single: INSERT INTO table (col1, col2) VALUES (@param1, @param2)

  • Multiple: INSERT INTO table (col1, col2) VALUES (@param1, @param2), (@param3, @param4), ... IMPORTANT RULES:

  • For single record: Use a single object for the 'data' field

  • For multiple records: Use an array of objects for the 'data' field

  • All objects in array must have identical column names

  • Column names must match the actual database table columns exactly

  • Values should match the expected data types (string, number, boolean, date)

  • Use proper date format for date columns (YYYY-MM-DD or ISO format)

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNameYesName of the table to insert data into
dataYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing important behavioral traits: it explains the SQL generation format, specifies important rules about data structure consistency, column name matching, and data type requirements. It also clarifies the single vs. multiple record distinction. The main gap is lack of information about permissions, transaction behavior, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose statement, format examples, generated SQL format, important rules). While comprehensive, it could be more concise by eliminating some redundancy between the format examples and rules. Every sentence adds value, but the examples are quite detailed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description provides substantial context about behavior, parameters, and constraints. It covers the core functionality thoroughly but lacks information about return values, error conditions, or performance characteristics. Given the complexity of database operations, some additional context about what happens on success/failure would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value beyond the 50% schema coverage. While the schema only describes basic structure, the description provides detailed format examples for both single and multiple records, explains the 'data' field's dual nature with clear rules, specifies column name matching requirements, and provides data type guidance. This fully compensates for the schema's limited coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('inserts data'), target resource ('MSSQL Database table'), and scope ('supports both single record insertion and multiple record insertion'). It distinguishes from siblings like 'update_data' by focusing on insertion rather than modification, and from 'create_table' by operating on existing tables rather than creating new ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (inserting data into tables) and implicitly distinguishes it from alternatives like 'update_data' (for modifying existing records) and 'create_table' (for creating table structures). However, it doesn't explicitly state when NOT to use this tool or name specific alternative tools for related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tableC

Lists tables in an MSSQL Database, or list tables in specific schemas

ParametersJSON Schema
NameRequiredDescriptionDefault
parametersNoSchemas to filter by (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the filtering capability by schemas but doesn't describe what information is returned (e.g., table names, metadata, pagination), whether it requires specific permissions, or any rate limits. This leaves significant gaps for a tool that interacts with a database.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality. It could be slightly improved by specifying the return format, but it avoids redundancy and wastes no words, making it appropriately concise for a simple listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list of table names, structured data), potential errors, or behavioral traits like permissions needed. For a database tool with no structured safety hints, this leaves the agent under-informed about critical usage aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'parameters' documented as an optional array of strings for schema filtering. The description adds marginal value by clarifying this is for filtering by schemas, but doesn't provide examples, format details, or explain what happens when no schemas are specified beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Lists') and resource ('tables in an MSSQL Database'), making the purpose immediately understandable. It distinguishes between two modes (all tables vs. tables in specific schemas), though it doesn't explicitly differentiate from sibling tools like 'describe_table' or 'read_data' which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use 'list_table' over 'describe_table' (which might provide detailed metadata) or 'read_data' (which reads table contents), nor does it specify prerequisites like database connection requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_dataA

Executes a SELECT query on an MSSQL Database table. The query must start with SELECT and cannot contain any destructive SQL operations for security reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSQL SELECT query to execute (must start with SELECT and cannot contain destructive operations). Example: SELECT * FROM movies WHERE genre = 'comedy'

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it's a read-only operation (implied by SELECT-only), has security constraints (no destructive SQL), and targets MSSQL Database. However, it lacks details on permissions, error handling, result format, or rate limits, leaving gaps for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by a security constraint. Every word earns its place with no redundancy or fluff, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is moderately complete for a simple query tool. It covers the purpose and basic constraints but lacks details on return values, error cases, or advanced usage, which could be critical for an AI agent to handle effectively in a database context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'query' parameter thoroughly. The description adds minimal value beyond the schema by reiterating the SELECT and non-destructive constraints, but does not provide additional syntax, format, or usage nuances. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Executes a SELECT query') and target resource ('on an MSSQL Database table'), distinguishing it from siblings like create_table or insert_data. It precisely defines the tool's function without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (for SELECT queries only) and implicitly excludes destructive operations, but it does not explicitly name alternatives like list_table for metadata queries or when not to use it versus other read operations. It offers solid guidance but lacks explicit sibling comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dataB

Updates data in an MSSQL Database table using a WHERE clause. The WHERE clause must be provided for security.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNameYesName of the table to update
updatesYesKey-value pairs of columns to update. Example: { 'status': 'active', 'last_updated': '2025-01-01' }
whereClauseYesWHERE clause to identify which records to update. Example: "genre = 'comedy' AND created_date <= '2025-07-05'"

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the WHERE clause requirement 'for security,' which hints at a safety constraint, but lacks details on permissions needed, whether updates are reversible, potential side effects, or error handling. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that are front-loaded and to the point, avoiding unnecessary verbosity. However, it could be slightly more structured by explicitly separating the purpose from the security note for better clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a database update tool with no annotations and no output schema, the description is incomplete. It lacks information on return values, error conditions, transactional behavior, or how updates interact with existing data, making it inadequate for safe and effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain parameter interactions or provide further examples), resulting in a baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Updates data') and resource ('in an MSSQL Database table'), making the purpose understandable. However, it doesn't explicitly differentiate this from sibling tools like 'insert_data' or 'read_data' beyond the 'WHERE clause' mention, which is more of a technical requirement than a functional distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'using a WHERE clause' and noting it's 'for security,' which suggests this tool should be used for targeted updates rather than bulk operations. However, it doesn't explicitly state when to use this versus alternatives like 'insert_data' or provide exclusions, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedcreate_index
    • First observedcreate_table
    • First observeddescribe_table
    • First observeddrop_table
    • First observedinsert_data
    • First observedlist_table
    • First observedread_data
    • First observedupdate_data

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. create_index, create_table, describe_table, drop_table, insert_data, list_table, read_data, and update_data each target specific database operations with no overlap in functionality. The descriptions clearly differentiate between schema operations, data manipulation, and querying.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case throughout. The naming convention is perfectly uniform: create_index, create_table, describe_table, drop_table, insert_data, list_table, read_data, and update_data all maintain the same structure and style.

Tool Count5/5

With 8 tools, this server is well-scoped for MSSQL database operations. Each tool earns its place by covering essential database tasks: schema management (create/drop/describe/list tables, create index) and data operations (insert/read/update). The count is appropriate for the domain without being overwhelming.

Completeness4/5

The tool surface covers most essential MSSQL operations well, including table lifecycle management and core CRUD operations. However, there are minor gaps: no delete_data tool (only update_data with WHERE clause), no transaction management tools, and no stored procedure or view operations. Agents can work around these gaps using existing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • GibsonAI MCP server: manage your databases with natural language

  • The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.

  • The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables secure interaction with Microsoft SQL Server databases, allowing AI assistants to list tables, read data, and execute SQL queries through a controlled interface.
    1
    391
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that enables LLMs like Claude to interact with SQLite and SQL Server databases, allowing for schema inspection and SQL query execution.
    544 npm
    380
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that allows Large Language Models like Claude to execute SQL queries, explore database schemas, and maintain persistent connections to SQL Server databases.
    -
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants (Cursor, Windsurf, Claude Code) to interact with Microsoft SQL Server databases by providing connectivity through environment-configurable connections.
    8
    537 npm
    8
    MIT