MCP server for Claude.ai, Cursor, and MCP Inspector#
QuizBase exposes a Model Context Protocol server at https://quizbase.runriva.com/mcp. Connect any MCP-capable client with your API key and Claude / Cursor / your agent calls QuizBase directly — no copy-pasting keys into prompts.
What you get#
- 11 tools mapping the public REST API 1:1 —
quizbase_random,quizbase_list,quizbase_question_by_id,quizbase_stats,quizbase_topics,quizbase_topic_by_slug,quizbase_tags,quizbase_subcategories,quizbase_categories,quizbase_languages,quizbase_report - 3 resources —
mcp://quizbase/categories,mcp://quizbase/languages,mcp://quizbase/topics/top-100 - 3 prompt templates —
build_quiz(multi-round),explore_topic(discursive),warmup_round(5-question icebreaker) - Same rate limits and tiers as REST. 1
tools/call= 1 request.
Get a key#
Open API keys in the dashboard and create either a publishable qb_pk_* or a secret qb_sk_* key. We recommend publishable (pk) keys for Custom Connectors — they are read-only and browser-safe. The free tier gives you 500 requests/day across all your keys against full production data.
Try it without installing anything#
Skip the setup and try the server directly in our interactive playground. Paste your key, list the available tools, and call quizbase_random in two clicks — straight from your browser.

Connect — Claude.ai Custom Connectors#
- Open Claude.ai → Settings → Connectors → Add custom connector.
- URL:
https://quizbase.runriva.com/mcp - Authentication: Bearer token. Paste your
qb_pk_*orqb_pk_*key. - Save. The 11 tools appear in Claude’s tool picker.
Try a prompt like “Build me a 3-round quiz on Star Wars in Polish, 5 questions per round.” — Claude will call quizbase_topics to resolve the topic, then quizbase_random per round.
Connect — Cursor#
Cursor reads ~/.cursor/mcp.json:
{
"mcpServers": {
"quizbase": {
"url": "https://quizbase.runriva.com/mcp",
"headers": {
"Authorization": "Bearer qb_pk_YOUR_KEY"
}
}
}
} Restart Cursor. Open the Composer — the tools are listed in the panel.
Connect — MCP Inspector (development)#
The official MCP Inspector is the easiest way to explore the server interactively:
npx @modelcontextprotocol/inspector In the UI:
- Transport: Streamable HTTP
- URL:
https://quizbase.runriva.com/mcp(orhttp://localhost:5190/mcpagainst a local dev server) - Authentication: Bearer, value
qb_pk_YOUR_KEY
Click Connect. The Tools / Resources / Prompts tabs let you invoke each surface manually.
Other MCP clients#
Anything that speaks Streamable HTTP and accepts a Bearer Authorization header should work. We have not verified the configuration shape for every client — open an issue or PR if you’d like a verified recipe added here.
- Windsurf — MCP-compatible, untested by us
- Continue.dev — MCP-compatible, untested by us
- Zed — MCP-compatible, untested by us
Example Claude conversation#
You: “Make a 5-question Polish quiz on European geography, medium difficulty.”
Claude calls
quizbase_random({ amount: 5, lang: 'pl', category: 'geography', difficulty: 'medium' })and formats the result as a numbered list with choices, an answer key, and an attribution footer (per CC license terms — required for redistribution).
Security notes#
- Use
pkkeys for browser-side connectors.sk(secret) keys work over Streamable HTTP but are designed for server-side agents; pasting anskkey into a desktop or mobile UI exposes it more than apkshould ever be. - Revoke leaked keys immediately in API keys — revocation is enforced within seconds (24h grace for rotated keys).
- DNS rebinding — the server only accepts requests for known hosts (
quizbase.runriva.com, localhost, Railway preview). UnknownHostheaders get a 403.
See also#
- Authentication — key types and rotation
- GET /v1/questions/random — the REST endpoint that
quizbase_randomwraps - SDKs — MCP server — full tool / resource / prompt reference