Quiz App MCP server
Quiz App MCP server
Ein Python MCP (Model Context Protocol) Server, erstellt mit FastMCP. Stellt Tools bereit für:
Claude Desktop, lokal, über stdio
claude.ai, remote, über HTTP (auf Render bereitgestellt)
Optional über SQLAlchemy mit einer MySQL-Datenbank unterstützt.
Projektstruktur
.
├── server.py # entry point — branches on RENDER env var (stdio vs HTTP)
├── config.py # loads .env, exposes shared SQLAlchemy engine
├── tools/
│ ├── __init__.py
│ └── quiz.py # tool definitions — register(mcp) adds them to a FastMCP instance
├── .env # secrets — never commit
├── .env.example
└── requirements.txtRelated MCP server: leafeep-mcp
Einrichtung
git clone https://github.com/sathvik1607/Quiz_mcp_server.git
cd Quiz_mcp_server
python -m venv venv
.\venv\Scripts\pip install -r requirements.txt
copy .env.example .env
# fill in .env with real DB credentials (or remove the DB_* lines if unused)Prüfe die DB-Verbindung kurz, bevor du sie in Claude Desktop einbindest:
.\venv\Scripts\python.exe -c "from config import engine; from sqlalchemy import text; print(engine.connect().execute(text('SELECT 1')).scalar())"Das sollte 1 ausgeben. Wenn es hängt oder einen Fehler wirft, behebe zuerst die .env-/DB-Konnektivität – versuche nicht, das über Claude Desktop zu debuggen.
Lokal ausführen (stdio)
.\venv\Scripts\python.exe server.pyOder verwende den MCP inspector, um Tools manuell aufzurufen (Browser-UI, kein Claude Desktop nötig – gut geeignet, um Request/Response jedes Tools isoliert zu prüfen). Erfordert Node/npm, da er über npx gestartet wird:
.\venv\Scripts\mcp.exe dev server.pyVerwende den Einstiegspunkt mcp.exe in venv\Scripts, nicht python -m mcp – das Paket mcp hat kein __main__, und diese Form schlägt fehl.
Mit Claude Desktop verbinden
Füge es zu %APPDATA%\Claude\claude_desktop_config.json hinzu (führe es mit dem zusammen, was bereits dort steht – überschreibe die Datei nicht):
{
"mcpServers": {
"quizapp": {
"command": "C:\\path\\to\\project\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\project\\server.py"]
}
}
}Verwende absolute Pfade, die zu dem Ort passen, an dem du das Repo geklont hast.
Beende Claude Desktop vollständig und starte es neu – schließe es über das System-Tray, nicht nur das Fenster. Es lädt die MCP-Konfiguration nur bei einem vollständigen Neustart neu.
Überprüfe dann, dass es geladen wurde: Settings → Connectors → quizapp sollte unter „Other tools“ mit 5 Tools aufgeführt sein (Register user, Get question, Validate answer, Generate leaderboard, Review answers).
Das Quiz spielen
Starte einen neuen Chat und sei präzise – eine vage Eingabe wie „let’s start the quiz“ kann zu einem nicht verwandten integrierten Ablauf „generate a quiz“ fehlgeleitet werden, anstatt die Tools dieses Servers aufzurufen. Sage stattdessen zum Beispiel:
„Verwende das Tool register_user, um mich als <name> mit unique_id <id> zu registrieren, und starte dann das Quiz.“
Von dort an steuern die eigenen Anweisungen des Servers (in server.py) den weiteren Ablauf – eine Frage nach der anderen, wobei auf deine Antwort gewartet wird, bevor es weitergeht.
Auf Render bereitstellen (HTTP, für claude.ai)
Pushe zu GitHub (
.envist von Git ignoriert – committe es niemals).Erstelle einen Render-Web Service, der mit dem Repo verbunden ist.
Setze die Umgebungsvariablen im Render-Dashboard:
Variable
Wert
RENDERtrueDB_HOSTdein DB-Host
DB_USERdein DB-Benutzer
DB_PASSWORDdein DB-Passwort
DB_NAMEdein DB-Name
Startbefehl:
python server.pyAktualisiere in
server.pyBASE_URLimRENDER-Zweig auf deine tatsächliche Render-URL.Füge unter claude.ai → Settings → Connectors hinzu:
https://your-app.onrender.com/mcp
Am HTTP-Endpoint ist derzeit keine Authentifizierung konfiguriert – jeder mit der URL kann jedes Tool aufrufen, auch die datenbankgestützten. Das war eine bewusste Entscheidung, um das Setup vorerst einfach zu halten; überprüfe das erneut, bevor du etwas Sensibles bereitstellst (siehe Sicherheit unten).
Hinweis
OAuth wurde vorerst vom HTTP-Endpoint entfernt – wir setzen claude.ai noch nicht mit der DB/den Tools dieses Servers ein, daher war die zusätzliche Komplexität es nicht wert. Füge es später wieder hinzu, falls nötig.
Keep-alive
Der kostenlose Tarif von Render wechselt nach 15 Minuten Inaktivität in den Schlafmodus, wodurch die erste Anfrage nach dem Aufwachen langsam (30–60s) ist oder eine Zeitüberschreitung auftritt. Bereits umgesetzte Maßnahmen:
Ein Hintergrundthread in
server.pypingt/healthalle 10 Minuten.Richte einen externen Monitor (z. B. UptimeRobot) für
https://your-app.onrender.com/healthalle 5 Minuten ein – nicht für/mcp.
Neues Tool hinzufügen
Öffne tools/quiz.py und füge eine Funktion innerhalb von register(mcp) hinzu:
@mcp.tool()
def my_new_tool(param1: str, param2: int) -> dict:
"""
One-sentence description of what this tool does.
The agent reads this docstring to decide when to call the tool.
Args:
param1: What this string parameter means.
param2: What this integer parameter means.
"""
result = do_something(param1, param2)
return {"result": result}Kein separater Registrierungsschritt – register(mcp) wird sowohl für die stdio- als auch für die HTTP-Instanz aufgerufen.
Sicherheit
.envist von Git ignoriert – committe es niemals.Tools geben niemals rohes SQL zurück und legen das DB-Schema nicht offen.
Alle Abfragen verwenden parametrisiertes SQL (
text("... WHERE id = :id"), keine String-Interpolation).Jeder vom Benutzer bereitgestellte Tabellen-/Spaltenname sollte vor der Verwendung in SQL gegen eine Allowlist geprüft werden.
Der Render-HTTP-Endpoint hat keine Authentifizierung – behandle ihn als öffentlich. Füge keine Tools hinzu, die sensible Daten offenlegen oder destruktive DB-Operationen ausführen, bis die Authentifizierung wieder hinzugefügt wurde.
Jeder, der die gemeinsamen
DB_*-Zugangsdaten besitzt, zeigt auf dieselbe Live-Datenbank – es gibt keine separate Dev-/Staging-Instanz.register_userundvalidate_answerschreiben direkt hinein, sodass lokales Testen echte Zeilen neben echten Quizdaten hinzufügt. Verwende beim Testen eine eindeutigeunique_idund verwende diese Zugangsdaten nicht länger als nötig.
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 Servers
- FlicenseNot gradedqualityDmaintenanceIntegrates Claude Desktop with Super Singularity's course creation API, enabling creation and management of courses with multiple card types (content, quiz, poll, form, video, audio, link), ElevenLabs text-to-speech generation, and Azure Blob Storage for audio hosting.
- FlicenseNot gradedqualityDmaintenanceA quiz distribution and grading server for educators. Create exams, generate student links + QR codes, grade submissions, and track student performance — all from Claude.
- AlicenseNot gradedqualityDmaintenanceIntegrates the Context Overflow Q\&A platform with Claude Code, enabling question posting, answering, voting, and platform health monitoring.MIT
- AlicenseNot gradedqualityCmaintenanceProvides 100 IT/programming quiz questions with tools to retrieve questions by category, get random questions, check answers, and list categories, usable via Claude Desktop MCP or REST API.225MIT
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Trivia MCP — wraps Open Trivia Database (free, no auth)
Your AI builds, deploys, and runs full-stack apps on a hosted workspace created at first sign-in.
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/sriram-2501/quiz_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server