Quiz App MCP server
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., "@Quiz App MCP serverRegister me as Alex with ID 123 and start the quiz."
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.
Quiz App MCP server
A Python MCP (Model Context Protocol) server built with FastMCP. Exposes tools to:
Claude Desktop, locally, over stdio
claude.ai, remotely, over HTTP (deployed on Render)
Optionally backed by a MySQL database via SQLAlchemy.
Project layout
.
├── 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: Quiz App MCP server
Setup
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)Sanity-check the DB connection before wiring this into Claude Desktop:
.\venv\Scripts\python.exe -c "from config import engine; from sqlalchemy import text; print(engine.connect().execute(text('SELECT 1')).scalar())"This should print 1. If it hangs or errors, fix .env/DB connectivity first — don't try to
debug that through Claude Desktop.
Run locally (stdio)
.\venv\Scripts\python.exe server.pyOr use the MCP inspector to call tools manually (browser UI, no Claude Desktop needed — good for
checking each tool's request/response in isolation). Requires Node/npm, since it launches via
npx:
.\venv\Scripts\mcp.exe dev server.pyUse the mcp.exe entry point in venv\Scripts, not python -m mcp — the mcp package has no
__main__ and that form fails.
Connect to Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json (merge into whatever's already there —
don't overwrite the file):
{
"mcpServers": {
"quizapp": {
"command": "C:\\path\\to\\project\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\project\\server.py"]
}
}
}Use absolute paths matching wherever you cloned the repo.
Fully quit and restart Claude Desktop — close it from the system tray, not just the window. It only reloads MCP config on a full restart.
Then verify it loaded: Settings → Connectors → quizapp should be listed under "Other
tools" with 5 tools (Register user, Get question, Validate answer, Generate leaderboard, Review
answers).
Playing the quiz
Start a new chat and be explicit — a vague prompt like "let's start the quiz" can get misrouted to an unrelated built-in "generate a quiz" flow instead of calling this server's tools. Instead say something like:
"Use the register_user tool to register me as <name> with unique_id <id>, then start the quiz."
From there the server's own instructions (in server.py) drive the rest of the flow — one
question at a time, waiting for your answer before moving on.
Deploy to Render (HTTP, for claude.ai)
Push to GitHub (
.envis gitignored — never commit it).Create a Render Web Service connected to the repo.
Set environment variables in the Render dashboard:
Variable
Value
RENDERtrueDB_HOSTyour DB host
DB_USERyour DB user
DB_PASSWORDyour DB password
DB_NAMEyour DB name
Start command:
python server.pyIn
server.py, updateBASE_URLunder theRENDERbranch to your actual Render URL.In claude.ai → Settings → Connectors, add:
https://your-app.onrender.com/mcp
No auth is currently configured on the HTTP endpoint — anyone with the URL can call every tool, including DB-backed ones. This was an explicit choice to keep setup simple for now; revisit before exposing anything sensitive (see Security below).
Note
OAuth was removed from the HTTP endpoint for now — we're not using claude.ai against this server's DB/tools yet, so it wasn't worth the extra complexity. Add it back later if needed.
Keep-alive
Render's free tier sleeps after 15 minutes idle, which makes the first request after sleep slow (30–60s) or time out. Mitigations already in place:
A background thread in
server.pypings/healthevery 10 minutes.Add an external monitor (e.g. UptimeRobot) on
https://your-app.onrender.com/healthevery 5 minutes — not on/mcp.
Adding a new tool
Open tools/quiz.py and add a function inside register(mcp):
@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}No separate registration step — register(mcp) is called for both the stdio and HTTP instances.
Security
register_userrequires anaccess_codeargument checked (constant-time) againstQUIZ_ACCESS_CODEin.env. This is the only gate on the public endpoint — share the code out-of-band with participants and rotate it by changing.env(and redeploying) if it leaks..envis gitignored — never commit it.Tools never return raw SQL or expose the DB schema.
All queries use parameterized SQL (
text("... WHERE id = :id"), not string interpolation).Any user-supplied table/column name should be checked against an allowlist before use in SQL.
The Render HTTP endpoint has no authentication — treat it as public. Don't add tools that expose sensitive data or destructive DB operations until auth is added back.
Whoever holds the shared
DB_*credentials is pointed at the same live database — there's no separate dev/staging instance.register_userandvalidate_answerwrite directly into it, so testing locally adds real rows next to real quiz data. Use a distinctiveunique_idwhen testing, and don't reuse these credentials past what's needed.
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
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Manage projects, tasks, time tracking, and team collaboration through natural language.
Run AI customer support from your terminal: conversations, knowledge base, and chat widget.
Pronunciation scoring, speech-to-text, and text-to-speech for language learning
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables users to run and interact with a quiz application through Claude Desktop or claude.ai, supporting user registration, question retrieval, answer validation, leaderboard generation, and answer review.1
- FlicenseNot gradedqualityBmaintenanceEnables users to run an interactive quiz through natural language, registering players, retrieving questions, validating answers, and generating leaderboards or answer reviews via MCP tools.
- FlicenseNot gradedqualityBmaintenanceEnables quiz gameplay through natural language, including user registration, retrieving questions, validating answers, generating leaderboards, and reviewing answers. It runs locally via stdio for Claude Desktop or remotely over HTTP for claude.ai, with optional MySQL-backed persistence.
- FlicenseNot gradedqualityBmaintenanceEnables interactive quiz sessions via natural language, supporting user registration, question retrieval, answer validation, leaderboard generation, and answer review, with optional MySQL persistence.
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/sivaravula/quiz-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server