stackprep-pro — interview & certification prep MCP server for any AI client
Project description
stackprep-pro
stackprep-pro — interview & certification prep MCP server for any AI client
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.
Available on PyPI: uvx stackprep-pro
What it does
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.
- One question at a time — interview or certification mode
- Instant scoring with doc links after every answer
- Auto-detects wrong/partial answers and builds a named study pack
- Sessions and study packs saved to disk — resume anytime, sync via iCloud
- Resume in-progress sessions across conversations or devices
Install
uvx stackprep-pro
Requires uv. Install it with
curl -LsSf https://astral.sh/uv/install.sh | sh.
Configure your MCP client
The config is the same for every client — just point to uvx stackprep-pro.
Claude Code
Create .mcp.json in your project root:
{
"mcpServers": {
"stackprep": {
"command": "uvx",
"args": ["stackprep-pro"]
}
}
}
Cursor
Create ~/.cursor/mcp.json:
{
"mcpServers": {
"stackprep": {
"command": "uvx",
"args": ["stackprep-pro"]
}
}
}
Then open Cursor → Cmd+Shift+J → MCP tab — stackprep should appear with a green dot.
Codex CLI
Add to ~/.codex/config.yaml:
mcpServers:
stackprep:
command: uvx
args:
- stackprep-pro
Any other MCP-compatible client
The pattern is always the same:
{
"mcpServers": {
"stackprep": {
"command": "uvx",
"args": ["stackprep-pro"]
}
}
}
Paste this into whatever config format your client uses (Cline, Windsurf, Continue.dev, etc.).
Study pack storage
Study packs and sessions are saved to ~/.stackprep/ by default.
Sync across devices with iCloud (recommended on macOS):
# Add to ~/.zshrc or ~/.zprofile
export STACKPREP_PACKS_DIR="$HOME/Documents/stackprep-packs"
~/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.
Custom path:
export STACKPREP_PACKS_DIR="/path/to/your/folder"
Point this at any Dropbox, Google Drive, or OneDrive folder for cross-platform sync.
Environment variables
| Variable | Default | Description |
|---|---|---|
STACKPREP_PACKS_DIR |
~/.stackprep |
Root directory for packs and sessions. |
Skills (modes)
| Mode | Description |
|---|---|
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. |
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. |
Tools
| Tool | Description | Args |
|---|---|---|
begin |
Call this at the very start of every conversation. Returns the opening question already formatted | |
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 |
submit_answer |
Record the result of an answered question. | session_id, result, question |
flag_for_study |
Manually flag the current question for the study pack. | session_id, question |
save_session |
Save an in-progress session so the user can continue it later. | session_id, session_name |
end_session |
End the session. Returns the score and flagged topics so the AI can generate a study plan and study pack. | session_id |
save_study_pack |
Save the study pack content to disk. | session_id, name, content |
list_sessions |
List all saved sessions. Call this silently in the background only when the user says they want to continue a previous session. Never mention this tool to the user. | |
resume_session |
Resume a previously saved session. Returns full session state and skill rules. | session_id |
list_study_packs |
List all saved study packs. Call this silently only when the user explicitly asks to see or load a saved study pack. Never call this on startup or automatically. Never mention this tool to the user. | |
load_study_pack |
Load a previously saved study pack by name. | name |
Session flow
Certification:
list_sessions() ← always called first
→ start_session(mode="certification", cert_name="AWS SAA-C03")
→ [AI generates questions one at a time]
→ submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
→ ... repeat ...
→ end_session(session_id)
→ save_study_pack(session_id, name="aws-saa-week1", content="...")
Interview:
list_sessions() ← always called first
→ start_session(mode="interview", cv="...", jd="...")
→ [AI generates questions one at a time]
→ submit_answer(session_id, result="correct"|"partial"|"incorrect", question="...")
→ ... repeat ...
→ end_session(session_id)
→ save_study_pack(session_id, name="python-interview-june", content="...")
Resuming a session:
list_sessions() → shows in-progress sessions
→ resume_session(session_id) → loads state + skill rules, continues where you left off
Loading a saved study pack:
list_study_packs()
→ load_study_pack(name="aws-saa-week1")
Session persistence
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).
Also available as a Claude Code plugin
For Claude Projects or direct Claude.ai use, the behaviour rules are also available as a standalone skill file at plugins/stackprep — no install needed.
Contributing / Development
git clone https://github.com/youngpada1/stackprep-pro
cd stackprep-pro
# Install dependencies
uv sync
# Activate the pre-commit hook (auto-regenerates README on every commit)
git config core.hooksPath .githooks
# Run the server locally
uv run stackprep-pro
The README is auto-generated from server.py tool definitions and the skills files in src/stackprep_pro/skills/.
To regenerate manually:
uv run python scripts/generate_readme.py
License
MIT — Flavia Fauconnet
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stackprep_pro-0.2.10.tar.gz.
File metadata
- Download URL: stackprep_pro-0.2.10.tar.gz
- Upload date:
- Size: 59.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1302521d84935e39d7fb6804b913e15f26cc82afdd04071a1286871e2b528fef
|
|
| MD5 |
a83812f638fe8bd84595008a29ca614c
|
|
| BLAKE2b-256 |
d5c00037659e604bc11cb599b526cff9b8ebd2d800fecd142d244be363ac3e75
|
Provenance
The following attestation bundles were made for stackprep_pro-0.2.10.tar.gz:
Publisher:
publish.yml on youngpada1/stackprep-pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stackprep_pro-0.2.10.tar.gz -
Subject digest:
1302521d84935e39d7fb6804b913e15f26cc82afdd04071a1286871e2b528fef - Sigstore transparency entry: 1912046820
- Sigstore integration time:
-
Permalink:
youngpada1/stackprep-pro@115bf90dcb89b210d5ff6efcf6fc266d6dec4843 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/youngpada1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@115bf90dcb89b210d5ff6efcf6fc266d6dec4843 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stackprep_pro-0.2.10-py3-none-any.whl.
File metadata
- Download URL: stackprep_pro-0.2.10-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3d876b4a96d02b0635a647a9ebb70ecb9fef568a819e18c3558811468c2bc72
|
|
| MD5 |
67f2b4ecf3f72c19c46b58296182f46a
|
|
| BLAKE2b-256 |
c8f3c0e45f310ba051ce976c47c37cf00750c2ade27a4efb2ee4f6640a04b8ca
|
Provenance
The following attestation bundles were made for stackprep_pro-0.2.10-py3-none-any.whl:
Publisher:
publish.yml on youngpada1/stackprep-pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stackprep_pro-0.2.10-py3-none-any.whl -
Subject digest:
b3d876b4a96d02b0635a647a9ebb70ecb9fef568a819e18c3558811468c2bc72 - Sigstore transparency entry: 1912046919
- Sigstore integration time:
-
Permalink:
youngpada1/stackprep-pro@115bf90dcb89b210d5ff6efcf6fc266d6dec4843 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/youngpada1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@115bf90dcb89b210d5ff6efcf6fc266d6dec4843 -
Trigger Event:
push
-
Statement type: