MCP server by Vicus-Brits
MCP Database Query Server
An MCP (Model Context Protocol) server that lets a VS Code AI agent query databases through a structured, step-by-step workflow.
Supported Databases
- SQLite — via Python's built-in
sqlite3(always available) - PostgreSQL — via
psycopg2(optional — installpsycopg2-binary) - MySQL — via
mysql-connector-python(optional) - Microsoft SQL Server — via
pyodbc(optional — requires ODBC drivers)
Note: Only SQLite support is required to get started. The server loads database adapters lazily — missing optional drivers won't prevent the server from starting.
Setup
1. Install dependencies
pip install -r requirements.txt
2. Configure connections
Edit config.json to add your database connections:
{
"connections": [
{
"name": "My Postgres",
"type": "postgres",
"host": "localhost",
"port": 5432,
"database": "mydb",
"username": "user",
"password": "pass"
},
{
"name": "Local SQLite",
"type": "sqlite",
"database": "./data/local.db"
}
]
}
3. (Optional) Seed the sample SQLite database
python seed_sample_db.py
This creates data/sample.db with sample customers, products, orders, and order items.
4. Register in VS Code
Add the server to your VS Code MCP settings (.vscode/mcp.json in the workspace root):
{
"servers": {
"database-query": {
"command": "python",
"args": ["server.py"],
"cwd": "${workspaceFolder}"
}
}
}
Important:
${workspaceFolder}must resolve to the directory containingserver.py. If this project is inside a subfolder of your workspace, adjust to"${workspaceFolder}/MCP Server".
5. Start the MCP Server in VS Code
The server needs to be started by VS Code before the tools become available:
- Open the Command Palette (
Ctrl+Shift+P) - Run "MCP: List Servers" — you should see
database-query - If it shows as stopped, select it and choose Start
Alternatively, run "MCP: Restart Server" and pick database-query.
Once the server is running, the prompt and tools (get_connections, list_tables, get_table_schema, query_table) will be available to the AI agent.
MCP Tools
The server exposes four tools, designed to be used in order:
| # | Tool | Purpose |
|---|------|---------|
| 1 | get_connections | List available database connections (no passwords exposed) |
| 2 | list_tables | List all user tables in a database |
| 3 | get_table_schema | Get column details for a specific table |
| 4 | query_table | Execute a read-only SELECT query |
Security
- Database passwords are never exposed in tool responses.
- Only
SELECT/WITH/EXPLAINstatements are allowed — all write and DDL operations are rejected. - Query results are capped at 500 rows.
Project Structure
MCP Server/
├── config.json # Database connection configuration
├── prompt.md # Design / prompt spec
├── seed_sample_db.py # Creates sample SQLite database
├── server.py # Main MCP server entry point
├── requirements.txt
├── README.md
├── data/
│ └── sample.db # Sample SQLite database (created by seed script)
├── db/
│ ├── __init__.py
│ ├── connection.py # Connection factory (lazy-loads adapters)
│ ├── postgres.py # PostgreSQL adapter
│ ├── mysql.py # MySQL adapter
│ ├── sqlite_adapter.py # SQLite adapter
│ └── mssql.py # MSSQL adapter
└── tools/
├── __init__.py
├── get_connections.py
├── list_tables.py
├── get_table_schema.py
└── query_table.py