| # PostgreSQL |
|
|
| This guide walks you through preparing your PostgreSQL environment for MCPMark evaluation. |
|
|
| ## 1. Setup PostgreSQL Environment |
|
|
| ### 1.1 Start PostgreSQL with Docker |
|
|
| 1. **Run PostgreSQL Container** |
| Start a PostgreSQL instance using Docker: |
| ```bash |
| docker run -d \ |
| --name mcpmark-postgres \ |
| -e POSTGRES_PASSWORD=password \ |
| -e POSTGRES_USER=postgres \ |
| -p 5432:5432 \ |
| pgvector/pgvector:0.8.0-pg17-bookworm |
| ``` |
|
|
| 2. **Verify Container is Running** |
| ```bash |
| docker ps | grep mcpmark-postgres |
| ``` |
|
|
| --- |
|
|
| ### 1.2 Import Sample Databases |
|
|
| 1. **Download Database Backups** |
| Download the backup files and place them in `./postgres_state/` directory: |
| ```bash |
| mkdir -p ./postgres_state |
| cd ./postgres_state |
| |
| # Download all database backups |
| wget https://storage.mcpmark.ai/postgres/employees.backup |
| wget https://storage.mcpmark.ai/postgres/chinook.backup |
| wget https://storage.mcpmark.ai/postgres/dvdrental.backup |
| wget https://storage.mcpmark.ai/postgres/sports.backup |
| wget https://storage.mcpmark.ai/postgres/lego.backup |
| |
| cd .. |
| ``` |
|
|
| 2. **Create Databases and Restore from Backups** |
| > Make sure your Postgres client version matches the server's version (e.g., pg17). |
|
|
| ```bash |
| # Set the password environment variable |
| export PGPASSWORD=password |
| |
| # Create and restore each database |
| createdb -h localhost -U postgres employees |
| pg_restore -h localhost -U postgres -d employees -v ./postgres_state/employees.backup |
| |
| createdb -h localhost -U postgres chinook |
| pg_restore -h localhost -U postgres -d chinook -v ./postgres_state/chinook.backup |
| |
| createdb -h localhost -U postgres dvdrental |
| pg_restore -h localhost -U postgres -d dvdrental -v ./postgres_state/dvdrental.backup |
| |
| createdb -h localhost -U postgres sports |
| pg_restore -h localhost -U postgres -d sports -v ./postgres_state/sports.backup |
| |
| createdb -h localhost -U postgres lego |
| pg_restore -h localhost -U postgres -d lego -v ./postgres_state/lego.backup |
| ``` |
|
|
| 3. **Verify Databases are Imported** |
| ```bash |
| # List all databases |
| PGPASSWORD=password psql -h localhost -U postgres -c "\l" |
| ``` |
|
|
| --- |
|
|
| ## 2. Configure Environment Variables |
|
|
| Configure environment variables: make sure the following enservice credentials are added in `.mcp_env`: |
| ```env |
| ## PostgreSQL Configuration |
| POSTGRES_HOST="localhost" |
| POSTGRES_PORT="5432" |
| POSTGRES_USERNAME="postgres" |
| POSTGRES_PASSWORD="password" |
| ``` |
|
|
|
|
| ## 3. Verify Connection |
|
|
| Verify the PostgreSQL setup is working correctly: |
|
|
| ```bash |
| # Test connection using psql |
| PGPASSWORD=password psql -h localhost -U postgres -c "SELECT version();" |
| ``` |
|
|
|
|
| ## 4. Common Operations |
|
|
| ### Stop PostgreSQL Container |
| ```bash |
| docker stop mcpmark-postgres |
| ``` |
|
|
| ### Start PostgreSQL Container |
| ```bash |
| docker start mcpmark-postgres |
| ``` |
|
|
| ### Remove PostgreSQL Container (Clean Setup) |
| ```bash |
| docker stop mcpmark-postgres |
| docker rm mcpmark-postgres |
| ``` |
|
|
| ### Access PostgreSQL Shell |
| ```bash |
| PGPASSWORD=mysecretpassword psql -h localhost -U postgres |
| ``` |
|
|
| ## 5. Running Postgres Experiment |
|
|
| For single task or task group, run |
| ```bash |
| python -m pipeline --exp-name EXPNAME --mcp postgres --tasks POSTGRESTASK --models MODEL |
| ``` |
| Here *EXPNAME* refers to customized experiment name, *POSTGRESTASK* refers to the postgres task or task group selected (see `tasks/` for specific task information), *MODEL* refers to the selected model (see [Introduction Page](../introduction.md) for model supported), *K* refers to the time of independent experiments. |
|
|
|
|
| ## 6. Troubleshooting |
|
|
| ### Port Already in Use |
| If port 5432 is already in use, you can use a different port: |
| ```bash |
| docker run -d \ |
| ```bash |
| docker run -d \ |
| --name mcpmark-postgres \ |
| -e POSTGRES_PASSWORD=password \ |
| -e POSTGRES_USER=postgres \ |
| -p 5433:5432 \ |
| pgvector/pgvector:0.8.0-pg17-bookworm |
| ``` |
| Remember to update `POSTGRES_PORT="5433"` in your `.mcp_env` file. |
| |
| ### Connection Refused |
| Ensure the Docker container is running and the port mapping is correct: |
| ```bash |
| docker ps |
| docker logs mcpmark-postgres |
| ``` |
|
|