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` parameterThis server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues