ChatSQL is a command-line tool that lets you query a PostgreSQL database using natural language. It uses Google Gemini to convert your questions into SQL, and FastMCP to execute them against your database.
- Python 3.11+
- PostgreSQL (via
psycopg2
) - FastMCP (Modular Composable Protocol)
- Google Gemini (for Natural Language to SQL conversion)
- Rich (for pretty command-line interface output)
- python-dotenv (for environment variable configuration)
You ask a question in plain English, and ChatSQL generates and executes the SQL, then displays the results.
Input: "Get all employees earning more than 50000"
Generated SQL:
SELECT * FROM employees WHERE salary > 50000;
Output:
+----+---------+--------+------------+-----------+------------+
| id | name | salary | phone_no | address | department |
+----+---------+--------+------------+-----------+------------+
| 1 | Alice | 75000 | 9876543210 | New York | HR |
| 2 | Bob | 65000 | 1234567890 | Chicago | Finance |
+----+---------+--------+------------+-----------+------------+
> git clone https://github.com/thomasjerard/ChatSQL.git
> cd chatSQL
- Bash shell is required (default on macOS/Linux).
- Python 3.11+ must be installed and accessible via your terminal. If not installed,
For macOS:
brew install python@3.11
For Linux:
sudo apt install python3.11 python3.11-venv
DB_NAME=chattosql
DB_USER=postgres
DB_PASS=yourpassword
DB_HOST=localhost
DB_PORT=5432
GEMINI_API_KEY=your-gemini-api-key
You’ll need two separate terminals:
🖥️ Terminal 1 — Start the Server
./run_server.sh
💬Terminal 2 — Start the Client
./run_client.sh
Once the client starts, you'll see a prompt like:
💬 ChatSQL (Gemini + FastMCP) 🗨️ Ask (NL):
-
Each script (run_server.sh / run_client.sh) performs the following:
-
Deletes any existing virtual environment and creates a fresh one.
-
Loads environment variables from the .env file.
-
Installs required Python dependencies from requirements.txt.
-
Sets up PostgreSQL:
-
Creates the database (chattosql)
-
Adds the user (postgres)
-
Creates a sample employees table
-
Starts the FastMCP server or the ChatSQL CLI client, depending on the script.