Skip to main content
Glama
michaelyuwh

Enhanced MCP MSSQL Server

by michaelyuwh
README.md
# 🚀 Enhanced MCP MSSQL Server

A production-ready Model Context Protocol (MCP) server for Microsoft SQL Server that provides AI agents with secure, stateless database access capabilities.

## ✨ **New Features & Enhancements**

- **🔒 Advanced Security**: SQL injection protection, query validation, and configurable security policies
- **📊 Health Monitoring**: Real-time performance metrics and connection health checks  
- **⚙️ Configuration Management**: Environment-specific settings for development and production
- **📦 Bulk Operations**: Efficient batch processing for large-scale data operations
- **🛡️ Enhanced Error Handling**: Structured errors with actionable information for AI agents
- **🎯 Production Ready**: Enterprise-grade monitoring and security capabilities

## 🛠️ **Available Tools (9 Total)**

### **Core Database Tools** (Enhanced)
1. **mssql_list_databases** - List all accessible databases
2. **mssql_list_tables** - List tables in a specific database  
3. **mssql_describe_table** - Get detailed table schema information
4. **mssql_query** - Execute queries with security validation and metrics
5. **mssql_sample_data** - Retrieve sample rows from tables
6. **mssql_get_relationships** - Discover foreign key relationships

### **New Advanced Tools**
7. **mssql_health_check** - Server health monitoring with performance metrics
8. **mssql_validate_query** - Security validation without query execution
9. **mssql_bulk_insert** - Efficient bulk data insertion operations

## 🚀 Quick Start

```bash
# Install dependencies
npm install

# Build the project  
npm run build

# Configure your database (copy .env.example to .env)
cp .env.example .env

# Start the server
npm start

# Run tests (requires running MSSQL server)
npm test
```

## 🎯 What This Does

This MCP server allows AI agents to:
- **Connect** to MSSQL databases securely
- **Discover** database schemas (databases, tables, columns)
- **Query** data safely with read-only access
- **Explore** relationships and metadata
- **Sample** data for analysis without full table scans

## ✨ Key Features

- ✅ **Read-Only Safety**: Only SELECT queries allowed
- 🔒 **Secure Authentication**: Encrypted connections by default  
- 🔍 **Schema Discovery**: Automatic database structure exploration
- 📊 **Smart Sampling**: Get representative data without overload
- 🔗 **Relationship Mapping**: Understand foreign key connections
- 🛡️ **SQL Injection Protection**: Parameterized queries and validation

## 🛠️ Installation

**Prerequisites:**
- Node.js 18+
- Access to MSSQL Server (2008 R2+)
- Database user with read permissions

**Setup:**
1. Clone or download this repository
2. Run `npm install` to install dependencies
3. Run `npm run build` to compile TypeScript
4. Configure your database connection (see Configuration section)

## 📝 Configuration

**No Configuration Required!** 

This MCP server is now **stateless** - you provide connection details when calling each tool. The AI agent will ask for your database credentials when needed.

For Claude Desktop, add to your configuration:

```json
{
  "mcpServers": {
    "mssql": {
      "command": "node",
      "args": ["path/to/mcp-mssql-connector/dist/index.js"]
    }
  }
}
```

## 🔧 Available Tools

| Tool | Description | Key Parameters |
|------|-------------|----------------|
| `mssql_connect` | Connect to MSSQL server | server, user, password |
| `mssql_list_databases` | List available databases | - |
| `mssql_list_tables` | List tables in database | database |
| `mssql_describe_table` | Get table structure | database, table |
| `mssql_query` | Execute SELECT query | database, query, limit |
| `mssql_sample_data` | Get sample rows | database, table, limit |
| `mssql_get_relationships` | Get foreign keys | database, table |

## 💡 Usage Examples

**List databases:**
```
List all databases on server 'myserver.com' using username 'myuser' and password 'mypass'
```

**Explore structure:**
```
List all tables in the 'Northwind' database on myserver.com with my credentials
```

**Query data:**
```
Query "SELECT TOP 10 * FROM Customers WHERE Country = 'USA'" on Northwind database at myserver.com
```

**Understand relationships:**
```
Show foreign key relationships for the Orders table in Northwind database on myserver.com
```

## 🔒 Security

- **Read-Only**: Only SELECT statements allowed
- **Input Validation**: All parameters validated with Zod schemas
- **Connection Security**: TLS encryption enabled by default
- **Query Limits**: Automatic row limits prevent data dumps
- **Error Handling**: Safe error messages without exposing internals

## 📚 Documentation

- [📖 Detailed Usage Guide](./USAGE.md)
- [⚙️ Configuration Options](./CONFIG.md)  
- [📋 Requirements](./REQUIREMENTS.md)

## 🤝 Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## 📄 License

MIT License - see LICENSE file for details

## 🆘 Support

If you encounter issues:
1. Check the [Usage Guide](./USAGE.md) for common solutions
2. Verify your MSSQL server configuration  
3. Ensure proper database permissions
4. Open an issue with error details

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific database operations. There is no overlap: bulk_insert, describe_table, get_relationships, health_check, list_databases, list_tables, query, sample_data, and validate_query all serve unique functions in the MSSQL domain.

Naming Consistency5/5

All tools follow a consistent 'mssql_verb_noun' pattern with snake_case throughout. The naming is predictable and readable, making it easy for agents to understand the tool's function from its name alone.

Tool Count5/5

With 9 tools, this server is well-scoped for database management tasks. Each tool earns its place by covering essential operations like listing, querying, describing, and validating, without being overly sparse or bloated.

Completeness4/5

The toolset provides strong coverage for read operations, validation, and metadata queries in MSSQL. A minor gap exists in write operations beyond bulk_insert (e.g., update, delete, or stored procedure execution), but agents can work around this for most common database interactions.

Maintenance

ActivityInactive
ResponsivenessNo issues