{
  "markdown": "# Exam Sheet — an MCP App\n\nGenerate a timed exam on any topic and take it in an interactive exam sheet that\nrenders directly inside an MCP host (Claude Desktop, VS Code, etc.). Supports\ntrue/false, multiple-choice, and open questions. Objective questions are graded\ninstantly; open answers are graded by the model. At the end you get a report\nwith a grade out of 100.\n\n## Installation\n\nAdd the server to your MCP host config, e.g. `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"exam-sheet\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@giuliobmb/exam-sheet-mcp\"],\n      \"env\": { \"ANTHROPIC_API_KEY\": \"sk-ant-...\" }\n    }\n  }\n}\n```\n\nRestart the host after saving the config.\n\n### As a remote connector (Claude.ai or ChatGPT)\n\nThe same server also runs as a remote Streamable HTTP endpoint at `/mcp`\n(`src/httpServer.ts`), so it can be added as a connector by URL instead of a\nlocal install — on Claude.ai directly, or on ChatGPT via Settings → Apps →\nAdvanced settings → Developer mode → Add connector. In that mode it has no\nAPI key of its own — question generation and grading go through MCP\nsampling, i.e. the connected client's own model — and each session gets its\nown isolated exam store.\n\nThe exam sheet UI is registered twice: once as an MCP Apps resource for\nClaude, once adapted for ChatGPT's Apps SDK (`_meta[\"openai/outputTemplate\"]`\non `generate_exam`, via `@mcp-ui/server`'s `appsSdk` adapter) — same HTML,\nno changes needed between hosts.\n\nDeploy it anywhere that runs a Node web service (a `render.yaml` blueprint is\nincluded for Render's free tier); then add `https://<your-deployment>/mcp` as\na connector URL.\n\n## Usage\n\nAsk the host to run **generate_exam** with a topic, e.g. \"Generate an exam on\nthe French Revolution.\" The interactive sheet opens with a timer; answer each\nquestion and submit to see instant grading (or model-graded feedback for open\nquestions). At the end you get a full report with a grade out of 100.\n\n## Local development\n\n```bash\nnpm install\nnpm test          # runs the unit tests (no network, no API key needed)\nnpm run typecheck\nnpm run build     # compiles TypeScript to dist/\nexport ANTHROPIC_API_KEY=sk-ant-...\nnpm start         # runs the server over stdio\nnpm run start:http  # runs the remote (Streamable HTTP) entrypoint on :3000\n```\n\nTo try a local build in Claude Desktop, point the config at the compiled file\ninstead of the npm package:\n\n```json\n{\n  \"mcpServers\": {\n    \"exam-sheet\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/exam-mcp/dist/index.js\"],\n      \"env\": { \"ANTHROPIC_API_KEY\": \"sk-ant-...\" }\n    }\n  }\n}\n```\n",
  "bytes": 2616,
  "sha": "3e029c94b54bc022f0cf83c625c0307e1c571f20dcce80ba7504b399e4aeec0e",
  "repo_slug": "giuliobmb/exam-sheet-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_giuliobmb_exam_sheet_bf31286c/readme"
}