text2sql-agent
Enables natural language querying of DuckDB databases, with automatic schema discovery, multi-table joins, and read-only SQL execution.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@text2sql-agentShow total sales by region from the orders and customers CSVs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Text2SQL-MCP-Agent
A modular, high-performance Text-to-SQL AI agent and Streamlit copilot powered by LangGraph, LangChain, native MCP server integration, dynamic CSV schema linking, and read-only AST safety guardrails.
Live Web App: text2sql-mcp-agent.streamlit.app
Overview
Text2SQL-MCP-Agent bridges the gap between natural language business questions and enterprise data warehouses / dynamic CSV files. Built on modular AI system design principles and orchestrated via LangGraph StateGraph and LangChain LCEL Runnables, it converts natural language text into precise, AST-validated read-only SQL queries, executes them safely against DuckDB, and returns tabular insights alongside natural language answers.
Key Features
LangGraph & LangChain Engine: Stateful graph orchestration (
StateGraph) with nodes for schema linking, SQL drafting, semantic constraint alignment evaluation, AST validation, execution, self-correction, and answer formatting.3-Tier Routing Architecture: Automatically routes simple deterministic queries to a sub-millisecond Heuristic SQL Synthesizer, complex analytical queries to your Hugging Face Fine-Tuned Model (
Priyanka221105/text2sql-qwen2.5-duckdb/Qwen/Qwen2.5-Coder-32B-Instruct), and uses Gemini 3.6 Flash as an online backup.Semantic Constraint Alignment Guardrail: Inspects generated SQL against the user's natural language question for completeness (catching relative date boundaries like "last day of month", complex filters, or ranks) and triggers self-correction handoff to the fine-tuned model if constraints are missed.
Multi-Dialect SQL Transpilation (MySQL Default): Automatically formats and transpiles executed queries into MySQL Dialect (with on-the-fly toggling between MySQL, DuckDB, PostgreSQL, and Snowflake via
sqlglot).Automated GitHub Actions CI/CD: Integrated GitHub Actions CI workflow (
.github/workflows/ci.yml) for automated test suite execution on every push and pull request.Consolidated Clean Codebase: Streamlined down to 4 self-contained Python modules (
src/agent.py,src/engine.py,src/sandbox.py,src/app.py) for maximum human readability and zero UI clutter.Dynamic Multi-Table CSV Ingestion: Drag-and-drop multiple CSV files via Streamlit or MCP; DuckDB automatically registers each file as a separate queryable table.
Automated Multi-Table JOIN Discovery: Automatically detects shared Primary/Foreign Key relationships across tables (e.g.
orders.customer_id <-> customers.customer_id) and injects candidate join conditions into prompt context.Value-Aware Categorical Linking: Matches literal text values (e.g.
'Consumer','Seattle') against sample categorical values across database columns.AST Safety Guardrails (
SQLGlot): Statically parses SQL syntax trees to enforce single read-onlySELECTqueries and prevent SQL injection or DDL/DML mutation statements.Native Model Context Protocol (MCP): Exposes
@mcp.tool()and@mcp.resource()endpoints so Claude Desktop, Antigravity IDE, Cursor, and AI agents can query the warehouse.Streamlit Web UI (
src/app.py): Interactive web dashboard featuring CSV drag-and-drop, dynamic schema inspector, chat bar, multi-dialect SQL query viewer, active engine badge, and Plotly visual charts.
Related MCP server: Vela MCP Server
System Design Architecture
┌──────────────────────────────────────────────────────────────────────────┐
│ MCP CLIENT HOST / STREAMLIT APP UI │
│ (Claude Desktop / Cursor / Antigravity IDE / Streamlit) │
└────────────────────────────────────┬─────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ LANGGRAPH & LANGCHAIN 3-TIER ROUTING AGENT │
│ │
│ INTENT CLASSIFIER & ROUTER │
│ ├─ Tier 1: Simple Aggregations & Summary ➔ Heuristic Synthesizer (0ms)│
│ ├─ Tier 2: Complex Joins, CTEs, MoM ➔ Hugging Face Fine-Tuned LLM │
│ └─ Tier 3: Online LLM Backup ➔ Gemini 3.6 Flash (LangChain) │
│ │
│ LANGGRAPH STATEGRAPH NODES │
│ ├─ Node 1: Value-Aware Schema & Semantic Context Linking │
│ ├─ Node 2: SQL Drafting & Exemplars Injection │
│ ├─ Node 3: Read-Only DuckDB Sandbox Execution │
│ ├─ Node 4: Semantic Constraint Alignment Guardrail │
│ ├─ Node 5: Bounded Self-Correction Retry Loop (Max 2 retries) │
│ └─ Node 6: Multi-Dialect Transpilation (MySQL) & NL Formatting │
└────────────────────────────────────┬─────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ DUCKDB READ-ONLY EXECUTION SANDBOX │
└──────────────────────────────────────────────────────────────────────────┘Quickstart Guide
1. Installation
Clone the repository and install dependencies:
git clone https://github.com/PriyankaHichkad/Text2SQL-MCP-Agent.git
cd Text2SQL-MCP-Agent
pip install -r requirements.txt2. Seed Sample Database
Generate the sample e-commerce star schema (data/sample_warehouse.db) and data/superstore.csv:
python scripts/seed_db.py3. Launch Streamlit Web App
Run the interactive copilot dashboard:
streamlit run src/app.py4. Launch MCP Server
Run the Model Context Protocol server for Claude Desktop / IDEs:
python -m src.mcp_serverClaude Desktop Integration (claude_desktop_config.json):
{
"mcpServers": {
"text2sql-agent": {
"command": "python",
"args": ["-m", "src.mcp_server"],
"cwd": "/path/to/Text2SQL-MCP-Agent"
}
}
}Repository Structure
Text2SQL-MCP-Agent/
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI automated test workflow
├── README.md # System overview & setup guide
├── pyproject.toml # Project metadata & dependencies
├── requirements.txt # Pip dependencies
├── config/
│ ├── semantic_layer.yaml # Business metrics & macro definitions
│ └── warehouse_config.yaml # Database configuration & security guardrails
├── scripts/
│ └── seed_db.py # Data seed script for DuckDB sample database
├── src/
│ ├── __init__.py
│ ├── app.py # Streamlit Web Application entrypoint
│ ├── agent.py # LangGraph StateGraph, Intent Router & Runnable Nodes
│ ├── engine.py # Schema Catalog, Linker, Exemplars & LangChain LLM Router
│ ├── sandbox.py # SQLGlot AST Validator & Read-Only DuckDB Sandbox
│ └── mcp_server.py # FastMCP server exposing tools & resources
└── tests/
├── test_edge_cases.py # Edge-case evaluation test suite
├── test_validator.py # AST validator unit tests
└── test_sandbox.py # Query sandbox unit testsEvals & Verification
Run the automated test suite to verify AST security guardrails, dual-intent routing, and execution sandbox safety:
pytest*Current test suite result: 14/14 tests passing in hermetic execution (100% success).*
Tools & Technologies
Python 3.10+ — Core programming language
LangChain & LangGraph — Stateful agent graph orchestration & LCEL Runnables
DuckDB — In-memory analytical database engine
Model Context Protocol (MCP) — Open protocol for AI tools & context
FastMCP — High-level Python MCP server framework
Streamlit — Interactive web application interface
SQLGlot — SQL parser, AST validator & transpiler
Google Gemini API — LLM reasoning & SQL query generation (Free Tier)
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Related MCP Servers
- FlicenseAqualityCmaintenanceEnables read-only exploration and querying of PostgreSQL or MySQL databases via MCP, with schema discovery, safe SQL validation, natural language to SQL conversion, and CSV export.111
- AlicenseNot gradedqualityBmaintenanceEnables governed, agent-agnostic data exploration by allowing users to ask natural language questions through MCP-compatible agents, executing safe, permission-scoped queries against data sources and returning interactive charts.8Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables natural language data analysis on uploaded CSV files by converting them to SQLite and exposing read-only database tools via MCP. Integrates with Ollama LLM to translate user questions into safe SQL queries.
- AlicenseNot gradedqualityBmaintenanceProvides read-only, guarded access to business databases via MCP. Enables natural language querying with built-in security barriers like table allowlists, PII masking, and audit logging.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/PriyankaHichkad/Text2SQL-MCP-Agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server