Quiz App MCP server
Provides database operations backed by MySQL, allowing storage and retrieval of quiz data through parameterized SQL queries.
Click on "Deploy 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 serverlist all quizzes"
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: Basic MCP
Setup
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)Run locally (stdio)
.\venv\Scripts\python.exe server.pyOr use the MCP inspector to call tools manually:
.\venv\Scripts\python.exe -m mcp dev server.pyConnect to Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"quizapp": {
"command": "C:\\path\\to\\project\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\project\\server.py"]
}
}
}Restart Claude Desktop — tools appear automatically.
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
.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.
This server cannot be deployed
Maintenance
Related MCP Connectors
A simple MCP server built with FastMCP and python
Primarily to be used as a template repository for developing MCP servers with FastMCP in Python, P…
The official MCP Server for the Mux API
Related MCP Servers
- AlicenseBqualityAmaintenancePrimarily to be used as a template for developing MCP servers with FastMCP in Python, PyMCP is somewhat inspired by the official everything MCP server in Typescript.58MIT
- AlicenseNot gradedqualityDmaintenanceA simple MCP server built with FastMCP for experimentation and learning purposes. Includes basic web tools like article fetching and serves as a human-readable template for building custom MCP servers.AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA comprehensive Python MCP server with built-in knowledge base (SQLite + FTS5), web management interface, and flexible tool grouping system. Supports multiple transport protocols (stdio, SSE, HTTP Stream) with zero external dependencies.MIT
- FlicenseNot gradedqualityBmaintenanceA modular MCP server built with Python and FastMCP, providing tools, prompts, and resources, plus a reusable async client for external API integrations.-