Skip to main content
Glama
parikshitBoxtalk

Boxtalk Data MCP Server

README.md
# 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:
```bash
npm install
```

3. Create your configuration file:
```bash
cp config.example.json config.json
```

4. Edit `config.json` with your database credentials:
```json
{
  "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:

```bash
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`

```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:

```bash
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:
```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

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_table_count retrieves record counts, get_table_data fetches paginated records, get_table_structure provides schema information, and query_data executes custom SELECT queries. There is no overlap or ambiguity between these functions, making tool selection straightforward for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_table_count, get_table_data, get_table_structure, query_data). The naming is uniform and predictable, with 'get_' prefix for three tools and 'query_' for the fourth, both clearly indicating actions on data resources.

Tool Count5/5

With 4 tools, this server is well-scoped for its purpose of SQL Server data access. Each tool earns its place by covering essential operations: counting, retrieving, inspecting structure, and querying data. The count is neither too sparse nor bloated, fitting the domain appropriately.

Completeness4/5

The toolset provides strong coverage for read-only data access, including counts, paginated data, schema, and custom queries. However, there are minor gaps, such as no tools for metadata operations (e.g., listing tables or databases) or handling non-SELECT queries, which agents might need to work around for broader database interactions.

Maintenance

ActivityInactive
ResponsivenessNo issues