Skip to main content
Glama
millelog

SQL Server MCP

by millelog

SQL Server MCP

A read-only MCP (Model Context Protocol) server for SQL Server database introspection. Use with Claude Desktop to let Claude explore and query your SQL Server databases.

Features

  • List databases, tables, views, stored procedures, and functions

  • Get object definitions (DDL/source code)

  • Execute read-only SELECT queries

  • Search for objects across databases

  • Read-only by design - all mutation queries are blocked

Related MCP server: mssql-mcp

Installation

# Clone the repo
git clone https://github.com/millelog/sql-server-mcp.git
cd sql-server-mcp

# Install in a virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -e .

Claude Desktop Configuration

Add to your Claude Desktop config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sql-server": {
      "command": "python",
      "args": ["-m", "sql_server_mcp"],
      "cwd": "C:\\path\\to\\sql-server-mcp",
      "env": {
        "MSSQL_HOST": "your-server",
        "MSSQL_USER": "your-username",
        "MSSQL_PASSWORD": "your-password",
        "MSSQL_DATABASE": "master"
      }
    }
  }
}

Restart Claude Desktop after updating the config.

Configuration Options

Variable

Description

Default

MSSQL_HOST

SQL Server hostname

localhost

MSSQL_PORT

SQL Server port

1433

MSSQL_USER

Username

-

MSSQL_PASSWORD

Password

-

MSSQL_DATABASE

Default database

master

MSSQL_CONNECTION_STRING

Full connection string (overrides above)

-

MAX_ROWS

Maximum rows returned

100

QUERY_TIMEOUT

Query timeout (seconds)

30

ALLOWED_DATABASES

Comma-separated allowlist

-

BLOCKED_DATABASES

Comma-separated blocklist

-

Available Tools

Tool

Description

list_databases

List all accessible databases

list_tables

List tables in a database

get_table_definition

Get CREATE TABLE DDL

get_table_columns

Get column metadata

get_table_indexes

Get index information

get_table_relationships

Get foreign key relationships

list_views

List views in a database

get_view_definition

Get CREATE VIEW DDL

list_procedures

List stored procedures

get_procedure_definition

Get CREATE PROCEDURE DDL

get_procedure_parameters

Get procedure parameters

list_functions

List user-defined functions

get_function_definition

Get CREATE FUNCTION DDL

execute_query

Run read-only SELECT queries

get_sample_data

Get sample rows from a table

search_objects

Search for objects by name

search_definitions

Search within object definitions

get_schema_overview

Get database schema summary (object counts, size)

Development

# Run tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=src/sql_server_mcp

License

MIT

Available Tools

20 tools
execute_queryB

Execute a read-only SELECT query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SELECT query to execute
databaseNoDatabase to query
max_rowsNoMaximum rows to return (default: 100)

TDQS

B3.2/5.0
Behavior2/5

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

Only states 'read-only', but lacks details on error handling, concurrency, or size limits. With no annotations, description carries full burden but provides minimal behavior info.

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?

Single sentence with no redundancy, front-loads key purpose. Efficient and to the point.

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?

Describes purpose but lacks context on expected query syntax, response format, and potential side effects. For a query execution tool with no output schema, more details are needed.

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 covers all 3 parameters with descriptions; description adds no extra 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.

Purpose5/5

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

Description clearly states verb 'execute' and resource 'read-only SELECT query', distinguishing from sibling tools like get_* and list_* which are more specific.

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?

No guidance on when to use this tool vs siblings. It does not mention alternatives or when not to use, leaving the agent to infer from sibling names.

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

get_function_definitionC

Get the CREATE FUNCTION definition

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
functionYesFunction name (can include schema)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral traits such as read-only nature, required permissions, or error conditions. The agent must infer that it is a read operation from the name.

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 a single sentence that front-loads the main action. However, it is so brief that it sacrifices important detail, which limits its effectiveness.

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 output schema and annotations, the description should explain what the tool returns (e.g., full DDL, signature only). It does not, leaving the agent with incomplete information.

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 coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what is in the schema, resulting in a baseline score.

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 tool retrieves the CREATE FUNCTION definition, which is a specific verb and resource. However, it does not explain what 'definition' means (e.g., SQL source, metadata), and while it distinguishes from siblings like get_procedure_definition, it could be more explicit about the output.

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?

No guidance is provided on when to use this tool versus alternatives such as list_functions or get_procedure_definition. The sibling tools are listed but the description offers no criteria for selection.

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

get_procedure_definitionB

Get the CREATE PROCEDURE definition

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
procedureYesProcedure name (can include schema)

TDQS

B3/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. It fails to disclose behavioral traits such as whether the tool requires permissions, what happens if the procedure doesn't exist, or the exact format of the returned definition.

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

Conciseness3/5

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

The description is very short and front-loaded, which is efficient. However, it is too minimal, lacking necessary details, so it does not fully earn its place despite brevity.

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?

With no output schema and only a two-word description, the tool's output (the full CREATE PROCEDURE text) is not explained. For a simple tool with required parameters, the description should clarify what is returned.

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 input schema has 100% description coverage for both parameters (database and procedure). The description adds no additional meaning beyond the schema, meeting the baseline but not exceeding it.

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 'Get the CREATE PROCEDURE definition' concisely and specifically identifies the tool's action (get) and resource (CREATE PROCEDURE definition). It clearly distinguishes from siblings like 'get_function_definition' or 'get_procedure_parameters'.

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?

No guidance on when to use this tool over alternatives (e.g., when to use 'get_function_definition' instead). No prerequisites or context for correct usage are provided.

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

get_procedure_parametersB

Get parameter information for a stored procedure

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
procedureYesProcedure name (can include schema)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'Get', implying a read-only operation without side effects. However, it does not disclose any behavioral traits such as permission requirements, return format, or potential performance implications, leaving the agent partially uninformed.

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, front-loaded sentence with no extraneous words. It efficiently conveys the essential purpose.

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?

Despite lacking an output schema, the tool is simple with only two parameters. The description is minimally adequate but does not mention return structure, potential error conditions, or limitations. For a straightforward tool, this is acceptable but not exemplary.

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 coverage is 100% and both parameters have clear descriptions in the input schema. The tool description adds no additional meaning beyond what the schema already provides, meeting the baseline but not exceeding it.

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 action ('Get') and the resource ('parameter information for a stored procedure'). It distinguishes from sibling tools like 'get_procedure_definition' which retrieves the entire procedure definition, not just parameters.

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?

No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites or when to prefer it over other 'get' tools such as 'get_procedure_definition' or 'get_function_definition'.

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

get_sample_dataB

Get sample rows from a table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
tableYesTable name (can include schema)
rowsNoNumber of rows to return (default: 10)
randomNoReturn random sample instead of first N rows

TDQS

B3.3/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. It does not disclose behavioral traits like whether sampling is random by default, performance implications, or that the tool is read-only. The schema covers parameter details, but the description lacks behavioral context.

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 concise sentence with no waste. However, its brevity means it could benefit from slight expansion 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 tool has 4 parameters and no output schema, the description is incomplete. It does not explain the nature of the sample (e.g., first vs random), output format, or side effects, leaving significant gaps for an agent.

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 parameters are already well-documented. The description adds no additional meaning beyond what the schema provides, earning a baseline score of 3.

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 'Get sample rows from a table' uses a specific verb and resource, clearly indicating the tool's function. It effectively distinguishes from sibling tools like execute_query or get_table_columns.

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 does not explicitly state when to use this tool versus siblings. The purpose is implied, but no guidance is given on context or exclusions, such as preferring this over execute_query for quick inspection.

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

get_schema_overviewC

Get an overview of a database schema (counts of objects, size info)

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description carries the full burden. It implies a read-only operation but does not explicitly state non-destructiveness, performance impact, or authorization requirements. The description gives minimal behavioral insight beyond the tool's name.

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 sentence with no extraneous words, making it concise. However, it lacks structure (e.g., separating purpose from return info), but it earns a 4 for brevity.

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 that there is no output schema, the description should explain what the return format looks like. It mentions 'counts of objects, size info' but is vague. The tool is simple, but the explanation is incomplete.

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 coverage is 100% (the only parameter 'database' has a description). The description adds no extra meaning beyond 'Database name'; baseline 3 is appropriate since the schema already documents the parameter.

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 'get' and the resource 'database schema', and specifies the kind of information returned (counts of objects, size info). It distinguishes itself from sibling tools like list_tables or get_table_columns by focusing on a high-level overview.

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?

No guidance is provided on when to use this tool vs alternatives such as list_databases or get_table_definition. There are no explicit exclusions or context on prerequisites.

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

get_table_columnsC

Get detailed column information for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
tableYesTable name (can include schema)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It labels the operation as 'get' (read-only) but omits details like performance impact, required permissions, or whether the output is paginated. The minimal description leaves the agent uncertain about safety.

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 single sentence is concise and front-loaded. However, it could be slightly more descriptive without adding fluff. It earns its place but misses an opportunity to briefly clarify output.

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?

No output schema exists, so the description should hint at what 'detailed column information' includes (e.g., data type, nullability). It fails to do so, leaving a significant gap for a tool that returns structured metadata.

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 coverage is 100%, so the schema already documents 'database' and 'table'. The description adds no extra meaning to these parameters; it remains vague about how 'detailed column information' relates to the inputs. Baseline of 3 is appropriate.

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 it gets 'detailed column information for a table', which is a specific verb+resource. While it differentiates from siblings like 'get_table_definition' (DDL) or 'get_view_columns' (view), it could explicitly contrast with these to achieve 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?

No guidance is given on when to use this tool versus alternatives like 'get_table_definition' or 'get_sample_data'. The agent has no criteria to prefer this tool over siblings.

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

get_table_definitionB

Get the full CREATE TABLE definition for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
tableYesTable name (can include schema, e.g., 'dbo.Users')

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'get', implying read-only, but fails to disclose behaviors like permissions needed, error handling, or whether the result is a DDL string or a structured object.

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 conveys the purpose without any extraneous words. It is front-loaded and to the point.

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?

For a simple retrieval tool with no output schema, the description is adequate but could be more complete by specifying the return type (e.g., 'returns the DDL statement as a string') or noting that it requires table name only.

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 input schema already describes both parameters ('database', 'table') with 100% coverage. The description adds no additional semantic meaning beyond what the schema provides.

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 tool retrieves the 'full CREATE TABLE definition for a table', using a specific verb and resource. It is distinct from sibling tools that target functions, procedures, or views.

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 such as 'get_table_columns' or 'get_schema_overview'. There is no mention of prerequisites, exclusions, or best practices.

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

get_table_indexesC

Get index information for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
tableYesTable name (can include schema)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It indicates a read operation but provides no details about the return structure, permissions, data scope, or potential side effects. This is insufficient for an agent to understand the tool's inner workings.

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 extremely concise at two words, with no fluff. It is front-loaded and to the point. However, conciseness sacrifices substance, preventing a perfect score.

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 simplicity but lack of output schema and 20 sibling tools, the description is too brief. It does not specify what index information is returned (e.g., columns, uniqueness, type), leaving the agent unsure if this tool meets its needs.

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%: both parameters have descriptions ('Database name', 'Table name (can include schema)'). The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 'Get index information for a table' clearly states the tool's function with a specific verb and resource. It distinguishes from sibling tools like get_table_columns or get_table_definition by focusing on indexes, though no explicit differentiation is provided.

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?

No guidance is given on when to use this tool over alternatives (e.g., other index-related tools like get_table_definition). There is no mention of prerequisites or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_table_relationshipsA

Get foreign key relationships for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
tableYesTable name (can include schema)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and the description is minimal, offering no information about side effects, permissions, or return format. The single sentence only restates the tool's purpose without adding behavioral details.

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 one short sentence with no wasted words, effectively communicating the tool's core function.

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?

For a simple read tool with no output schema, the description is adequate but lacks details on the structure of returned relationships (e.g., referenced tables/columns), which could hinder an agent's complete understanding.

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?

Input schema coverage is 100%, with each parameter described. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 'Get foreign key relationships for a table' clearly states the action and target resource, distinguishing it from sibling tools like get_table_columns or get_table_definition.

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?

No explicit guidance on when to use versus alternatives; usage is implied by the specific function of retrieving foreign key relationships, but no exclusions or alternatives are mentioned.

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

get_view_columnsC

Get column information for a view

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
viewYesView name (can include schema)

TDQS

C2.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 must carry the full behavioral disclosure burden. It implies a read-only operation but does not describe what 'column information' entails, what fields are returned, or any potential limitations (e.g., only returns columns defined in the view, not underlying tables). The description is too minimal to be transparent.

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

Conciseness3/5

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

The description is very short (6 words), which is concise but arguably too brief. It contains no waste, yet it misses the opportunity to provide essential context. It is not structured with a clear front-loading of key information because it lacks substance.

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 an output schema, the description should explain what the tool returns (e.g., column names, types, nullable flags). It does not. The tool is part of a suite of metadata tools, and this description is incomplete compared to potential more detailed siblings. The absence of behavioral details makes it insufficiently complete.

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 input schema covers 100% of parameters with descriptions. The description adds no extra meaning beyond what is in the schema. Since schema coverage is high, a baseline of 3 is appropriate. No additional semantic enrichment is provided.

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

Purpose3/5

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

The description states 'Get column information for a view' which is a specific verb and resource. However, it does not differentiate from sibling tools like 'get_table_columns' or specify what kind of column information (e.g., names, types, constraints). The purpose is clear but not precise enough to avoid confusion.

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?

No guidance is provided on when to use this tool versus alternatives. The sibling list includes many similar 'get_*' tools (e.g., get_table_columns, get_view_definition) but the description offers no context to help the agent select the appropriate one.

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

get_view_definitionB

Get the CREATE VIEW definition

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
viewYesView name (can include schema)

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description carries full burden but only says 'Get the CREATE VIEW definition'. It does not disclose what the tool returns (e.g., SQL text), what happens on error, or any side effects. This is insufficient for an agent to understand behavior.

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 (one sentence) and front-loaded, but it could include more useful details without becoming verbose.

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 no output schema, the description should explain what the tool returns (e.g., the CREATE VIEW statement text). It does not, leaving the agent uncertain about the response format. For a simple 2-parameter tool, this is a significant gap.

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 input schema already describes both parameters (database and view name) with 100% coverage. The description adds no additional meaning beyond what the schema provides, 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.

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'CREATE VIEW definition'. It differentiates from sibling tools like get_view_columns or get_table_definition by specifying it's for the CREATE VIEW definition.

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?

No guidance is provided on when to use this tool versus alternatives such as get_view_columns or get_table_definition. There is no mention of prerequisites or context.

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

list_databasesB

List all accessible databases on the SQL Server

ParametersJSON Schema
NameRequiredDescriptionDefault
include_systemNoInclude system databases (master, model, msdb, tempdb)
name_patternNoFilter databases by name pattern (SQL LIKE syntax)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral details such as permissions, return format, or side effects. 'Accessible databases' implies filtering but is not explicit.

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 concise sentence that front-loads the main purpose. It could be expanded with minimal effort but is not overly verbose.

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?

The tool is simple with two optional parameters and no output schema. The description adequately covers the purpose but lacks information about return structure or behavior.

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 coverage is 100% with both parameters described inline. The tool description adds no additional meaning beyond the schema, baseline 3 applies.

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 'List all accessible databases on the SQL Server', using a specific verb and resource. It is distinct from sibling tools like list_tables and list_schemas.

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?

No guidance on when to use this tool versus alternatives like list_tables or execute_query. No exclusions or usage context provided.

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

list_functionsB

List all user-defined functions in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
schemaNoFilter by schema name
function_typeNoFilter by function type: 'scalar', 'table', or 'all'all

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states the action (list), implying a read-only operation, but lacks details on ordering, pagination, permissions, or scope (e.g., across all schemas). This 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.

Conciseness5/5

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

The description is a single sentence that directly conveys the tool's purpose with no unnecessary words. It is perfectly concise.

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 the tool's simplicity (3 params, no output schema), the description is adequate but could be improved by mentioning what the output contains (e.g., function names and metadata) or any prerequisites. It is minimally complete.

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 input schema already documents all parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline.

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 'List' and the resource 'user-defined functions in a database'. It is specific but does not differentiate from sibling tools like list_procedures or list_views, resulting in a score of 4.

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 for listing user-defined functions, but provides no explicit guidance on when to use this tool vs alternatives like list_procedures. No exclusions or context are given.

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

list_proceduresC

List all stored procedures in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
schemaNoFilter by schema name
name_patternNoFilter procedures by name pattern
include_systemNoInclude system procedures

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior, but it only says 'list all stored procedures'. It does not mention that include_system defaults to false, what happens when database is omitted, or whether results are paginated. Key behavioral details are missing.

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

Conciseness3/5

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

The description is a single short sentence, which is concise but lacks necessary details. It earns its place but could be more informative without being wordy.

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 presence of 4 parameters, a missing output schema, and 19 sibling tools, the description is insufficiently complete. It does not explain filtering options or the effect of optional parameters, leaving ambiguity for the agent.

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?

All 4 parameters have descriptions in the schema (100% coverage), so the description does not need to add parameter details. The baseline of 3 applies as the description offers no additional semantic value beyond the schema.

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 tool lists stored procedures, but doesn't explicitly differentiate from sibling list tools like list_functions or list_tables. However, the combination of name and description is specific enough for basic identification.

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?

No usage guidance is provided. The description does not indicate when to use this tool over alternatives such as list_functions, list_tables, or search_definitions, nor does it mention prerequisites or typical use cases.

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

list_schemasB

List all schemas in a database with object counts

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; description only states it lists schemas with counts. It does not disclose permissions required, whether it modifies data, or handle large results. Minimal behavioral disclosure beyond function name.

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?

Single sentence, front-loaded with key information. No wasted words. Could benefit from additional context, but remains concise.

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?

No output schema provided; description partially addresses return by mentioning object counts. Missing details on ordering, pagination, or error cases. Adequate for a simple list tool but could be more complete.

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?

One parameter 'database' with description 'Database name' is already in schema. Schema coverage is 100%, so baseline 3. Description adds no extra context beyond what schema provides.

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?

Description clearly states the tool lists all schemas in a database with object counts. Verb and resource are explicit, and it differentiates from sibling tools like list_tables and list_databases.

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?

No guidance on when to use this tool versus alternatives like get_schema_overview or list_databases. The description does not mention prerequisites or context.

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

list_tablesC

List all tables in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name (uses default if not specified)
schemaNoFilter by schema name
name_patternNoFilter tables by name pattern (SQL LIKE syntax)

TDQS

C2.6/5.0
Behavior1/5

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

No annotations are present, so the description carries full burden. It fails to disclose any behavioral traits, such as read-only nature, scope of returned data, or whether filters affect results. Only states 'List all tables'.

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

Conciseness3/5

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

The description is very short (one sentence) and front-loaded. However, it omits important details like filtering and output format, making it under-specified rather than appropriately concise.

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 has 3 optional parameters and no output schema, the description is incomplete. It does not explain what is returned (table names, metadata), how filters work, or any default behavior.

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 baseline is 3. The description adds no additional meaning to the parameters beyond what the schema provides; it merely says 'in a database'.

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 'List' and resource 'all tables in a database'. While it distinguishes the tool from siblings like 'list_views' by name, it does not explicitly differentiate behavior or scope.

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?

No guidance is provided on when to use this tool versus alternatives such as 'get_table_columns' or 'list_views'. The description lacks context for selection.

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

list_viewsC

List all views in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name
schemaNoFilter by schema name
name_patternNoFilter views by name pattern

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states 'List all views' without disclosing any behavioral traits (e.g., read-only nature, pagination, return format, or effect of filters). The minimal text adds no behavioral context beyond the function name.

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 extremely concise—a single sentence with no redundant words. However, it is so minimal that it borders on under-specification, lacking any structural elements like bullet points or context that would improve 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?

The tool has three optional filters and no output schema, yet the description does not explain how filters interact, what the return format is, or any edge cases. For a simple listing tool, more context is needed to ensure correct usage.

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. The description adds no additional meaning to the parameters beyond what the schema provides, earning a baseline score of 3.

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 ('List') and the resource ('all views in a database'), making the tool's purpose unambiguous. However, it does not differentiate from sibling tools like list_tables or list_functions, which follow the same pattern.

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?

No usage guidance is provided. The description does not specify when to use this tool over alternatives such as get_view_definition or list_tables, nor does it mention any prerequisites or exclusions.

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

search_definitionsC

Search within object definitions (procedure/function/view source code)

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesText pattern to search for
databaseNoLimit search to specific database
object_typesNoObject types to search: 'view', 'procedure', 'function'

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It does not disclose behavioral traits such as case sensitivity, wildcard support, permission requirements, or output format. This is insufficient for a search 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, clear sentence with no extraneous text. It is appropriately concise.

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 absence of an output schema and many sibling tools, the description lacks details on return values, behavior, and how it differs from similar tools. It is incomplete for an agent to use confidently.

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 coverage is 100% with clear descriptions for all parameters. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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 it searches within object definitions (source code of procedures, functions, views). It uses a specific verb and resource, and the scope (source code) is distinct from sibling tools like search_objects or get_procedure_definition, though it doesn't explicitly differentiate.

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?

No guidance on when to use this tool versus alternatives like search_objects or individual definition retrieval tools. The description does not mention exclusions or context.

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

search_objectsB

Search for database objects by name across all databases

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesName pattern to search for (SQL LIKE syntax)
object_typesNoObject types to search: 'table', 'view', 'procedure', 'function'
databaseNoLimit search to specific database

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only mentions scope ('across all databases') but no details on read-only behavior, performance, case sensitivity, 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.

Conciseness5/5

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

Single sentence, front-loaded with the action and scope, no wasted words.

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?

With no annotations, no output schema, and 3 parameters, the description is too sparse. Does not mention result format, search scope behavior, or limitations.

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 description adds minimal value. Provides context that search is by name, but does not elaborate beyond schema.

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?

Clear verb and resource: 'Search for database objects by name across all databases'. Distinguishes from siblings like search_definitions by focusing on name-based search across databases.

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?

No guidance on when to use this tool versus alternatives like search_definitions or list_tables. Does not specify 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv0.1.0
    • First observedexecute_query
    • First observedget_function_definition
    • First observedget_procedure_definition
    • First observedget_procedure_parameters
    • First observedget_sample_data
    • First observedget_schema_overview
    • First observedget_table_columns
    • First observedget_table_definition
    • First observedget_table_indexes
    • First observedget_table_relationships
    • First observedget_view_columns
    • First observedget_view_definition
    • First observedlist_databases
    • First observedlist_functions
    • First observedlist_procedures
    • First observedlist_schemas
    • First observedlist_tables
    • First observedlist_views
    • First observedsearch_definitions
    • First observedsearch_objects

TDQS

A3.5/5.0
Disambiguation5/5

Every tool targets a distinct resource and action, such as listing vs. getting definitions, columns, or relationships. No two tools have overlapping purposes; even similar operations like get_table_definition vs get_table_columns are clearly separated by what they return.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, with verbs like execute, get, list, and search. The naming is predictable and uniform across the entire set.

Tool Count5/5

20 tools is well-scoped for a SQL Server schema exploration and querying server. Each tool covers a specific need without redundancy, and the count is appropriate for the domain's complexity.

Completeness5/5

The tool set provides comprehensive coverage for read-only database operations: listing objects, retrieving definitions, columns, indexes, relationships, sample data, and executing queries. It also includes search capabilities. There are no obvious gaps for the intended read-only scope.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

  • Read-only PostgreSQL, MySQL, SQL Server access via MCP — 24 dialect-aware hosted tools.

  • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

  • An MCP server that provides read access to your cloud storage providers, bank accounts and more.

  • Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server for Microsoft SQL Server integration that enables users to query, monitor, and analyze databases directly through Claude. It supports schema exploration, performance analysis, and optional write operations via natural language commands.
    9
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP server for Microsoft SQL Server that retrieves connection details from AWS Secrets Manager, enabling database exploration and querying via natural language.
    12
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that enables Claude to query, monitor, and analyze SQL Server databases, with support for schema exploration, performance analysis, and optional write operations.
    33
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Read-only MCP server for exploring and analyzing SQL Server objects (tables, views, triggers, stored procedures) from Claude Code.
    8
    907
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/millelog/sql-server-mcp'

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