io.github.giuliobmb/exam-sheet
Generate a timed exam on any topic and take it in an interactive exam sheet with live grading.
Open source Open in the app JSON README (API)
About
Generate a timed exam on any topic and take it in an interactive exam sheet with live grading.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- giuliobmb
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.0.0
- Stars
- 1
- Last push
- 2026-08-12T17:16:55Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-08-29 03:02:51
- Updated
- 2026-08-29 03:02:51
- Origin id
io.github.giuliobmb/exam-sheet
README
# 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`:
```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
```bash
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:
```json
{
"mcpServers": {
"exam-sheet": {
"command": "node",
"args": ["/absolute/path/to/exam-mcp/dist/index.js"],
"env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
}
}
}
```