Database Schema MCP Server
by Adhikram
A powerful MCP server that provides tools to read and expose database schemas from various database types. It supports PostgreSQL, MySQL, SQLite, and more.
View on GitHub
Last updated: N/A
Database Schema MCP Server
A powerful MCP server that provides tools to read and expose database schemas from various database types (PostgreSQL, MySQL, SQLite, etc.).
🌟 Features
- Connect to different types of databases
- List all tables in a database
- Get detailed schema information for specific tables
- Get complete database schema including tables, views, and indexes
- Support for multiple database types (PostgreSQL, MySQL, SQLite)
🚀 Installation
Prerequisites
- Python 3.x
- Virtual environment (recommended)
Basic Installation
- Create and activate a virtual environment:
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Unix/macOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
Windows MCP Installation
-
Install Node.js:
- Download and install from Node.js official website
- Verify installation by running
node --version
in PowerShell
-
Update System Path:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
-
If Node.js is not recognized, manually add to Path:
- Press
Windows + R
- Type
sysdm.cpl
and press Enter - Go to "Advanced" tab
- Click "Environment Variables"
- Under "System variables", find and select "Path"
- Click "Edit"
- Add
C:\Program Files\nodejs\
if not present - Click "OK" on all windows
- Restart your computer
- Press
-
Install MCP:
- Download the
mcp-install.ps1
script - Unblock the file (right-click → Properties → Unblock)
- Open PowerShell as Administrator and run:
Set-ExecutionPolicy unrestricted
- Navigate to script location and run:
.\mcp-install.ps1 @modelcontextprotocol/server-postgres
- Exit Claude Desktop completely (check system tray)
- Configure server in
C:\Users\YOUR_USERNAME\AppData\Roaming\Claude\claude_desktop_config.json
- Copy MCP server config to
mcp.json
in Cursor - Restart Cursor
- Download the
MCP Configuration Example
Create a .cursor/mcp.json
file in your project root with the following structure:
{
"mcpServers": {
"local-db": {
"args": [
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-postgres\\dist\\index.js",
"database-url"
],
"command": "node"
},
"staging-db": {
"args": [
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-postgres\\dist\\index.js",
"database-url"
],
"command": "node"
},
"production-db": {
"args": [
"C:\\Users\\YOUR_USERNAME\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-postgres\\dist\\index.js",
"database-url"
],
"command": "node"
}
}
}
Replace YOUR_USERNAME
with your Windows username and ensure the paths match your Node.js module installation location.
💻 Usage
Starting the Server
python src/server.py
Available Tools
1. Connect to Database
config = {
"type": "postgresql", # or "mysql", "sqlite"
"host": "localhost",
"port": 5432,
"database": "mydb",
"username": "user",
"password": "password"
}
result = await connect_database(config)
2. List Tables
tables = await list_tables("postgresql://user:password@localhost:5432/mydb")
3. Get Table Schema
schema = await get_table_schema("postgresql://user:password@localhost:5432/mydb", "users")
4. Get Database Schema
schema = await get_database_schema("postgresql://user:password@localhost:5432/mydb")
📚 Example Usage with Claude
# Connect to a database
config = {
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "mydb",
"username": "user",
"password": "password"
}
await connect_database(config)
# Get the complete schema
schema = await get_database_schema("postgresql://user:password@localhost:5432/mydb")
# Analyze the schema
print(f"Database has {len(schema['tables'])} tables")
for table_name, table_info in schema['tables'].items():
print(f"\nTable: {table_name}")
print(f"Columns: {len(table_info['columns'])}")
print(f"Primary Keys: {table_info['primary_keys']}")
print(f"Foreign Keys: {len(table_info['foreign_keys'])}")
🔒 Security Best Practices
- Never expose sensitive database credentials in client-side code
- Use environment variables or secure configuration management for credentials
- Implement proper access controls and authentication
- Use SSL/TLS for database connections when possible