mcp_server

NitishRaman/mcp_server

3.2

If you are the rightful owner of mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MCP Server is a modular Python-based platform designed to ingest, describe, query, and visualize structured datasets using LLMs, vector databases, and an intuitive Streamlit UI.

๐Ÿš€ MCP Server

A modular Python-based platform to ingest, describe, query, and visualize structured datasets using LLMs, vector databases, and an intuitive Streamlit UI.


๐Ÿ“‹ Overview & Use Case

MCP Server is ideal for:

  • ๐Ÿ“Š Data analysts exploring unknown datasets
  • ๐Ÿง  LLM-based schema summarization
  • ๐Ÿงพ Prompt-to-SQL generation with conversational context
  • ๐ŸŒ Teams working with Supabase or local data pipelines

๐Ÿ”ง Key Features

  • ๐Ÿ“ฅ Upload & parse CSV, Excel, ZIP, JSON, XML, and SQLite
  • ๐Ÿง  Generate column descriptions, PK/FK inference, and tags via LLM
  • ๐Ÿ” Vectorize schemas with sentence-transformers and ChromaDB
  • ๐Ÿงพ Translate prompts to SQL (with logs)
  • ๐Ÿ’ฌ Multi-turn chat with LLM to explore database
  • ๐Ÿ“ˆ Build visual charts from structured data
  • ๐Ÿ›ข๏ธ Push SQLite tables to Supabase
  • ๐ŸŒ Streamlit UI + FastAPI API backend

๐Ÿ—‚๏ธ Project Structure

๐Ÿ“ mcp_server_project/
โ”œโ”€โ”€ ๐Ÿ“ app/                         # Core modules
โ”‚   โ”œโ”€โ”€ core/                      # Constants and config
โ”‚   โ”œโ”€โ”€ chromadb_prompt_utils.py
โ”‚   โ”œโ”€โ”€ chart_generator.py
โ”‚   โ”œโ”€โ”€ data_ingestor.py
โ”‚   โ”œโ”€โ”€ data_ingestor_server.py
โ”‚   โ”œโ”€โ”€ llm_client.py
โ”‚   โ”œโ”€โ”€ natural_sql_query.py
โ”‚   โ”œโ”€โ”€ schema_describer.py
โ”‚   โ”œโ”€โ”€ schema_diagram.py
โ”‚   โ”œโ”€โ”€ schema_vectorizer.py
โ”‚   โ””โ”€โ”€ supabase_utils.py
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ mcp_server/
โ”‚   โ””โ”€โ”€ files/                     # Generated files per dataset
โ”‚       โ””โ”€โ”€ chroma/                # Vector DB store
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ sample_datasets/            # Sample datasets to test flow
โ”œโ”€โ”€ ๐Ÿ“ pages/                      # Streamlit UI pages (modular)
โ”‚   โ”œโ”€โ”€ 1 Upload & Preview.py
โ”‚   โ”œโ”€โ”€ 2 Description & Schema Generator.py
โ”‚   โ”œโ”€โ”€ 3 Prompt to SQL.py
โ”‚   โ”œโ”€โ”€ 4 Chart Generator.py
โ”‚   โ”œโ”€โ”€ 5 Supabase.py
โ”‚   โ””โ”€โ”€ 6 Interactive Prompt Chat.py
โ”‚
โ”œโ”€โ”€ Home.py                       # Landing page
โ”œโ”€โ”€ app_server.py                 # FastAPI backend
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ run.bat                       # One-click launcher
โ”œโ”€โ”€ mcp-documentation.pdf         # Full documentation
โ”œโ”€โ”€ mcp-presentation.pdf          # Project presentation deck
โ””โ”€โ”€ README.md                     # This file

โš™๏ธ Setup

โœ… One-click (Windows)

run.bat

This will:

  • Create .venv
  • Install dependencies
  • Launch ChromaDB, pull Ollama, start backend + UI

๐Ÿง Manual (Linux/macOS)

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app_server:app --reload

๐Ÿ“Š Streamlit Modules

1. Upload & Preview

  • save_and_ingest_file()
  • Helpers: read_csv_from_bytes(), read_zip(), etc.

2. Description & Schema

  • describe_database()
  • Helpers: llm_infer_keys_from_description(), vectorize_database()

3. Prompt to SQL

  • generate_sql_from_prompt()
  • Helpers: run_query_on_db(), log_successful_query()

4. Chart Generator

  • plot_chart(df, chart_type, x_col, y_col)

5. Supabase

  • handle_supabase_connection()
  • Helpers: fetch_supabase_tables(), fetch_table_sample()

6. Interactive Prompt Chat

  • generate_sql_from_prompt()
  • Helpers: generate_sql_strict(), log_query()

๐Ÿ’พ Output Directory (per dataset)

๐Ÿ“ files/my_dataset/
โ”œโ”€โ”€ my_dataset.db                  # SQLite version
โ”œโ”€โ”€ *.csv / *.json / *.xml         # Original input
โ”œโ”€โ”€ my_dataset_description.txt     # LLM-generated schema summary
โ”œโ”€โ”€ my_dataset_metadata.json       # PK, FK, tags, etc.
โ”œโ”€โ”€ query_log.txt                  # Prompt-to-SQL history
โ”œโ”€โ”€ interactive_query_log.txt      # Chat history
โ”œโ”€โ”€ my_dataset_supabase.png        # ER Diagram (optional)

๐Ÿ”Ž Vector Embedding (ChromaDB)

Uses sentence-transformers to embed column names, types, and summaries. Stored per dataset under collection schema_<dataset>.

โœ… Enables context-aware SQL, semantic search, and chat memory.


๐Ÿงช Run & Test

streamlit run Home.py            # Run full UI
uvicorn app_server:app --reload  # Backend API only

๐Ÿ“ฆ Key Dependencies (requirements.txt)

๐Ÿ”น Core

  • pandas, numpy, openpyxl, sqlparse, pyyaml, xmlschema, jsonschema, tqdm, jinja2, chardet

๐Ÿ”น Visualization

  • matplotlib, graphviz, eralchemy

๐Ÿ”น UI & Backend

  • streamlit>=1.30, fastapi, uvicorn, ipywidgets, ipython, notebook

๐Ÿ”น LLM + Vector DB

  • openai, ollama, gpt4all, chromadb>=0.5.0, sentence-transformers, torch, scikit-learn

๐Ÿ”น SQL / DB

  • sqlite-utils, psycopg2-binary

๐Ÿ”น Utilities

  • typing-extensions

โ— Troubleshooting

IssueSolution
Port 8000 in useKill existing app or change port
Ollama pull failsMake sure Ollama CLI is installed
ChromaDB won't startActivate venv + ensure port open
No module named xyzRun pip install -r requirements.txt

๐Ÿ› ๏ธ Extending the Project

  • Add new file readers in data_ingestor.py
  • Swap models in llm_client.py
  • Customize outputs (descriptions, diagrams, SQL prompts)

๐Ÿ“š Documentation

  • ๐Ÿ“˜ Full Guide โ†’ mcp-documentation.pdf
  • ๐Ÿ“Š Pitch Deck โ†’ mcp-presentation.pdf