stackprep-pro 0.2.0__tar.gz

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.
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "stackprep": {
4
+ "command": "uvx",
5
+ "args": ["stackprep-pro"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ set -e
3
+ uv run python scripts/generate_readme.py
4
+ git add README.md
@@ -0,0 +1,25 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ environment: pypi
12
+ permissions:
13
+ id-token: write # required for OIDC trusted publishing
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Install uv
19
+ uses: astral-sh/setup-uv@v4
20
+
21
+ - name: Build
22
+ run: uv build
23
+
24
+ - name: Publish to PyPI
25
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,22 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .venv/
6
+ dist/
7
+ build/
8
+
9
+ # Cache files (from CLI version)
10
+ .cv_cache.txt
11
+ .jd_cache.txt
12
+ .cert_cache.txt
13
+
14
+ # Local study packs and sessions (stored in ~/.stackprep by default)
15
+ study_later/
16
+
17
+ # Env
18
+ .env
19
+ .env.*
20
+
21
+ # macOS
22
+ .DS_Store
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "stackprep": {
4
+ "command": "uvx",
5
+ "args": ["stackprep-pro"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,253 @@
1
+ Metadata-Version: 2.4
2
+ Name: stackprep-pro
3
+ Version: 0.2.0
4
+ Summary: stackprep-pro — interview & certification prep MCP server for any AI client
5
+ Project-URL: Homepage, https://github.com/youngpada1/stackprep-pro
6
+ Project-URL: Repository, https://github.com/youngpada1/stackprep-pro
7
+ Author-email: Flavia Fauconnet <flavsferr@gmail.com>
8
+ License: MIT
9
+ Keywords: ai,certification,interview,mcp,prep
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Python: >=3.11
18
+ Requires-Dist: mcp[cli]>=1.0.0
19
+ Description-Content-Type: text/markdown
20
+
21
+ # stackprep-pro
22
+
23
+ > stackprep-pro — interview & certification prep MCP server for any AI client
24
+
25
+ Works with **any MCP-compatible client** — Claude Code, Cursor, Cline, Windsurf, Continue.dev, Codex CLI, and any other client that supports the Model Context Protocol. No API key required — your existing AI subscription does the work.
26
+
27
+ Available on PyPI: `uvx stackprep-pro`
28
+
29
+ ---
30
+
31
+ ## What it does
32
+
33
+ stackprep-pro is a pure state-management MCP server. It tracks your session and study packs on disk; your AI client (Claude, Cursor, Codex, etc.) handles all the question generation and scoring logic using the skill rules returned at session start.
34
+
35
+ - One question at a time — interview or certification mode
36
+ - Instant scoring with doc links after every answer
37
+ - Auto-detects wrong/partial answers and builds a named study pack
38
+ - Sessions and study packs saved to disk — resume anytime, sync via iCloud
39
+ - Resume in-progress sessions across conversations or devices
40
+
41
+ ---
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ uvx stackprep-pro
47
+ ```
48
+
49
+ > Requires [uv](https://docs.astral.sh/uv/). Install it with `curl -LsSf https://astral.sh/uv/install.sh | sh`.
50
+
51
+ ---
52
+
53
+ ## Configure your MCP client
54
+
55
+ The config is the same for every client — just point to `uvx stackprep-pro`.
56
+
57
+ ### Claude Code
58
+
59
+ Create `.mcp.json` in your project root:
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "stackprep": {
65
+ "command": "uvx",
66
+ "args": ["stackprep-pro"]
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ ### Cursor
73
+
74
+ Create `~/.cursor/mcp.json`:
75
+
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "stackprep": {
80
+ "command": "uvx",
81
+ "args": ["stackprep-pro"]
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ Then open Cursor → **Cmd+Shift+J** → MCP tab — stackprep should appear with a green dot.
88
+
89
+ ### Codex CLI
90
+
91
+ Add to `~/.codex/config.yaml`:
92
+
93
+ ```yaml
94
+ mcpServers:
95
+ stackprep:
96
+ command: uvx
97
+ args:
98
+ - stackprep-pro
99
+ ```
100
+
101
+ ### Any other MCP-compatible client
102
+
103
+ The pattern is always the same:
104
+
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "stackprep": {
109
+ "command": "uvx",
110
+ "args": ["stackprep-pro"]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ Paste this into whatever config format your client uses (Cline, Windsurf, Continue.dev, etc.).
117
+
118
+ ---
119
+
120
+ ## Study pack storage
121
+
122
+ Study packs and sessions are saved to `~/.stackprep/` by default.
123
+
124
+ **Sync across devices with iCloud** (recommended on macOS):
125
+
126
+ ```bash
127
+ # Add to ~/.zshrc or ~/.zprofile
128
+ export STACKPREP_PACKS_DIR="$HOME/Documents/stackprep-packs"
129
+ ```
130
+
131
+ `~/Documents` is synced to iCloud by default on macOS (requires iCloud Drive > Desktop & Documents enabled). Your packs will be available on any Mac signed into your Apple ID — and readable via the Files app on iPhone.
132
+
133
+ **Custom path:**
134
+
135
+ ```bash
136
+ export STACKPREP_PACKS_DIR="/path/to/your/folder"
137
+ ```
138
+
139
+ Point this at any Dropbox, Google Drive, or OneDrive folder for cross-platform sync.
140
+
141
+ ---
142
+
143
+ ## Environment variables
144
+
145
+ | Variable | Default | Description |
146
+ |---|---|---|
147
+ | `STACKPREP_PACKS_DIR` | `~/.stackprep` | Root directory for packs and sessions. |
148
+
149
+ ---
150
+
151
+ ## Skills (modes)
152
+
153
+ | Mode | Description |
154
+ |---|---|
155
+ | `certification` | description: Certification prep skill for the stackprep-pro MCP server. Activated when mode is "certification". Drives question generation, scoring, adaptive difficulty, and study pack creation. |
156
+ | `interview` | description: Interview prep skill for the stackprep-pro MCP server. Activated when mode is "interview". Drives question generation, scoring, adaptive difficulty, and study pack creation. |
157
+
158
+ ---
159
+
160
+ ## Tools
161
+
162
+ | Tool | Description | Args |
163
+ |---|---|---|
164
+ | `start_session` | Start a new stackprep session. Returns a session ID and the skill rules for the AI to follow. | `mode`, `cert_name`, `cv`, `jd`, `extra_topics` |
165
+ | `submit_answer` | Record the result of an answered question. | `session_id`, `result`, `question` |
166
+ | `flag_for_study` | Manually flag the current question for the study pack. | `session_id`, `question` |
167
+ | `end_session` | End the session. Returns the score and flagged topics so the AI can generate a study plan and study pack. | `session_id` |
168
+ | `save_study_pack` | Save the study pack content to disk. | `session_id`, `name`, `content` |
169
+ | `list_sessions` | List all saved sessions (pending and completed). | |
170
+ | `resume_session` | Resume a previously saved session. Returns full session state and skill rules. | `session_id` |
171
+ | `list_study_packs` | List all saved study packs. | |
172
+ | `load_study_pack` | Load a previously saved study pack by name. | `name` |
173
+
174
+ ---
175
+
176
+ ## Session flow
177
+
178
+ **Certification:**
179
+ ```
180
+ list_sessions() ← always called first
181
+ → start_session(mode="certification", cert_name="AWS SAA-C03")
182
+ → [AI generates questions one at a time]
183
+ → submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
184
+ → ... repeat ...
185
+ → end_session(session_id)
186
+ → save_study_pack(session_id, name="aws-saa-week1", content="...")
187
+ ```
188
+
189
+ **Interview:**
190
+ ```
191
+ list_sessions() ← always called first
192
+ → start_session(mode="interview", cv="...", jd="...")
193
+ → [AI generates questions one at a time]
194
+ → submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
195
+ → ... repeat ...
196
+ → end_session(session_id)
197
+ → save_study_pack(session_id, name="python-interview-june", content="...")
198
+ ```
199
+
200
+ **Resuming a session:**
201
+ ```
202
+ list_sessions() → shows in-progress sessions
203
+ → resume_session(session_id) → loads state + skill rules, continues where you left off
204
+ ```
205
+
206
+ **Loading a saved study pack:**
207
+ ```
208
+ list_study_packs()
209
+ → load_study_pack(name="aws-saa-week1")
210
+ ```
211
+
212
+ ---
213
+
214
+ ## Session persistence
215
+
216
+ Every session is saved to disk on every update. At the start of each new conversation the AI automatically calls `list_sessions` and asks whether you want to resume an in-progress session or start a new one. Sessions are stored in `~/.stackprep/sessions/` (or your custom `STACKPREP_PACKS_DIR`).
217
+
218
+ ---
219
+
220
+ ## Also available as a Claude Code plugin
221
+
222
+ For Claude Projects or direct Claude.ai use, the behaviour rules are also available as a standalone skill file at [plugins/stackprep](https://github.com/youngpada1/stackprep/tree/main/plugins/stackprep) — no install needed.
223
+
224
+ ---
225
+
226
+ ## Contributing / Development
227
+
228
+ ```bash
229
+ git clone https://github.com/youngpada1/stackprep-pro
230
+ cd stackprep-pro
231
+
232
+ # Install dependencies
233
+ uv sync
234
+
235
+ # Activate the pre-commit hook (auto-regenerates README on every commit)
236
+ git config core.hooksPath .githooks
237
+
238
+ # Run the server locally
239
+ uv run stackprep-pro
240
+ ```
241
+
242
+ The README is auto-generated from `server.py` tool definitions and the skills files in `src/stackprep_pro/skills/`.
243
+ To regenerate manually:
244
+
245
+ ```bash
246
+ uv run python scripts/generate_readme.py
247
+ ```
248
+
249
+ ---
250
+
251
+ ## License
252
+
253
+ MIT — [Flavia Fauconnet](https://github.com/flavsferr)
@@ -0,0 +1,233 @@
1
+ # stackprep-pro
2
+
3
+ > stackprep-pro — interview & certification prep MCP server for any AI client
4
+
5
+ Works with **any MCP-compatible client** — Claude Code, Cursor, Cline, Windsurf, Continue.dev, Codex CLI, and any other client that supports the Model Context Protocol. No API key required — your existing AI subscription does the work.
6
+
7
+ Available on PyPI: `uvx stackprep-pro`
8
+
9
+ ---
10
+
11
+ ## What it does
12
+
13
+ stackprep-pro is a pure state-management MCP server. It tracks your session and study packs on disk; your AI client (Claude, Cursor, Codex, etc.) handles all the question generation and scoring logic using the skill rules returned at session start.
14
+
15
+ - One question at a time — interview or certification mode
16
+ - Instant scoring with doc links after every answer
17
+ - Auto-detects wrong/partial answers and builds a named study pack
18
+ - Sessions and study packs saved to disk — resume anytime, sync via iCloud
19
+ - Resume in-progress sessions across conversations or devices
20
+
21
+ ---
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ uvx stackprep-pro
27
+ ```
28
+
29
+ > Requires [uv](https://docs.astral.sh/uv/). Install it with `curl -LsSf https://astral.sh/uv/install.sh | sh`.
30
+
31
+ ---
32
+
33
+ ## Configure your MCP client
34
+
35
+ The config is the same for every client — just point to `uvx stackprep-pro`.
36
+
37
+ ### Claude Code
38
+
39
+ Create `.mcp.json` in your project root:
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "stackprep": {
45
+ "command": "uvx",
46
+ "args": ["stackprep-pro"]
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ ### Cursor
53
+
54
+ Create `~/.cursor/mcp.json`:
55
+
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "stackprep": {
60
+ "command": "uvx",
61
+ "args": ["stackprep-pro"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ Then open Cursor → **Cmd+Shift+J** → MCP tab — stackprep should appear with a green dot.
68
+
69
+ ### Codex CLI
70
+
71
+ Add to `~/.codex/config.yaml`:
72
+
73
+ ```yaml
74
+ mcpServers:
75
+ stackprep:
76
+ command: uvx
77
+ args:
78
+ - stackprep-pro
79
+ ```
80
+
81
+ ### Any other MCP-compatible client
82
+
83
+ The pattern is always the same:
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "stackprep": {
89
+ "command": "uvx",
90
+ "args": ["stackprep-pro"]
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ Paste this into whatever config format your client uses (Cline, Windsurf, Continue.dev, etc.).
97
+
98
+ ---
99
+
100
+ ## Study pack storage
101
+
102
+ Study packs and sessions are saved to `~/.stackprep/` by default.
103
+
104
+ **Sync across devices with iCloud** (recommended on macOS):
105
+
106
+ ```bash
107
+ # Add to ~/.zshrc or ~/.zprofile
108
+ export STACKPREP_PACKS_DIR="$HOME/Documents/stackprep-packs"
109
+ ```
110
+
111
+ `~/Documents` is synced to iCloud by default on macOS (requires iCloud Drive > Desktop & Documents enabled). Your packs will be available on any Mac signed into your Apple ID — and readable via the Files app on iPhone.
112
+
113
+ **Custom path:**
114
+
115
+ ```bash
116
+ export STACKPREP_PACKS_DIR="/path/to/your/folder"
117
+ ```
118
+
119
+ Point this at any Dropbox, Google Drive, or OneDrive folder for cross-platform sync.
120
+
121
+ ---
122
+
123
+ ## Environment variables
124
+
125
+ | Variable | Default | Description |
126
+ |---|---|---|
127
+ | `STACKPREP_PACKS_DIR` | `~/.stackprep` | Root directory for packs and sessions. |
128
+
129
+ ---
130
+
131
+ ## Skills (modes)
132
+
133
+ | Mode | Description |
134
+ |---|---|
135
+ | `certification` | description: Certification prep skill for the stackprep-pro MCP server. Activated when mode is "certification". Drives question generation, scoring, adaptive difficulty, and study pack creation. |
136
+ | `interview` | description: Interview prep skill for the stackprep-pro MCP server. Activated when mode is "interview". Drives question generation, scoring, adaptive difficulty, and study pack creation. |
137
+
138
+ ---
139
+
140
+ ## Tools
141
+
142
+ | Tool | Description | Args |
143
+ |---|---|---|
144
+ | `start_session` | Start a new stackprep session. Returns a session ID and the skill rules for the AI to follow. | `mode`, `cert_name`, `cv`, `jd`, `extra_topics` |
145
+ | `submit_answer` | Record the result of an answered question. | `session_id`, `result`, `question` |
146
+ | `flag_for_study` | Manually flag the current question for the study pack. | `session_id`, `question` |
147
+ | `end_session` | End the session. Returns the score and flagged topics so the AI can generate a study plan and study pack. | `session_id` |
148
+ | `save_study_pack` | Save the study pack content to disk. | `session_id`, `name`, `content` |
149
+ | `list_sessions` | List all saved sessions (pending and completed). | |
150
+ | `resume_session` | Resume a previously saved session. Returns full session state and skill rules. | `session_id` |
151
+ | `list_study_packs` | List all saved study packs. | |
152
+ | `load_study_pack` | Load a previously saved study pack by name. | `name` |
153
+
154
+ ---
155
+
156
+ ## Session flow
157
+
158
+ **Certification:**
159
+ ```
160
+ list_sessions() ← always called first
161
+ → start_session(mode="certification", cert_name="AWS SAA-C03")
162
+ → [AI generates questions one at a time]
163
+ → submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
164
+ → ... repeat ...
165
+ → end_session(session_id)
166
+ → save_study_pack(session_id, name="aws-saa-week1", content="...")
167
+ ```
168
+
169
+ **Interview:**
170
+ ```
171
+ list_sessions() ← always called first
172
+ → start_session(mode="interview", cv="...", jd="...")
173
+ → [AI generates questions one at a time]
174
+ → submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
175
+ → ... repeat ...
176
+ → end_session(session_id)
177
+ → save_study_pack(session_id, name="python-interview-june", content="...")
178
+ ```
179
+
180
+ **Resuming a session:**
181
+ ```
182
+ list_sessions() → shows in-progress sessions
183
+ → resume_session(session_id) → loads state + skill rules, continues where you left off
184
+ ```
185
+
186
+ **Loading a saved study pack:**
187
+ ```
188
+ list_study_packs()
189
+ → load_study_pack(name="aws-saa-week1")
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Session persistence
195
+
196
+ Every session is saved to disk on every update. At the start of each new conversation the AI automatically calls `list_sessions` and asks whether you want to resume an in-progress session or start a new one. Sessions are stored in `~/.stackprep/sessions/` (or your custom `STACKPREP_PACKS_DIR`).
197
+
198
+ ---
199
+
200
+ ## Also available as a Claude Code plugin
201
+
202
+ For Claude Projects or direct Claude.ai use, the behaviour rules are also available as a standalone skill file at [plugins/stackprep](https://github.com/youngpada1/stackprep/tree/main/plugins/stackprep) — no install needed.
203
+
204
+ ---
205
+
206
+ ## Contributing / Development
207
+
208
+ ```bash
209
+ git clone https://github.com/youngpada1/stackprep-pro
210
+ cd stackprep-pro
211
+
212
+ # Install dependencies
213
+ uv sync
214
+
215
+ # Activate the pre-commit hook (auto-regenerates README on every commit)
216
+ git config core.hooksPath .githooks
217
+
218
+ # Run the server locally
219
+ uv run stackprep-pro
220
+ ```
221
+
222
+ The README is auto-generated from `server.py` tool definitions and the skills files in `src/stackprep_pro/skills/`.
223
+ To regenerate manually:
224
+
225
+ ```bash
226
+ uv run python scripts/generate_readme.py
227
+ ```
228
+
229
+ ---
230
+
231
+ ## License
232
+
233
+ MIT — [Flavia Fauconnet](https://github.com/flavsferr)
@@ -0,0 +1,37 @@
1
+ [project]
2
+ name = "stackprep-pro"
3
+ version = "0.2.0"
4
+ description = "stackprep-pro — interview & certification prep MCP server for any AI client"
5
+ readme = "README.md"
6
+ license = { text = "MIT" }
7
+ requires-python = ">=3.11"
8
+ authors = [
9
+ { name = "Flavia Fauconnet", email = "flavsferr@gmail.com" }
10
+ ]
11
+ keywords = ["mcp", "interview", "certification", "ai", "prep"]
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "Intended Audience :: Developers",
15
+ "License :: OSI Approved :: MIT License",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
20
+ ]
21
+ dependencies = [
22
+ "mcp[cli]>=1.0.0",
23
+ ]
24
+
25
+ [project.urls]
26
+ Homepage = "https://github.com/youngpada1/stackprep-pro"
27
+ Repository = "https://github.com/youngpada1/stackprep-pro"
28
+
29
+ [project.scripts]
30
+ stackprep-pro = "stackprep_pro.server:main"
31
+
32
+ [build-system]
33
+ requires = ["hatchling"]
34
+ build-backend = "hatchling.build"
35
+
36
+ [tool.hatch.build.targets.wheel]
37
+ packages = ["src/stackprep_pro"]
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env bash
2
+ # Usage: ./scripts/bump_version.sh patch|minor|major
3
+ # Bumps the version in pyproject.toml, commits, and tags.
4
+ set -euo pipefail
5
+
6
+ PART=${1:-patch}
7
+ CURRENT=$(grep '^version' pyproject.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
8
+
9
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
10
+
11
+ case "$PART" in
12
+ major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
13
+ minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
14
+ patch) PATCH=$((PATCH + 1)) ;;
15
+ *) echo "Usage: $0 patch|minor|major"; exit 1 ;;
16
+ esac
17
+
18
+ NEW="$MAJOR.$MINOR.$PATCH"
19
+
20
+ sed -i '' "s/^version = \"$CURRENT\"/version = \"$NEW\"/" pyproject.toml
21
+
22
+ echo "Bumped $CURRENT → $NEW"
23
+
24
+ git add pyproject.toml
25
+ git commit -m "chore: bump version to $NEW"
26
+ git tag "v$NEW"
27
+
28
+ echo ""
29
+ echo "Run this to publish:"
30
+ echo " git push && git push --tags"