Generic SQL MCP Server
A configurable, database-agnostic MCP server that enables LLMs to safely interact with SQL databases through read-only operations and schema inspection.
README
Generic SQL MCP Server
A configurable, database-agnostic Model Context Protocol (MCP) server that enables Large Language Models (LLMs) to safely interact with SQL databases.
Overview
This project is a Proof of Concept (POC) that demonstrates how a Model Context Protocol (MCP) server can securely expose SQL database capabilities to AI assistants while maintaining a clean and configurable architecture.
Rather than connecting directly to a production database, this project uses a local demonstration database to validate the overall architecture. The design allows the same MCP server to connect to different SQL databases simply by changing configuration files, without modifying application code.
The project serves as a foundation for future integration with enterprise databases such as ERP systems.
Objectives
The primary objectives of this project are:
- Demonstrate how an MCP server communicates with SQL databases.
- Support multiple SQL database engines through configuration.
- Keep the implementation database-agnostic.
- Expose generic database capabilities to LLMs.
- Allow only safe, read-only SQL operations.
- Build a modular and extensible architecture.
Features
- Configurable database connections
- SQLite, MySQL and PostgreSQL support
- Generic SQL database tools
- Read-only SQL execution
- SQL validation layer
- Modular architecture
- Configuration-driven design
- Logging and error handling
- MCP-compliant implementation
Project Architecture
User
│
▼
MCP Client
(Claude Desktop, etc.)
│
▼
MCP Server
│
MCP Tools
│
Database Service
│
Database Adapter
│
SQLAlchemy
│
SQL Database
Project Structure
sql-mcp-server/
├── CLAUDE.md
├── README.md
├── requirements.md
├── architecture.md
├── tasks.md
│
├── app/
│ ├── server.py
│ ├── config.py
│ ├── database/
│ ├── tools/
│ ├── security/
│ └── utils/
│
├── configs/
│ ├── sqlite.yaml
│ ├── mysql.yaml
│ └── postgres.yaml
│
├── demo_db/
│ ├── schema.sql
│ ├── seed.sql
│ └── school.db
│
├── tests/
│
├── requirements.txt
│
└── .env.example
Supported Databases
| Database | Status |
|---|---|
| SQLite | ✅ Supported |
| MySQL | ✅ Supported |
| PostgreSQL | ✅ Supported |
SQLite is used as the primary demonstration database.
Supported MCP Capabilities
The MCP server provides generic database functionality rather than business-specific operations.
Examples include:
- List available tables
- Inspect table schemas
- Execute read-only SQL queries
- Retrieve database metadata
This allows the server to work with virtually any SQL database.
Security
The server operates in read-only mode.
Allowed SQL:
- SELECT
Blocked SQL:
- INSERT
- UPDATE
- DELETE
- DROP
- ALTER
- CREATE
- TRUNCATE
Every SQL statement is validated before execution.
Technology Stack
Language
- Python 3.12+
Core Libraries
- Official Python MCP SDK
- SQLAlchemy
- Pydantic
- PyYAML
- python-dotenv
Database Drivers
- SQLite
- PyMySQL
- psycopg2-binary
Getting Started
1. Clone the Repository
git clone <repository-url>
cd sql-mcp-server
2. Create a Virtual Environment
python -m venv .venv
Activate it.
Windows
.venv\Scripts\activate
Linux / macOS
source .venv/bin/activate
3. Install Dependencies
pip install -r requirements.txt
4. Configure the Database
Choose one configuration from the configs/ directory.
Example:
database:
type: sqlite
database: demo_db/school.db
5. Start the MCP Server
python app/server.py
6. Connect an MCP Client
Connect the server using any MCP-compatible client such as:
- Claude Desktop
- Claude Code
- MCP Inspector
- Other MCP-compatible clients
Demonstration
Example interactions:
List all tables.
Describe the students table.
Show all records from teachers.
Find students older than 15.
Show the schema of attendance.
Future Improvements
Possible future enhancements include:
- Authentication
- Role-based authorization
- Query auditing
- Connection pooling
- Dynamic tool generation
- Enterprise ERP integration
- Production deployment
- Multi-database connections
- Advanced SQL validation
Documentation
Additional project documentation:
CLAUDE.md— Instructions and development guidelines for Claude Coderequirements.md— Functional requirementsarchitecture.md— Technical architecturetasks.md— Development roadmap
Project Status
Current Status
🚧 Proof of Concept (POC)
The project is under active development and is intended to validate the feasibility of using MCP as a secure interface between LLMs and SQL databases.
License
This project is intended for internal evaluation and demonstration purposes.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.