Skip to main content
Glama
karthikingithub

Pagila MCP Server

Pagila Database AI Assistant

This project is a Streamlit-based chatbot that allows users to query a PostgreSQL database (Pagila schema) using natural language. It leverages Google's Gemini API for SQL generation and the Model Context Protocol (MCP) for secure database execution.

Features

  • Natural Language to SQL: Converts English questions into valid SQL queries.

  • Agentic Workflow: The AI autonomously explores the database schema (listing tables, checking columns) before writing queries.

  • Vector Caching (RAG): Uses ChromaDB to cache successful SQL queries locally. If a similar question is asked again, the cached SQL is executed immediately, saving API costs and time.

  • Model Context Protocol (MCP): Uses a dedicated local server (mcp_pagila_server.py) to handle database operations, separating the UI from the backend logic.

  • Cost Tracking: Monitors token usage and estimates costs for both the current session and global history.

  • Schema Visualization: Displays the database schema diagram and metadata within the UI.

Architecture

  1. Frontend: Streamlit (app.py) handles user input, chat history, and visualization.

  2. AI Brain: Google Gemini (via google-generativeai) acts as the reasoning engine.

  3. Backend: An MCP Server (mcp_pagila_server.py) runs as a subprocess, exposing tools like list_tables, get_table_schema, and execute_sql.

  4. Database: PostgreSQL hosting the Pagila sample database.

  5. Cache: ChromaDB stores embeddings of questions and their corresponding SQL.

Prerequisites

  • Python 3.10+

  • PostgreSQL database with the Pagila schema installed.

  • Google Gemini API Key.

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd mcp-pagila-server
  2. Install dependencies:

    pip install -r requirements.txt
  3. Configure Environment: Create a config.env file in the root directory:

    GEMINI_API_KEY=your_google_api_key_here
    PGHOST=localhost
    PGUSER=your_postgres_user
    PGPASSWORD=your_postgres_password
    PGDATABASE=pagila
    LOG_DIR=logs

    Note: It is recommended to use a read-only database user for security.

Usage

Run the Streamlit application:

streamlit run app.py

Testing & Inspection + +streamlit_app.py is provided as a lightweight, chat-like interface to test the MCP server directly without the full Gemini Agent loop. It is useful for debugging the MCP server connection and running raw SQL (using a run: prefix) or heuristic-based queries

Project Structure

  • app.py: Main Streamlit application.

  • mcp_pagila_server.py: MCP server implementation.

  • pagila-metadata.txt: Text-based schema summary for the AI.

  • requirements.txt: Python dependencies.

  • vector_store/: Directory where ChromaDB persists data (ignored in git).

  • usage_stats.json: Local file tracking usage costs (ignored in git).

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karthikingithub/pagila-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server