Skip to main content
Glama
BoxTalk

Boxtalk Data MCP Server

by BoxTalk

Boxtalk Data MCP Server

A Model Context Protocol (MCP) server that provides SQL Server database operations with pagination, table structure inspection, and record counting capabilities.

Features

  • Get Table Data: Retrieve paginated data from any SQL Server table

  • Get Record Count: Get the total number of records in a table

  • Get Table Structure: View table schema including columns, data types, primary keys, and foreign keys

  • Configurable Connection: Easy database configuration via JSON file

  • Enforced Pagination: Prevents large data dumps with configurable page sizes (max 1000 records per page)

Prerequisites

  • Node.js (v16 or higher)

  • SQL Server database (local or remote)

  • Database credentials with read access

Installation

  1. Clone or navigate to this directory

  2. Install dependencies:

npm install
  1. Create your configuration file:

cp config.example.json config.json
  1. Edit config.json with your database credentials:

{
  "database": {
    "user": "your_username",
    "password": "your_password",
    "server": "localhost",
    "database": "your_database_name",
    "options": {
      "encrypt": true,
      "trustServerCertificate": false,
      "enableArithAbort": true
    },
    "pool": {
      "max": 10,
      "min": 0,
      "idleTimeoutMillis": 30000
    }
  }
}

Configuration Options

  • user: SQL Server username

  • password: SQL Server password

  • server: SQL Server hostname or IP address

  • database: Database name

  • options.encrypt: Enable encryption (recommended for production)

  • options.trustServerCertificate: Set to true for local development with self-signed certificates

  • pool.max: Maximum number of connections in the pool

  • pool.min: Minimum number of connections in the pool

  • pool.idleTimeoutMillis: Time before idle connections are closed

Alternative Configuration

You can also specify a custom configuration file path using the DB_CONFIG_PATH environment variable:

DB_CONFIG_PATH=/path/to/custom/config.json node index.js

Usage with Claude Desktop

To use this MCP server with Claude Desktop, add it to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "boxtalk-data": {
      "command": "node",
      "args": ["/path/to/boxtalk-data-mcp/index.js"],
      "env": {
        "DB_CONFIG_PATH": "/path/to/boxtalk-data-mcp/config.json"
      }
    }
  }
}

After adding the configuration, restart Claude Desktop.

Available Tools

1. get_table_data

Retrieve paginated data from a SQL Server table.

Parameters:

  • table (required): Table name (e.g., "Users" or "dbo.Users")

  • page (optional): Page number, defaults to 1

  • pageSize (optional): Records per page (1-1000), defaults to 100

  • orderBy (optional): Column to order by, defaults to first column

Example:

Get the first 50 records from the Users table, ordered by UserId

2. get_table_count

Get the total count of records in a table.

Parameters:

  • table (required): Table name (e.g., "Users" or "dbo.Users")

Example:

How many records are in the Orders table?

3. get_table_structure

Get the structure/schema of a table including columns, data types, and constraints.

Parameters:

  • table (required): Table name (e.g., "Users" or "dbo.Users")

Example:

Show me the structure of the Products table

Testing

You can test the server using the MCP inspector:

npm install -g @modelcontextprotocol/inspector
mcp-inspector node index.js

Security Considerations

  • Never commit config.json to version control

  • Use strong database passwords

  • Grant only necessary permissions to the database user

  • Enable encryption for production environments

  • Consider using environment variables for sensitive credentials

Troubleshooting

Connection Errors

If you encounter connection errors:

  1. Verify SQL Server is running and accessible

  2. Check firewall settings allow connection on SQL Server port (default 1433)

  3. Confirm credentials are correct

  4. For local development with self-signed certificates, set trustServerCertificate: true

Authentication Issues

For Windows Authentication, modify config.json:

{
  "database": {
    "server": "localhost",
    "database": "your_database_name",
    "options": {
      "trustedConnection": true,
      "encrypt": true,
      "trustServerCertificate": true
    }
  }
}

Table Not Found

Ensure you specify the correct schema (e.g., "dbo.TableName" instead of just "TableName").

License

MIT

Available Tools

4 tools
get_table_countB

Get the total count of records in a SQL Server table.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesThe name of the table to count (can include schema, e.g., 'dbo.Users')

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic operation. It fails to disclose behavioral traits such as whether this is a read-only operation, performance implications (e.g., impact on large tables), authentication needs, error handling, or return format details. The description is minimal and lacks essential context for safe and effective use.

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

Conciseness5/5

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

The description is a single, direct sentence with zero wasted words. It front-loads the core purpose ('Get the total count') and efficiently specifies the resource ('records in a SQL Server table'), making it immediately understandable without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It lacks details on behavioral aspects (e.g., read-only nature, potential performance issues), return value format (e.g., integer count, error responses), and usage context relative to siblings. For a tool with zero annotation coverage, the description should provide more operational context.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'table' fully documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., no examples of table naming conventions beyond the schema's note). Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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

Purpose5/5

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

The description clearly states the specific action ('Get the total count') and resource ('records in a SQL Server table'), distinguishing it from siblings like get_table_data (which retrieves actual data) and get_table_structure (which describes schema). It precisely communicates the tool's function without ambiguity.

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 counting records in a table, but provides no explicit guidance on when to use this tool versus alternatives like query_data (which might also support counting) or get_table_data. It lacks any mention of prerequisites, exclusions, or comparative contexts with sibling tools.

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

get_table_dataC

Get paginated data from a SQL Server table. Returns a specified page of records with pagination enforced.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesThe name of the table to query (can include schema, e.g., 'dbo.Users')
pageNoPage number (1-based). Defaults to 1.
pageSizeNoNumber of records per page. Must be between 1 and 1000. Defaults to 100.
orderByNoColumn name to order by. Defaults to first column if not specified.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool returns paginated data with enforced pagination, which implies read-only behavior and some constraints, but lacks details on permissions, error handling, rate limits, or what 'enforced pagination' entails (e.g., server-side enforcement). This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is front-loaded and concise, consisting of two clear sentences that efficiently convey the core functionality without unnecessary details. Every sentence earns its place by stating the action and key behavioral trait (pagination enforcement).

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 complexity (4 parameters, no output schema, and no annotations), the description is incomplete. It lacks information on return values (e.g., data format, pagination metadata), error cases, and behavioral nuances like authentication needs or performance limits. This makes it inadequate for a tool that interacts with a database and handles pagination.

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 thoroughly. The description adds minimal value beyond the schema by mentioning 'paginated data' and 'pagination enforced,' which aligns with the 'page' and 'pageSize' parameters but doesn't provide additional syntax or format details. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Get paginated data') and resource ('from a SQL Server table'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_table_count' or 'query_data', which likely serve different purposes (e.g., counting rows vs. flexible querying).

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 like 'get_table_count' (for counts) or 'query_data' (for more complex queries). It mentions pagination but doesn't clarify scenarios where this tool is preferred over siblings, leaving usage context implied at best.

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

get_table_structureA

Get the structure/schema of a SQL Server table including column names, data types, and constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesThe name of the table (can include schema, e.g., 'dbo.Users')

TDQS

A3.7/5.0
Behavior3/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 describes the tool's purpose and output content, but does not disclose behavioral traits such as permissions required, whether it's read-only (implied by 'Get'), error handling, or performance considerations. The description adds basic context but lacks depth for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and output details without unnecessary words. It is front-loaded with the core action and resource, making it easy to understand at a glance.

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

Completeness3/5

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

Given no annotations and no output schema, the description provides a clear purpose and output content, but lacks details on behavioral aspects like error handling or return format. It is complete enough for a simple read operation but could benefit from more context to compensate for the absence of 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 description coverage is 100%, with the input schema fully documenting the single 'table' parameter. The description does not add any parameter-specific semantics beyond what the schema provides, such as format examples or constraints. Baseline score of 3 is appropriate since the schema handles parameter documentation adequately.

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

Purpose5/5

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

The description clearly states the specific action ('Get') and resource ('structure/schema of a SQL Server table'), with precise details about what information is retrieved ('column names, data types, and constraints'). It effectively distinguishes this from sibling tools like get_table_count, get_table_data, and query_data by focusing on metadata rather than row counts, data content, or custom queries.

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 obtaining table metadata, but does not explicitly state when to use this tool versus alternatives like get_table_data for actual data or query_data for custom queries. It provides some context by specifying the resource type (SQL Server table), but lacks explicit guidance on prerequisites or exclusions.

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

query_dataA

Execute a SELECT query on the SQL Server database with enforced pagination. Only SELECT queries are allowed - DDL and DML operations (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, etc.) are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SELECT query to execute. Must be a SELECT statement. Do not include OFFSET/FETCH clauses as pagination is automatically applied.
pageNoPage number (1-based). Defaults to 1.
pageSizeNoNumber of records per page. Must be between 1 and 1000. Defaults to 100.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: enforced pagination, query type restrictions (only SELECT allowed), automatic pagination handling, and rejection behavior for non-SELECT queries. It doesn't mention error handling, timeout behavior, or result format 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?

Two sentences with zero waste - first sentence states purpose and key constraint, second sentence provides critical usage restriction. Every word earns its place and the most important information is front-loaded.

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

Completeness4/5

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

For a database query tool with no annotations and no output schema, the description provides good coverage of purpose, restrictions, and behavioral context. It could be more complete by mentioning result format, error handling, or connection/authentication requirements, but covers the essential aspects well.

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 parameters thoroughly. The description adds some context about pagination being 'automatically applied' and query restrictions, but doesn't provide additional parameter semantics beyond what's in the schema descriptions.

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

Purpose5/5

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

The description clearly states the specific action ('Execute a SELECT query') and resource ('SQL Server database'), and distinguishes it from siblings by specifying it's for arbitrary SELECT queries rather than table-specific operations like get_table_data or get_table_structure.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('Execute a SELECT query') and when not to use it ('DDL and DML operations... are rejected'), providing clear alternatives for non-SELECT operations. It also distinguishes from sibling tools by being for arbitrary queries rather than predefined table operations.

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. 4 tool updatesv1.0.0
    • First observedget_table_count
    • First observedget_table_data
    • First observedget_table_structure
    • First observedquery_data

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: get_table_count retrieves record counts, get_table_data fetches paginated data, get_table_structure provides schema details, and query_data executes custom SELECT queries. The descriptions clearly differentiate between metadata operations and data retrieval, eliminating any potential for misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case: get_table_count, get_table_data, get_table_structure, and query_data. The naming convention is perfectly uniform throughout the set, making the tools predictable and easy to understand at a glance.

Tool Count5/5

Four tools is an ideal number for this SQL Server data access server, providing a well-scoped surface that covers essential operations without being overwhelming. Each tool serves a distinct and necessary function for interacting with database tables, making the count perfectly appropriate for the domain.

Completeness4/5

The tool set provides strong coverage for read-only data access with pagination, schema inspection, and custom queries, but lacks write operations (INSERT, UPDATE, DELETE) which might be expected in a full database interaction suite. However, given the enforced SELECT-only limitation in query_data, this appears intentional rather than a gap, though it limits the server's scope.

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

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/BoxTalk/boxtalk-data-mcp'

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