Skip to content

A lightweight, extensible MCP server for executing schema-aware SQL queries. Built on FastMCP and compatible with any SQLAlchemy-supported database.

License

Notifications You must be signed in to change notification settings

devsenweb/mcp-server-for-db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ—ƒοΈ MCP Server for Databases

MIT License Python Version

A lightweight implementation of the Model Context Protocol (MCP) for database operations. This server enables AI models to interact with SQL databases through a structured, tool-based interface, providing safe and efficient database access.


πŸ“š Table of Contents


πŸš€ Key Capabilities

πŸ› οΈ MCP Tool Integration

  • Exposes database operations as MCP tools for AI model interaction
  • Supports natural language prompts for database exploration
  • Provides schema-aware query building assistance

πŸ’Ύ Database Support

  • Works with any SQLAlchemy-compatible database (SQLite, PostgreSQL, MySQL, etc.)
  • Automatic schema inspection and reflection
  • Transaction support for multi-statement operations

πŸ“‘ MCP Features

  • Native MCP tools, resources, and prompts
  • Support for multiple transport protocols (http, WebSocket, stdio)
  • Structured error handling and validation

πŸ”§ Getting Started

βœ… Prerequisites

  • Python 3.8+
  • SQLite or any other SQLAlchemy-supported database

βš™οΈ Installation

git clone https://github.com/devsenweb/mcp-server-for-db.git
cd mcp-server-for-db
python -m venv .venv
source .venv/bin/activate  # macOS/Linux
# OR
.venv\Scripts\activate  # Windows
pip install -r requirements.txt

πŸ› οΈ Configuration

Edit config.yaml:

db:
  uri: sqlite:///./example.db  # Supports any SQLAlchemy URI

(Optional) Create a sample DB:

python create_database.py

▢️ Starting the MCP Server

python -m mcp_server.server --transport http --port 8080
# or
python -m mcp_server.server --transport ws --port 8080
# or
python -m mcp_server.server --transport stdio

🧠 MCP Interface

πŸ“Œ Tool Definitions

execute_query

{
  "jsonrpc": "2.0",
  "method": "tools/execute_query",
  "params": {
    "sql": "SELECT * FROM users WHERE age > 25"
  },
  "id": 1
}

validate_sql

{
  "jsonrpc": "2.0",
  "method": "tools/validate_sql",
  "params": {
    "sql": "SELECT * FROM users"
  },
  "id": 2
}

πŸ“ Resource Endpoints

db://schema

{
  "jsonrpc": "2.0",
  "method": "resources/get",
  "params": {
    "uri": "db://schema"
  },
  "id": 3
}

db://tables

{
  "jsonrpc": "2.0",
  "method": "resources/get",
  "params": {
    "uri": "db://tables"
  },
  "id": 4
}

πŸ› οΈ IDE and Tool Integration

(Cursor IDE) .cursor/mcp.json

{
  "mcpServers": {
    "database-query": {
      "url": "http://localhost:8000/mcp",
      "transport": "http"
    }
  }
}

MCP Inspector

npm install -g @modelcontextprotocol/inspector
mcp-inspector --transport http --url http://localhost:8000/mcp
# Visit http://localhost:3000

βš™οΈ Development

pip install -r requirements-dev.txt
pytest tests/

πŸ“ Project Structure

mcp-server-for-db/
β”œβ”€β”€ mcp_server/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ server.py
β”‚   └── db_adapter.py
β”œβ”€β”€ config.yaml
β”œβ”€β”€ create_database.py
└── requirements.txt

🀝 Contributing

Contributions are welcome! Feel free to submit a Pull Request.


πŸ“„ License

Licensed under the MIT License. See LICENSE for details.


βš™οΈ MCP Server Configuration Reference

python -m mcp_server.server   --host 0.0.0.0   --port 8000   --transport http   --config ./config.yaml

πŸ™ Acknowledgments

  • Powered by SQLAlchemy
  • Based on the Model Context Protocol (MCP) standard

⚠️ Disclaimer

This project is a demo implementation of an MCP-compatible server for database interaction. It does not include SQL safety mechanisms, input sanitization, authentication, or permission controls.

⚠️ Use at your own risk. This server executes raw SQL and is intended for experimentation, prototyping, and local development only.

It is the responsibility of the user to implement proper guardrails, validation, and security measures before using this in any production or sensitive environment.

About

A lightweight, extensible MCP server for executing schema-aware SQL queries. Built on FastMCP and compatible with any SQLAlchemy-supported database.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages