Back to Directory/Developer Tools

io.github.giuliobmb/exam-sheet

Generate a timed exam on any topic and take it in an interactive exam sheet with live grading.

Developer ToolsTypeScriptv1.0.0

Exam Sheet — an MCP App

Generate a timed exam on any topic and take it in an interactive exam sheet that renders directly inside an MCP host (Claude Desktop, VS Code, etc.). Supports true/false, multiple-choice, and open questions. Objective questions are graded instantly; open answers are graded by the model. At the end you get a report with a grade out of 100.

Installation

Add the server to your MCP host config, e.g. claude_desktop_config.json:

{
  "mcpServers": {
    "exam-sheet": {
      "command": "npx",
      "args": ["-y", "@giuliobmb/exam-sheet-mcp"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
    }
  }
}

Restart the host after saving the config.

As a remote connector (Claude.ai or ChatGPT)

The same server also runs as a remote Streamable HTTP endpoint at /mcp (src/httpServer.ts), so it can be added as a connector by URL instead of a local install — on Claude.ai directly, or on ChatGPT via Settings → Apps → Advanced settings → Developer mode → Add connector. In that mode it has no API key of its own — question generation and grading go through MCP sampling, i.e. the connected client's own model — and each session gets its own isolated exam store.

The exam sheet UI is registered twice: once as an MCP Apps resource for Claude, once adapted for ChatGPT's Apps SDK (_meta["openai/outputTemplate"] on generate_exam, via @mcp-ui/server's appsSdk adapter) — same HTML, no changes needed between hosts.

Deploy it anywhere that runs a Node web service (a render.yaml blueprint is included for Render's free tier); then add https://<your-deployment>/mcp as a connector URL.

Usage

Ask the host to run generate_exam with a topic, e.g. "Generate an exam on the French Revolution." The interactive sheet opens with a timer; answer each question and submit to see instant grading (or model-graded feedback for open questions). At the end you get a full report with a grade out of 100.

Local development

npm install
npm test          # runs the unit tests (no network, no API key needed)
npm run typecheck
npm run build     # compiles TypeScript to dist/
export ANTHROPIC_API_KEY=sk-ant-...
npm start         # runs the server over stdio
npm run start:http  # runs the remote (Streamable HTTP) entrypoint on :3000

To try a local build in Claude Desktop, point the config at the compiled file instead of the npm package:

{
  "mcpServers": {
    "exam-sheet": {
      "command": "node",
      "args": ["/absolute/path/to/exam-mcp/dist/index.js"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
    }
  }
}

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @giuliobmb/exam-sheet-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-giuliobmb-exam-sheet": {
      "command": "npx",
      "args": [
        "-y",
        "@giuliobmb/exam-sheet-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@giuliobmb/exam-sheet-mcpnpm

Compatible MCP Clients

io.github.giuliobmb/exam-sheet works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More