Educational SQL learning platform with Gradio UI for teaching SQL concepts through interactive database operations and SQL playground
This is a Gradio web UI, not an MCP server. No MCP protocol implementation detected. Tools are Gradio callback functions, not MCP tool definitions. No JSON Schema input validation, no structured error handling, no tool registration via MCP. Transport is unknown (likely HTTP via Gradio's built-in server). Tool descriptions are present but minimal (10-50 chars). Parameters lack type constraints and validation. No output schemas documented. Security: raw SQL execution exposed via execute_raw_sql and execute_sql tools creates SQL injection risk. No permission gates, no audit logging, no secret injection pattern. Composition: multiple tools do similar things (execute_raw_sql, run_query, execute_sql) without clear differentiation. Not production-grade for agent use.
Add a new course to the database
Add a new student to the database with name and age
Delete a student by ID
Enroll a student in a course with marks
Execute raw SQL queries and return results
Execute SQL queries and return results as dataframe with status message
Get analytics data showing average marks per course
Not an MCP server, this is a Gradio web UI. No MCP protocol implementation, no tool registration via MCP, no structured tool definitions. Cannot be used as an MCP server by hosted clients or agent frameworks.
SQL injection vulnerability: execute_raw_sql, run_query, and execute_sql accept arbitrary SQL strings with no sanitization or parameterization. An LLM or user can pass DROP TABLE or DELETE statements. No input validation, no prepared statements.
Duplicate/overlapping tools: execute_raw_sql, run_query, and execute_sql all execute SQL queries but have different names and unclear distinctions. LLMs cannot disambiguate which to use. Violates single-responsibility principle.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Get grouped data showing count of students by age
Get joined data from students, courses, and enrollments with INNER JOIN
Retrieve joined data from students, courses, and enrollments tables
Get joined data using LEFT JOIN between students and enrollments
Get student names using subquery for marks greater than 80
Get enrollment data with window function ranking by marks
Initialize database and create tables for students, courses, and enrollments
Run SQL queries with support for SELECT and other operations
Update student information by ID
No output schemas documented. Tools return dataframes or strings but LLMs have no schema to understand structure, field names, or types. Prevents downstream tool chaining and forces LLM to parse unstructured output.
No error handling or recovery guidance. Tools fail silently or return raw exceptions. No categorization of errors as retryable, user-fixable, or fatal. LLMs cannot self-correct or plan recovery.