quiz-mcp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/bin/quiz +16 -0
- package/bin/quiz-runner +18 -0
- package/bin/quiz-runner-mcp +18 -0
- package/dist/cli.js +805 -0
- package/dist/client/_app/immutable/assets/0.BdUfdP7M.css +1 -0
- package/dist/client/_app/immutable/assets/0.BdUfdP7M.css.br +0 -0
- package/dist/client/_app/immutable/assets/0.BdUfdP7M.css.gz +0 -0
- package/dist/client/_app/immutable/chunks/BBbVH-DX.js +2 -0
- package/dist/client/_app/immutable/chunks/BBbVH-DX.js.br +0 -0
- package/dist/client/_app/immutable/chunks/BBbVH-DX.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/BYAtt_Gu.js +1 -0
- package/dist/client/_app/immutable/chunks/BYAtt_Gu.js.br +0 -0
- package/dist/client/_app/immutable/chunks/BYAtt_Gu.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/C9b1VZtB.js +1 -0
- package/dist/client/_app/immutable/chunks/C9b1VZtB.js.br +0 -0
- package/dist/client/_app/immutable/chunks/C9b1VZtB.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/DnSqigra.js +1 -0
- package/dist/client/_app/immutable/chunks/DnSqigra.js.br +0 -0
- package/dist/client/_app/immutable/chunks/DnSqigra.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/DqHG5Xll.js +3 -0
- package/dist/client/_app/immutable/chunks/DqHG5Xll.js.br +0 -0
- package/dist/client/_app/immutable/chunks/DqHG5Xll.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/fMaWj-vy.js +1 -0
- package/dist/client/_app/immutable/chunks/fMaWj-vy.js.br +0 -0
- package/dist/client/_app/immutable/chunks/fMaWj-vy.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/hqRb622q.js +1 -0
- package/dist/client/_app/immutable/chunks/hqRb622q.js.br +0 -0
- package/dist/client/_app/immutable/chunks/hqRb622q.js.gz +0 -0
- package/dist/client/_app/immutable/chunks/qgn7L4n5.js +1 -0
- package/dist/client/_app/immutable/chunks/qgn7L4n5.js.br +0 -0
- package/dist/client/_app/immutable/chunks/qgn7L4n5.js.gz +0 -0
- package/dist/client/_app/immutable/entry/app.BsKq4Thd.js +2 -0
- package/dist/client/_app/immutable/entry/app.BsKq4Thd.js.br +0 -0
- package/dist/client/_app/immutable/entry/app.BsKq4Thd.js.gz +0 -0
- package/dist/client/_app/immutable/entry/start.CKTlgCvu.js +1 -0
- package/dist/client/_app/immutable/entry/start.CKTlgCvu.js.br +2 -0
- package/dist/client/_app/immutable/entry/start.CKTlgCvu.js.gz +0 -0
- package/dist/client/_app/immutable/nodes/0.R6s8931r.js +9 -0
- package/dist/client/_app/immutable/nodes/0.R6s8931r.js.br +0 -0
- package/dist/client/_app/immutable/nodes/0.R6s8931r.js.gz +0 -0
- package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js +1 -0
- package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js.br +0 -0
- package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js.gz +0 -0
- package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js +2 -0
- package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js.br +0 -0
- package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js.gz +0 -0
- package/dist/client/_app/immutable/nodes/3.w4AbulQF.js +1 -0
- package/dist/client/_app/immutable/nodes/3.w4AbulQF.js.br +0 -0
- package/dist/client/_app/immutable/nodes/3.w4AbulQF.js.gz +0 -0
- package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js +4 -0
- package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js.br +0 -0
- package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js.gz +0 -0
- package/dist/client/_app/version.json +1 -0
- package/dist/client/_app/version.json.br +0 -0
- package/dist/client/_app/version.json.gz +0 -0
- package/dist/client/robots.txt +3 -0
- package/dist/env.js +94 -0
- package/dist/handler.js +1435 -0
- package/dist/index.js +345 -0
- package/dist/server/chunks/0-bFxjafp8.js +44 -0
- package/dist/server/chunks/0-bFxjafp8.js.map +1 -0
- package/dist/server/chunks/1-D1qe0uHb.js +9 -0
- package/dist/server/chunks/1-D1qe0uHb.js.map +1 -0
- package/dist/server/chunks/2-NzZFDUaQ.js +60 -0
- package/dist/server/chunks/2-NzZFDUaQ.js.map +1 -0
- package/dist/server/chunks/3-DJAG62O1.js +37 -0
- package/dist/server/chunks/3-DJAG62O1.js.map +1 -0
- package/dist/server/chunks/4-zigWBLLG.js +37 -0
- package/dist/server/chunks/4-zigWBLLG.js.map +1 -0
- package/dist/server/chunks/_error.svelte-BHNrphys.js +80 -0
- package/dist/server/chunks/_error.svelte-BHNrphys.js.map +1 -0
- package/dist/server/chunks/_layout.svelte-BUJDEr5D.js +104 -0
- package/dist/server/chunks/_layout.svelte-BUJDEr5D.js.map +1 -0
- package/dist/server/chunks/_page.svelte-CRU5jaGZ.js +653 -0
- package/dist/server/chunks/_page.svelte-CRU5jaGZ.js.map +1 -0
- package/dist/server/chunks/_page.svelte-Cm8ocLsi.js +572 -0
- package/dist/server/chunks/_page.svelte-Cm8ocLsi.js.map +1 -0
- package/dist/server/chunks/_page.svelte-Dvh1k6R9.js +71 -0
- package/dist/server/chunks/_page.svelte-Dvh1k6R9.js.map +1 -0
- package/dist/server/chunks/_server.ts-BZp77VsF.js +101 -0
- package/dist/server/chunks/_server.ts-BZp77VsF.js.map +1 -0
- package/dist/server/chunks/_server.ts-C2NKc-VD.js +219 -0
- package/dist/server/chunks/_server.ts-C2NKc-VD.js.map +1 -0
- package/dist/server/chunks/_server.ts-CHyNcOmK.js +39 -0
- package/dist/server/chunks/_server.ts-CHyNcOmK.js.map +1 -0
- package/dist/server/chunks/_server.ts-CakPvrry.js +51 -0
- package/dist/server/chunks/_server.ts-CakPvrry.js.map +1 -0
- package/dist/server/chunks/_server.ts-uSNr19lE.js +35 -0
- package/dist/server/chunks/_server.ts-uSNr19lE.js.map +1 -0
- package/dist/server/chunks/client-Dw0t4rDL.js +25 -0
- package/dist/server/chunks/client-Dw0t4rDL.js.map +1 -0
- package/dist/server/chunks/exports-BNC8dbq3.js +326 -0
- package/dist/server/chunks/exports-BNC8dbq3.js.map +1 -0
- package/dist/server/chunks/hooks.server-B6FrjICA.js +66 -0
- package/dist/server/chunks/hooks.server-B6FrjICA.js.map +1 -0
- package/dist/server/chunks/hooks.universal-B3lncnqn.js +6 -0
- package/dist/server/chunks/hooks.universal-B3lncnqn.js.map +1 -0
- package/dist/server/chunks/html-FW6Ia4bL.js +8 -0
- package/dist/server/chunks/html-FW6Ia4bL.js.map +1 -0
- package/dist/server/chunks/index-Ch5Bqlgz.js +1411 -0
- package/dist/server/chunks/index-Ch5Bqlgz.js.map +1 -0
- package/dist/server/chunks/index-wpIsICWW.js +219 -0
- package/dist/server/chunks/index-wpIsICWW.js.map +1 -0
- package/dist/server/chunks/runtime-Bf5HkYyl.js +318 -0
- package/dist/server/chunks/runtime-Bf5HkYyl.js.map +1 -0
- package/dist/server/chunks/sessions-CEbRx2vt.js +169 -0
- package/dist/server/chunks/sessions-CEbRx2vt.js.map +1 -0
- package/dist/server/index.js +7609 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/manifest.js +97 -0
- package/dist/server/manifest.js.map +1 -0
- package/dist/shims.js +32 -0
- package/package.json +122 -0
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Quiz MCP
|
|
2
|
+
|
|
3
|
+
A Model Context Protocol (MCP) server for running interactive quizzes. This tool bridges the gap between AI generation and user interaction by allowing agents to generate quizzes and immediately present them to users in a polished web interface.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Interactive Web UI**: Built with SvelteKit for a responsive and smooth experience.
|
|
8
|
+
- **MCP Support**: Fully compatible with Model Context Protocol for AI agent integration.
|
|
9
|
+
- **Multiple Question Types**:
|
|
10
|
+
- Single Choice
|
|
11
|
+
- Multiple Choice
|
|
12
|
+
- Open Text
|
|
13
|
+
- **Flexible Configuration**: customizable themes, timers, and shuffling.
|
|
14
|
+
- **CLI Tool**: easy-to-use command line interface for local testing and usage.
|
|
15
|
+
|
|
16
|
+
## Local-first & Privacy by Design
|
|
17
|
+
|
|
18
|
+
Quiz MCP runs entirely on your machine.
|
|
19
|
+
|
|
20
|
+
- **No external APIs**
|
|
21
|
+
- **No cloud services**
|
|
22
|
+
- **No telemetry**
|
|
23
|
+
- **No user data leaves your system**
|
|
24
|
+
|
|
25
|
+
AI agents communicate with the quiz UI through a local MCP server. All interactions stay within your local environment (unless you explicitly configure a webhook).
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm install
|
|
31
|
+
pnpm build
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
### Standalone Mode (CLI)
|
|
37
|
+
|
|
38
|
+
Run a quiz directly from a local JSON file:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Run a JavaScript quiz
|
|
42
|
+
pnpm quiz:js
|
|
43
|
+
|
|
44
|
+
# Run a Web Development quiz
|
|
45
|
+
pnpm quiz:web
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or run any custom file:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pnpm quiz --file ./my-quiz.json --open
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### MCP Mode (AI Agent)
|
|
55
|
+
|
|
56
|
+
Start the MCP server to allow AI agents to connect:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pnpm quiz:mcp
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The server runs on port 3000 (default) or the port specified in your configuration.
|
|
63
|
+
|
|
64
|
+
## Development
|
|
65
|
+
|
|
66
|
+
1. Start the development server:
|
|
67
|
+
```bash
|
|
68
|
+
pnpm dev
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
2. Run the CLI in dev mode:
|
|
72
|
+
```bash
|
|
73
|
+
pnpm quiz:js
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Architecture
|
|
77
|
+
|
|
78
|
+
The project consists of three main parts:
|
|
79
|
+
1. **`src/lib`**: Shared logic and types.
|
|
80
|
+
2. **`src/routes`**: SvelteKit web application.
|
|
81
|
+
3. **`src/cli`**: Node.js CLI entry points for both the standalone runner and the MCP server.
|
|
82
|
+
|
|
83
|
+
## License
|
|
84
|
+
|
|
85
|
+
MIT
|
package/bin/quiz
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Quiz MCP - Unified CLI
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const cliPath = join(__dirname, '..', 'dist', 'cli.js');
|
|
11
|
+
|
|
12
|
+
const { main } = await import(cliPath);
|
|
13
|
+
main(process.argv).catch((err) => {
|
|
14
|
+
console.error('Unhandled error:', err);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
});
|
package/bin/quiz-runner
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Quiz MCP - Runner CLI (Legacy Alias)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const cliPath = join(__dirname, '..', 'dist', 'cli.js');
|
|
11
|
+
|
|
12
|
+
const { main } = await import(cliPath);
|
|
13
|
+
|
|
14
|
+
const newArgv = [process.argv[0], 'run', ...process.argv.slice(1)];
|
|
15
|
+
main(newArgv).catch((err) => {
|
|
16
|
+
console.error('Unhandled error:', err);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Quiz MCP - MCP Server CLI (Legacy Alias)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const cliPath = join(__dirname, '..', 'dist', 'cli.js');
|
|
11
|
+
|
|
12
|
+
const { main } = await import(cliPath);
|
|
13
|
+
|
|
14
|
+
const newArgv = [process.argv[0], 'mcp', ...process.argv.slice(1)];
|
|
15
|
+
main(newArgv).catch((err) => {
|
|
16
|
+
console.error('Unhandled error:', err);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|