Skip to main content
Glama
swetanjana

MCP Server for Enterprise DB Tools

by swetanjana
README.md
# MCP Server for Enterprise DB Tools

A local Model Context Protocol server that lets Claude Desktop securely query a SQLite HR database without embedding raw database records in prompts.

## Features

- Exposes two MCP tools:
  - `get_leave_balance(employee_id)`
  - `list_pending_approvals(department, leave_type, limit)`
- Uses a local SQLite HR database with 100+ mock records
- Read-only database access
- Input validation
- Parameterized SQL queries
- Structured JSON tool responses
- Reproducible local setup

## Tech Stack

- Python
- MCP Python SDK
- SQLite
- Claude Desktop

## Project Structure

    enterprise-db-tools/
    ├── scripts/
    │   └── init_db.py
    ├── .gitignore
    ├── claude_desktop_config.example.json
    ├── README.md
    ├── requirements.txt
    └── server.py

## Windows Setup

Create and activate a virtual environment:

    python -m venv .venv
    .\.venv\Scripts\activate

Install dependencies:

    pip install "mcp[cli]"

Generate the SQLite database:

    python scripts\init_db.py

Test the tools locally:

    python -c "from server import get_leave_balance, list_pending_approvals; print(get_leave_balance('EMP0001')); print(list_pending_approvals(limit=2))"

Run the MCP server:

    python server.py

The server uses stdio transport and is meant to be launched by Claude Desktop.

## Claude Desktop Configuration

Copy `claude_desktop_config.example.json` into your Claude Desktop config file.

On Windows, the config file is usually located at:

    %APPDATA%\Claude\claude_desktop_config.json

Example config:

    {
      "mcpServers": {
        "enterprise-db-tools": {
          "command": "C:/Users/YOUR_USERNAME/projects/enterprise-db-tools/.venv/Scripts/python.exe",
          "args": [
            "C:/Users/YOUR_USERNAME/projects/enterprise-db-tools/server.py"
          ],
          "env": {
            "HR_DB_PATH": "C:/Users/YOUR_USERNAME/projects/enterprise-db-tools/hr.db"
          }
        }
      }
    }

Replace `YOUR_USERNAME` with your Windows username.

Restart Claude Desktop after saving the config.

## Example Prompts

    Use get_leave_balance for employee EMP0001.

    List pending approvals in Engineering, limit 5.

    Show pending sick leave approvals, limit 10.

## Security Controls

- SQLite is opened in read-only mode
- Only SELECT queries are allowed
- User input is validated
- SQL queries are parameterized
- Raw SQL is not accepted from the agent
- Result size is limited using a validated `limit` parameter