MSSQL MCP Reader
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MSSQL MCP Readerlist all tables in dbo schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MSSQL MCP Reader
Read-only Model Context Protocol server for Microsoft SQL Server.
Safe schema discovery, profiling, and querying with zero risk of data modification. Ideal for analysts, auditors, and anyone who needs database exploration without write access.
Architecture
This package is a thin wrapper around @connorbritain/mssql-mcp-core, which contains all shared logic, tools, and governance features. The wrapper selects the "reader" tier and delegates to the core's startMcpServer() function. This design enables:
Hard separation at the package level — regulated enterprises can guarantee that certain builds physically cannot perform destructive operations
Independent versioning — each tier can be published separately with its own release cycle
Clear audit trail —
"we only allow mssql-mcp-reader in prod"is a compile-time guarantee
The core library handles all SQL Server connections, tool dispatch, audit logging, and governance enforcement.
Related MCP server: mcp-sqlserver-readonly
Package Tiers
Package | npm | Tools | Use Case |
mssql-mcp-reader (this) |
| 14 read-only | Analysts, auditors, safe exploration |
| 17 (reader + data ops) | Data engineers, ETL developers | |
| 20 (all tools) | DBAs, full admin access |
Config Builder — Visual wizard to generate your mcp_config.json and environments.json files.
Tools Included
Category | Tools |
Discovery |
|
Profiling |
|
Querying |
|
Scripts |
|
Operations |
|
Not included: insert_data, update_data, delete_data, create_table, create_index, drop_table
Quick Start
Install
npm install -g @connorbritain/mssql-mcp-reader@latestMCP Client Configuration
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["@connorbritain/mssql-mcp-reader@latest"],
"env": {
"SERVER_NAME": "127.0.0.1",
"DATABASE_NAME": "mydb",
"SQL_AUTH_MODE": "sql",
"SQL_USERNAME": "readonly_user",
"SQL_PASSWORD": "YourPassword123"
}
}
}
}Configuration
Variable | Required | Notes |
| Yes | SQL Server hostname/IP |
| Yes | Target database |
|
| |
| Required for | |
| Path to multi-environment JSON config | |
| Path to named SQL scripts directory | |
| Custom audit log path |
Features
All packages in the MSSQL MCP family share:
Multi-environment support - Named database environments (prod, staging, dev) with per-environment policies
Governance controls -
allowedTools,deniedTools,allowedSchemas,deniedSchemas,requireApprovalAudit logging - JSON Lines logs with session IDs and auto-redaction
Secret management -
${secret:NAME}placeholders for secure credential handlingNamed SQL scripts - Pre-approved parameterized queries with governance controls
Documentation
Full documentation, configuration examples, and governance details are available in the main repository:
MSSQL MCP Server Documentation
License
MIT License. See LICENSE for details.
Repository: https://github.com/ConnorBritain/mssql-mcp-reader Issues: https://github.com/ConnorBritain/mssql-mcp-reader/issues npm: https://www.npmjs.com/package/@connorbritain/mssql-mcp-reader
Available Tools
14 toolsdescribe_tableB
Describes the schema (columns and types) of a specified MSSQL Database table. For server-level access environments, you can specify a database to target.
| Name | Required | Description | Default |
|---|---|---|---|
| tableName | Yes | Name of the table to describe (can include schema: 'dbo.TableName') | |
| database | No | Optional: Target database name for server-level access environments. | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states it describes schema but does not explicitly confirm it is read-only, mention potential side effects, permission requirements, or limitations. The agent cannot infer safety or side effects from the description alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The main purpose is front-loaded, and additional context is provided efficiently. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify the output format (e.g., list of column names and types, including constraints or primary keys?). It only mentions 'columns and types' vaguely, leaving the agent uncertain about what exactly is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. The description adds minimal value beyond the schema, only noting the MSSQL context and server-level access scenario. This meets the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Describes the schema (columns and types) of a specified MSSQL Database table.' It uses a specific verb-resource pair and distinguishes itself from sibling tools like list_tables or profile_table by focusing on schema description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions an optional database parameter but provides no guidance on when to use this tool versus others (e.g., profile_table, inspect_dependencies). It lacks alternatives or exclusions, leaving the agent uncertain about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_queryA
Generates an estimated execution plan (SHOWPLAN_XML) for a SQL query without executing it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SQL statement to analyze (typically SELECT/UPDATE/INSERT/DELETE). | |
| environment | No | Optional environment name to target (prod, staging, etc). | |
| includePlanXml | No | If true (default), returns the raw SHOWPLAN XML. Set false for summary only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the critical safety trait of not executing the query, but fails to disclose permissions required (e.g., SHOWPLAN privilege), potential error conditions, or return format details beyond what is in the parameter schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main purpose and key behavior (no execution), with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description sufficiently covers the core function and safety aspect. However, it lacks details on return structure (e.g., summary format) and prerequisite checks, which could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter's description adds value beyond type info: query specifies typical SQL types, environment gives examples, and includePlanXml explains default behavior and alternative output. This exceeds the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an estimated execution plan (SHOWPLAN_XML) for SQL queries without executing them, using a specific verb and resource that distinguishes it from sibling tools like read_data or describe_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., test_connection for connectivity, read_data for actual execution) or when not to use it, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_dependenciesA
Shows what database objects depend on a table, view, or other object. Use for impact analysis before schema changes.
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | Name of the object to inspect (e.g., 'dbo.Customers' or 'Customers') | |
| includeColumns | No | Include column-level dependency details. Default: false | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only states function without disclosing behavioral traits like read-only nature, permissions needed, error handling, or side effects. The agent lacks insights beyond basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence clearly states function, second adds use case. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description explains what and when to use, but missing details on return format, error cases, and behavior for invalid inputs. With no output schema or annotations, the description is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds no extra meaning to parameters beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool shows dependencies and is used for impact analysis, with a specific verb 'shows' and resource 'database objects'. It distinguishes from siblings like describe_table and inspect_relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use for impact analysis before schema changes', providing clear context. While it doesn't list exclusions or alternatives, the sibling tools list implies different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_relationshipsA
Describes inbound and outbound foreign-key relationships for a given table, including column mappings and referential actions.
| Name | Required | Description | Default |
|---|---|---|---|
| tableName | Yes | Target table name (without schema). | |
| schemaName | No | Schema name (defaults to 'dbo'). | |
| includeOutbound | No | Include relationships where the table references other tables (default true). | |
| includeInbound | No | Include relationships where other tables reference this table (default true). | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read operation but does not disclose behavioral traits like cost, permissions, or side effects. It only states what the tool describes, which is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 15 words that is front-loaded with the tool's purpose. Every word earns its place, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's specific focus on relationships, the combination of a clear description and well-documented parameters provides sufficient context. The lack of an output schema is partially mitigated by the description mentioning return content (column mappings and referential actions).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with parameter descriptions. The description adds value by explaining that the output includes column mappings and referential actions, which are not detailed in the schema. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it describes inbound and outbound foreign-key relationships for a given table, including column mappings and referential actions. This is a specific verb+resource combination, and it distinguishes itself from sibling tools like describe_table and inspect_dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_databasesA
Lists databases on the SQL Server instance. Requires server-level access. Filtered by environment policies.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No | Target environment name (optional, uses default if not specified) | |
| includeSystemDbs | No | Include system databases (master, msdb, model, tempdb). Default: false | |
| stateFilter | No | Filter by database state. Default: ONLINE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses access requirements and environment filtering, but does not state if the operation is read-only or describe any side effects. Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and contains no unnecessary words. Every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the tool's purpose and constraints (access, filtering). It does not specify the return format, but for a listing tool, this is often implied. It is complete enough for most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage). The description adds no further meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Lists databases on the SQL Server instance' with a specific verb and resource. It distinguishes from sibling tools like 'list_tables' and 'describe_table' by focusing on databases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool by specifying 'Requires server-level access' and 'Filtered by environment policies'. It does not explicitly mention alternatives or when not to use, but the constraints are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_environmentsA
Lists all configured database environments available for connection. Shows environment names, descriptions, access levels, and policy restrictions. Use this to discover which environments are available before running queries.
| Name | Required | Description | Default |
|---|---|---|---|
| includeDetails | No | Include full policy details (allowedTools, deniedSchemas, etc.). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It accurately describes a read-only listing operation but does not explicitly state it's non-destructive. No mention of permissions or rate limits, which are minimal for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action ('Lists all...'), no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple discovery tool, description covers purpose and usage. Missing mention of error handling (e.g., no environments configured) or explicit read-only guarantee, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters (one boolean). Description adds value by listing default fields shown (names, descriptions, etc.). This contextualizes the 'includeDetails' parameter without repeating schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists database environments and their attributes. It doesn't explicitly differentiate from sibling 'validate_environment_config', but the context of discovering environments before queries is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use 'before running queries', providing clear context. Does not mention when not to use or alternatives, but guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsB
Lists available named SQL scripts. Scripts are pre-approved SQL templates that can be executed with parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No | Filter scripts to those allowed in this environment (optional) | |
| tier | No | Filter scripts by minimum tier requirement (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It does not disclose behavioral traits like filtering, ordering, or side effects, and does not clarify 'available' meaning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with optional filters and no output schema, the description is moderately complete but lacks details on return format or filtering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described. The description adds no extra meaning beyond the schema, earning the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states that the tool lists available named SQL scripts and defines them as pre-approved templates, distinguishing it from sibling tools like run_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as run_script or list_tables. The description implies pre-run listing but lacks context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesA
Lists tables in an MSSQL Database, optionally filtered by schema. For server-level access environments, you can specify a database to list tables from.
| Name | Required | Description | Default |
|---|---|---|---|
| database | No | Optional: Target database name for server-level access environments. | |
| schemas | No | Schemas to filter by (optional) | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only states it lists tables, which implies a read operation, but lacks details like permissions required, whether it's a simple list or includes metadata, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core purpose, no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool, the description covers its main function and key parameter context. It could mention output format or return type, but overall sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented structurally. Description adds minimal extra meaning: clarifies optional schema filtering and database parameter context for server-level access. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists tables in an MSSQL database with optional schema filtering. This clearly distinguishes it from sibling tools like describe_table (single table) and list_databases (databases).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions server-level access environments and the optional database parameter, giving context for usage. However, it does not explicitly state when not to use this tool or suggest alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_tableA
Profiles a table by analyzing column statistics, data distributions, and sample records. Returns metadata, cardinality info, null counts, and representative samples for each column.
| Name | Required | Description | Default |
|---|---|---|---|
| tableName | Yes | Name of table to profile (schema.table or table) | |
| schemaName | No | Explicit schema (defaults to 'dbo') | |
| sampleSize | No | Number of sample rows (default 100, max 1000) | |
| includeSamples | No | Return sampled rows used for profiling (default false) | |
| includeDistributions | No | Include top value frequencies (default true) | |
| topValuesLimit | No | Max distinct values per column (default 10, max 50) | |
| columnsToProfile | No | Specific columns to profile (default: all) | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes outputs (metadata, cardinality, null counts, samples) but does not explicitly state whether the tool is read-only or has any side effects. The profiling nature suggests no modification, but this is implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the purpose and list key outputs. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately describes return values (metadata, cardinality, samples). However, it lacks information on error behavior, performance implications, or effects on the database. Overall, fairly complete for a profiling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions; it only gives a high-level overview.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it profiles a table by analyzing column statistics, distributions, and sample records, and returns specific metadata. This distinguishes it from siblings like 'describe_table' which likely only returns schema structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when column-level statistics are needed, but does not explicitly state when to use this tool versus alternatives (e.g., describe_table for schema-only). No exclusions or when-not guidance provided.
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 read-only SELECT query. Auto-limits results if no TOP clause present. Blocks destructive operations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SQL SELECT query to execute (must start with SELECT and cannot contain destructive operations). Example: SELECT * FROM movies WHERE genre = 'comedy' | |
| database | No | Optional: Target database name for server-level access environments. If specified, queries will use three-part naming (database.schema.table). Requires server-level access. | |
| maxRows | No | Optional override for maximum rows returned (1-100000). | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: read-only nature, auto-limiting results, and blocking destructive operations. This provides important context beyond the schema, though it omits details like return format or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The main purpose is front-loaded, and every sentence adds value ('read-only', 'auto-limits', 'blocks destructive'). Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description covers the essential aspects: purpose, behavioral constraints, and an important feature (auto-limiting). It could be slightly more complete by mentioning the response format (e.g., rows), but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add extra meaning to parameters; the schema already documents each parameter's purpose and constraints. The description's value is in global behaviors, not parameter-specific details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a read-only SELECT query, specifying the verb 'execute' and resource 'SELECT query'. It distinguishes itself from sibling tools by emphasizing 'read-only' and 'blocks destructive operations', which differentiates it from tools like 'run_script' or 'explain_query'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for read-only queries but does not explicitly state when to use this tool versus alternatives like 'describe_table' or 'list_tables'. No when-not-to-use guidance is provided, only the inherent constraint of SELECT queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_scriptA
Executes a named SQL script with parameters. Scripts are pre-approved SQL templates. Use list_scripts to see available scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| scriptName | Yes | Name of the script to execute (from list_scripts) | |
| parameters | No | Parameter values for the script (key-value pairs) | |
| preview | No | If true, shows the resolved SQL without executing. Default: false | |
| confirm | No | Required for scripts with requiresApproval or in environments with requireApproval. Set to true after reviewing preview. | |
| environment | No | Target environment (optional, uses default if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses scripts are pre-approved, mentions preview shows SQL without execution, and confirm parameter is required for approval. No annotations provided, so description carries burden; however, does not detail return format or transaction behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff, front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers safety preview/confirm but omits what the tool returns (e.g., result rows, success message). No output schema, so description should fill gap. Incomplete for a SQL execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have schema descriptions (100% coverage). Description adds no extra meaning beyond 'with parameters'; schema already explains each parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Executes a named SQL script with parameters' and notes scripts are pre-approved templates. Distinguishes from siblings by specifying use of list_scripts to see available scripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Refers to list_scripts for available scripts and implies use of preview/confirm for safety. Does not explicitly contrast with sibling tools like read_data or explain_query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_schemaC
Searches tables and columns using wildcard patterns to discover schema names.
| Name | Required | Description | Default |
|---|---|---|---|
| tablePattern | No | Wildcard pattern for table names (e.g. 'doc%'). | |
| columnPattern | No | Wildcard pattern for column names (e.g. '%id'). | |
| limit | No | Maximum rows to return per section (default 50, max 200). | |
| tableLimit | No | Override for table section limit (defaults to limit). | |
| columnLimit | No | Override for column section limit (defaults to limit). | |
| tableOffset | No | Number of table rows to skip (for pagination). | |
| columnOffset | No | Number of column rows to skip (for pagination). | |
| environment | No | Optional environment name to target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It mentions wildcard patterns but does not explain that results are split into table and column sections, how pagination works via offsets, or default limits. Important behavioral traits are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence (11 words), which is concise but overly minimal for a tool with 8 parameters. It front-loads the purpose but omits important structural details like the two-part result (tables and columns) and pagination, making it less useful than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, 13 siblings), the description is incomplete. It does not describe the return format, how results are organized into tables and columns, or how to use offsets for pagination. An agent would need to infer the response structure from parameter names alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The parameter descriptions in the schema already specify wildcard patterns, limits, and offsets. The tool-level description adds no new meaning beyond restating 'wildcard patterns' and does not clarify parameter interactions or default behaviors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches tables and columns using wildcard patterns to discover schema names. It distinguishes from sibling tools like list_tables (which lists all tables) and describe_table (which describes a specific table) by focusing on pattern-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_tables or describe_table. The description does not mention typical use cases, prerequisites, or conditions where this tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_connectionC
Tests connectivity to a database environment and returns status, latency, and basic server info.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No | Optional environment name to test. If not provided, tests the default environment. | |
| verbose | No | If true, returns additional server info (version, edition, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It mentions returning status/latency/info but omits details like side effects, permissions, or rate limits. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information. Efficient but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description lists return elements. Lacks details on return format or error scenarios. Adequate for a simple connectivity test.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds no new meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tests database connectivity and returns status, latency, and server info. It uses a specific verb and resource, distinguishing it from siblings like 'validate_environment_config'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'validate_environment_config'). No explicit context or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_environment_configA
Validates the environments.json configuration file for correctness and security best practices.
Checks include:
Required fields (name, server, database for database-level; name, server for server-level)
Valid authentication mode configuration
Policy consistency (e.g., readonly + allowedTools including write tools)
Secret placeholder syntax
Access level configuration validity
Tier designation consistency
Returns validation results for each environment with errors and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No | Specific environment name to validate. If omitted, validates all environments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the checks performed and the return type (errors and warnings). It does not mention side effects, but given the nature, it is likely read-only. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear purpose sentence, a bullet list of checks, and a closing sentence on return type. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately describes the return (validation results with errors and warnings). All necessary information is covered: purpose, checks, parameter, and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the parameter description (100% coverage). The description adds value by explaining behavior when parameter is omitted, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a configuration file for correctness and security best practices, listing specific checks. It effectively distinguishes itself from sibling tools which focus on database operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for configuration validation but does not explicitly state when to use versus alternatives or when not to use it. Sibling context clarifies its distinct role.
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. Dates show when Glama detected each change.
14 tool updates
v0.4.2- First observed
describe_table - First observed
explain_query - First observed
inspect_dependencies - First observed
inspect_relationships - First observed
list_databases - First observed
list_environments - First observed
list_scripts - First observed
list_tables - First observed
profile_table - First observed
read_data - First observed
run_script - First observed
search_schema - First observed
test_connection - First observed
validate_environment_config
TDQS
Each tool targets a distinct database operation or analysis aspect. Even closely related tools like profile_table and describe_table serve different purposes (schema vs. statistics). There is no ambiguity between tools.
All tool names follow a consistent verb_noun pattern with lowercase underscores. Verbs are clear and descriptive (list, describe, explain, inspect, profile, etc.), making it easy to predict functionality.
With 14 tools, the server covers a broad but focused range of database read and analysis operations without being overwhelming or sparse. This count is well-suited for a specialized database reader server.
The tool set covers schema discovery, data querying, dependency analysis, and configuration management. However, it lacks tools for listing other database objects like views, stored procedures, or indexes, which may be needed for thorough analysis.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- dataOAuthco.thinair
Read-only PostgreSQL, MySQL, SQL Server access via MCP — 24 dialect-aware hosted tools.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Model Context Protocol server for Studex tools, notifications, and profile integrations
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that exposes SQL Server metadata and read-only query execution as a structured HTTP API, with safety validation and allowlist policy enforcement.1-
- AlicenseNot gradedqualityCmaintenanceRead-only SQL Server MCP server enabling safe database queries, table listing, and schema inspection with built-in security protections.MIT
- AlicenseNot gradedqualityCmaintenanceRead-only Model Context Protocol server for Microsoft SQL Server. Enables safe schema discovery, profiling, and querying with zero risk of data modification.16MIT
- AlicenseBqualityBmaintenanceA Model Context Protocol server for Microsoft SQL Server and Azure SQL Database with permission-based access modes (read-only, DML, full) and security features like SQL classification and connection locking.719MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ConnorBritain/mssql-mcp-reader'
If you have feedback or need assistance with the MCP directory API, please join our Discord server