stackprep as an MCP server — interview & certification prep for any AI client
Project description
stackprep-mcp
stackprep as an MCP server — interview & certification prep for any AI client
Works with any MCP-compatible client: Claude Code, Cursor, Cline, Windsurf, Continue.dev, Codex CLI, and more. No API key required — your existing AI subscription does the work.
What it does
stackprep-mcp 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
Clone the repo and install dependencies with uv:
git clone https://github.com/youngpada1/stackprep-mcp
cd stackprep-mcp
uv sync
Requires uv and Python 3.11+.
Configure your MCP client
Claude Code
Create .mcp.json in your project root:
{
"mcpServers": {
"stackprep": {
"command": "uv",
"args": ["run", "--directory", "/path/to/stackprep-mcp", "stackprep-mcp"]
}
}
}
Cursor
Create ~/.cursor/mcp.json:
{
"mcpServers": {
"stackprep": {
"command": "uv",
"args": ["run", "--directory", "/path/to/stackprep-mcp", "stackprep-mcp"]
}
}
}
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: uv
args:
- run
- --directory
- /path/to/stackprep-mcp
- stackprep-mcp
Replace /path/to/stackprep-mcp with the absolute path to the cloned repo.
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 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 MCP server. Activated when mode is "interview". Drives question generation, scoring, adaptive difficulty, and study pack creation. |
Tools
| Tool | Description | Args |
|---|---|---|
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 |
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 (pending and completed). | |
resume_session |
Resume a previously saved session. Returns full session state and skill rules. | session_id |
list_study_packs |
List all saved study packs. | |
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-mcp
cd stackprep-mcp
# 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-mcp
The README is auto-generated from server.py tool definitions and the skills files in src/stackprep_mcp/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_mcp-0.1.0.tar.gz.
File metadata
- Download URL: stackprep_mcp-0.1.0.tar.gz
- Upload date:
- Size: 53.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b630e772fa8d9c963ec789e086203543e6933e04bb8d73a115a64f4e515bf95
|
|
| MD5 |
7898aede7e0cdb0f4bf28be86b53f54b
|
|
| BLAKE2b-256 |
ba72dc0488993022697433ec03abb8fe3cbf042cea9f05afa79d086e8183b20e
|
File details
Details for the file stackprep_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: stackprep_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96334f2c7e1a87cb4e3a86239302273e55ed969e3075f1de3410d2e8583e4cca
|
|
| MD5 |
d6630ec7224fc79d4db90fb2100d73a4
|
|
| BLAKE2b-256 |
b7af6b34b8a8a72ab79996ac1db31271426470248d5c7890e44859b12f479b83
|