Quiz App MCP server
Quiz App MCP server
Python MCP-сервер (Model Context Protocol), построенный на FastMCP. Предоставляет инструменты:
Claude Desktop — локально, через stdio
claude.ai — удалённо, по HTTP (развёрнут на Render)
Опционально использует базу данных MySQL через SQLAlchemy.
Структура проекта
.
├── 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
Настройка
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)Проверьте работоспособность подключения к БД, прежде чем подключать это к Claude Desktop:
.\venv\Scripts\python.exe -c "from config import engine; from sqlalchemy import text; print(engine.connect().execute(text('SELECT 1')).scalar())"Это должно вывести 1. Если команда зависает или завершается с ошибкой, сначала исправьте .env/подключение к БД — не пытайтесь отлаживать это через Claude Desktop.
Локальный запуск (stdio)
.\venv\Scripts\python.exe server.pyИли используйте MCP inspector для ручного вызова инструментов (браузерный интерфейс, Claude Desktop не нужен — удобно для проверки запроса/ответа каждого инструмента по отдельности). Требуется Node/npm, так как запуск происходит через npx:
.\venv\Scripts\mcp.exe dev server.pyИспользуйте точку входа mcp.exe в venv\Scripts, а не python -m mcp — в пакете mcp нет __main__, и такой вызов не сработает.
Подключение к Claude Desktop
Добавьте в %APPDATA%\Claude\claude_desktop_config.json (объедините с уже имеющимся содержимым — не перезаписывайте файл):
{
"mcpServers": {
"quizapp": {
"command": "C:\\path\\to\\project\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\project\\server.py"]
}
}
}Используйте абсолютные пути, соответствующие месту, куда вы клонировали репозиторий.
Полностью завершите работу Claude Desktop и перезапустите его — закройте его из системного трея, а не просто окно. Конфигурация MCP перезагружается только при полном перезапуске.
Затем убедитесь, что он загрузился: Settings → Connectors → quizapp должен быть указан в разделе "Other tools" с 5 инструментами (Register user, Get question, Validate answer, Generate leaderboard, Review answers).
Прохождение викторины
Начните новый чат и формулируйте запрос явно — расплывчатый запрос вроде «давайте начнём викторину» может быть ошибочно направлен в несвязанный встроенный сценарий «создать викторину» вместо вызова инструментов этого сервера. Вместо этого скажите, например:
«Используйте инструмент register_user, чтобы зарегистрировать меня как <name> с unique_id <id>, затем начните викторину.»
Дальше ход сценария определяют собственные инструкции сервера (в server.py) — по одному вопросу за раз, ожидая вашего ответа перед переходом дальше.
Деплой на Render (HTTP, для claude.ai)
Запушьте в GitHub (
.envигнорируется git — никогда не коммитьте его).Создайте в Render Web Service, подключённый к репозиторию.
Задайте переменные окружения в панели управления Render:
Переменная
Значение
RENDERtrueDB_HOSTхост вашей БД
DB_USERпользователь вашей БД
DB_PASSWORDпароль вашей БД
DB_NAMEимя вашей БД
Команда запуска:
python server.pyВ
server.pyобновитеBASE_URLв веткеRENDER, указав фактический URL вашего приложения на Render.В claude.ai → Settings → Connectors добавьте:
https://your-app.onrender.com/mcp
На HTTP-эндпоинте сейчас не настроена аутентификация — любой, у кого есть URL, может вызывать все инструменты, включая те, что работают с БД. Это было осознанным решением, чтобы пока упростить настройку; вернитесь к этому вопросу, прежде чем открывать доступ к чему-либо чувствительному (см. «Безопасность» ниже).
Примечание
OAuth пока убран с HTTP-эндпоинта — мы ещё не используем claude.ai с БД/инструментами этого сервера, поэтому дополнительная сложность не стоила того. Верните его позже, если понадобится.
Keep-alive
Бесплатный тариф Render переходит в спящий режим после 15 минут простоя, из-за чего первый запрос после сна выполняется медленно (30–60 с) или завершается по тайм-ауту. Уже принятые меры:
Фоновый поток в
server.pyпингует/healthкаждые 10 минут.Добавьте внешний монитор (например, UptimeRobot) на
https://your-app.onrender.com/healthкаждые 5 минут — не на/mcp.
Добавление нового инструмента
Откройте tools/quiz.py и добавьте функцию внутри 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}Отдельный этап регистрации не нужен — register(mcp) вызывается и для stdio-, и для HTTP-инстансов.
Безопасность
.envигнорируется git — никогда не коммитьте его.Инструменты никогда не возвращают сырой SQL и не раскрывают схему БД.
Все запросы используют параметризованный SQL (
text("... WHERE id = :id"), а не интерполяцию строк).Любое имя таблицы/колонки, переданное пользователем, должно проверяться по разрешённому списку перед использованием в SQL.
HTTP-эндпоинт Render не имеет аутентификации — считайте его публичным. Не добавляйте инструменты, которые раскрывают чувствительные данные или выполняют деструктивные операции с БД, пока снова не будет добавлена аутентификация.
Тот, у кого есть общие учётные данные
DB_*, получает доступ к той же рабочей базе данных — отдельного dev/staging-инстанса нет.register_userиvalidate_answerпишут напрямую в неё, поэтому локальное тестирование добавляет реальные строки рядом с реальными данными викторины. При тестировании используйте отличительныйunique_idи не используйте эти учётные данные сверх необходимого.
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