# Sql Mcp

> universal_mcp_server

- **Type:** MCP server
- **Install:** `agentstack add mcp-bryr0-sql-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [BryR0](https://agentstack.voostack.com/s/bryr0)
- **Installs:** 0
- **Category:** [Databases](https://agentstack.voostack.com/c/databases)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [BryR0](https://github.com/BryR0)
- **Source:** https://github.com/BryR0/sql-mcp

## Install

```sh
agentstack add mcp-bryr0-sql-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# SQL MCP Server

The **SQL MCP Server** is a unified agentic interface that allows AI models (like Claude) to inspect, query, and interact with multiple types of databases through a single, standardized set of tools.

Instead of installing and configuring separate servers for MySQL, SQL Server, Oracle, etc., this single package handles them all by dynamically loading the correct "adapter" based on your configuration.

## 🚀 Features

- **Standardized Toolset**: The AI always sees the same tools (`execute_query`, `describe_table`, `get_db_version`), no matter if it's talking to Oracle or MySQL. This reduces hallucinations and improves query accuracy.
- **Resources**: Automatically exposes database tables as MCP Resources for easy inspection.
- **Smart Adapters**:
  - ✅ **MySQL**: Uses `mysql-connector-python` with connection pooling.
  - ✅ **MSSQL**: Uses `pymssql` and auto-detects schema names (e.g., `dbo.Users`).
  - ✅ **Sybase / SAP IQ**: Uses `pyodbc` and intelligently handles `dba.` prefixes and server names.
  - ✅ **Oracle**: Uses `oracledb` (Thin mode) for easy connectivity without complex driver installs.
- **Unicode Ready**: All connections default to UTF-8 to handle special characters seamlessly.

## 🛠️ Installation

1. **Clone the repository**:
   ```bash
   git clone https://github.com/BryR0/sql-mcp.git
   cd sql-mcp
   ```

2. **Create a virtual environment**:
   ```bash
   python -m venv venv
   source venv/bin/activate  # On Windows: .\venv\Scripts\activate
   ```

3. **Install dependencies**:
   ```bash
   pip install -e .
   ```

## ⚙️ Configuration

You define which database to use via the `DB_TYPE` environment variable.

### Supported Environment Variables

| Variable | Description | Required | Default |
|----------|-------------|----------|---------|
| `DB_TYPE` | Type of DB: `mysql`, `mssql`, `sybase`, `oracle` | **Yes** | `mysql` |
| `DB_HOST` | Hostname or IP address | **Yes** | `localhost` |
| `DB_USER` | Database username | **Yes** | `root` |
| `DB_PASSWORD` | Database password | **Yes** | (empty) |
| `DB_DATABASE` | Database name | **Yes** | `test` |
| `DB_PORT` | Port number | No | Auto (3306, 1433, etc.) |
| `DB_DSN` | Connection string (Oracle/Sybase advanced) | No | (empty) |
| `DB_SERVER_NAME` | Explicit Server Name (Sybase only) | No | (empty) |

### Claude Desktop Config Example

Add this to your `claude_desktop_config.json`. Note that `DB_PORT` is optional and will default to the standard port for the chosen DB type if omitted.

```json
{
  "mcpServers": {
    "sql_mcp_mysql": {
      "command": "C:\\path\\to\\venv\\python.exe",
      "args": ["-m", "sql_mcp"],
      "env": {
        "DB_TYPE": "mysql",
        "DB_HOST": "localhost",
        "DB_USER": "root",
        "DB_PASSWORD": "password",
        "DB_DATABASE": "my_db"
      }
    },
    "sql_mcp_mssql": {
      "command": "C:\\path\\to\\venv\\python.exe",
      "args": ["-m", "sql_mcp"],
      "env": {
        "DB_TYPE": "mssql",
        "DB_HOST": "192.168.1.50",
        "DB_USER": "sa",
        "DB_PASSWORD": "password",
        "DB_DATABASE": "DataWarehouse"
      }
    }
  }
}
```

## 🏗️ Architecture

The project uses an **Adapter Pattern**:

1. **Server** receives a request (e.g., `execute_query`).
2. **Factory** checks `DB_TYPE` and instantiates the correct class (e.g., `MSSQLAdapter`).
3. **Adapter** translates the generic request into specific driver calls (`pymssql`, `pyodbc`, etc.).
4. **Response** is formatted back to a standard JSON structure for the AI.

This means you can switch databases just by changing the config, without changing the AI's prompts or logic.

## 📄 License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [BryR0](https://github.com/BryR0)
- **Source:** [BryR0/sql-mcp](https://github.com/BryR0/sql-mcp)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-bryr0-sql-mcp
- Seller: https://agentstack.voostack.com/s/bryr0
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
