2233admin /
cli2skill
🔧 Turn any CLI or MCP server into an Agent Skill — zero process overhead, 98% fewer tokens. Kill MCP zombie processes. Works with Claude Code, Codex, Gemini CLI & 26+ platforms.
62/100 healthLoading repository data…
eshitakundu / repository
An MCP server that gives Claude Desktop structured access to your notes and past papers. Discovers topics, teaches in any style, quizzes you on grounded content, extracts PYQ patterns, and tracks mastery in local SQLite. Built with the official MCP Python SDK + FastMCP.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Turn your notes and past papers into a focused, local AI study system.
An MCP server that gives Claude structured access to your study material, so it can teach, quiz, and drill you on your own content, and remember how you did.
Quick Start · How it Works · Tools & Prompts · Extend · Full Tutorial
LLMs can reason. They can't reach into your world: your notes, your past papers, your progress.
Study Buddy closes that gap with the Model Context Protocol (MCP). You drop material into two folders. Your MCP client (Claude Desktop, Cursor, anything MCP-compatible) can now:
Teach any topic from your material, in any style you ask for: Feynman, Socratic, exam-cram, ELI5, or anything else.
Grounded quizzes from your notes. PYQ-pattern practice: real past questions verbatim, or new questions in that exact style.
Local SQLite tracks mastery per topic across sessions. Weakest topics surface first. Archive what you've mastered.
Built to also serve as a complete reference for the MCP protocol: every primitive, exercised with production-shaped code.
# 1. Clone
git clone https://github.com/eshitakundu/study-buddy.git
cd study-buddy
# 2. Install
uv sync
# 3. Drop notes into materials/content/ and past papers into materials/pyqs/
# 4. Verify the server with the MCP Inspector
uv run mcp dev study_buddy.py
Selected from shared topics, language and repository description—not editorial ratings.
2233admin /
🔧 Turn any CLI or MCP server into an Agent Skill — zero process overhead, 98% fewer tokens. Kill MCP zombie processes. Works with Claude Code, Codex, Gemini CLI & 26+ platforms.
62/100 healthShellyDeng08 /
MCP server for RedNote (Xiaohongshu) — analyze content, comments, and trends with structured tools for LLM workflows.
52/100 healthThen connect it to Claude Desktop and start a chat:
"Discover topics in my materials, register the real ones, then quiz me on the weakest one."
flowchart LR
A[📁 materials/<br/>content + pyqs] --> B[⚙️ study_buddy.py<br/>MCP server]
B --> C[💾 SQLite<br/>topics + results]
B <-->|stdio| D[🤖 Claude Desktop]
D -->|calls tools| B
D -->|renders prompts| B
D -->|reads resources| B
| Primitive | Role in Study Buddy | Examples |
|---|---|---|
| 🔧 Tools | Actions the model invokes | search_content, log_result, extract_pyq_style |
| 📖 Resources | Browsable, URI-addressed context | study://topics, study://content |
| 💬 Prompts | Parameterized study workflows | study, quiz, pyq_test |
Plus typed inputs via Pydantic Field, persistent state via SQLite, and path-traversal-safe file access.
study-buddy/
├── 📦 study_buddy.py ← the entire server, one file
├── 🗄️ study.db ← auto-created SQLite tracker
├── 📚 materials/
│ ├── content/ ← notes, slides, textbook extracts
│ ├── pyqs/ ← previous-year question papers
│ └── archive/ ← files you've moved aside
├── 🖼️ assets/banner.png
├── pyproject.toml
├── uv.lock
└── README.md
Subfolders and study.db are auto-created on first run.
mcp devPinned dependencies:
mcp[cli]>=1.27,<2: the <2 bound matters; SDK v2 changes import pathspypdfpython-docxgit clone https://github.com/eshitakundu/study-buddy.git
cd study-buddy
uv sync
Notes (materials/content/):
dbms-notes.md
transactions.pdf
normalization-slides.docx
er-diagram.png
Past papers (materials/pyqs/):
dbms-midterm-2024.pdf
dbms-final-2023.txt
operating-systems-pyq.docx
Files moved via archive_files land in materials/archive/.
uv run mcp dev study_buddy.py
Opens the MCP Inspector in your browser (via npx). List and call every tool, read resources, and preview rendered prompts, all before touching your client.
⚠️ Gotcha: if
nodestays alive on port 6277 after the Inspector closes, the nextmcp devfails with Proxy Server PORT IS IN USE. Fix on Windows:Get-Process node | Stop-Process -Force
Config file:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"study-buddy": {
"command": "C:\\Users\\<you>\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\Users\\<you>\\path\\to\\study-buddy",
"run",
"study_buddy.py"
]
}
}
}
🔑 Three things that trip everyone up:
- Use absolute paths: Claude Desktop's working directory isn't your project folder.
- On Windows, escape backslashes as
\\.- Fully quit Claude Desktop from the system tray before reopening. Closing the window isn't enough.
Debug logs → %APPDATA%\Claude\logs\mcp-server-study-buddy.log
| Tool | Purpose |
|---|---|
list_content | List files in materials/content/ |
list_pyqs | List files in materials/pyqs/ |
read_file | Read a file from content, pyqs, or archive |
search_content | Substring search across content files |
archive_files | Physically move files into materials/archive/ |
| Tool | Purpose |
|---|---|
discover_topics | Rank candidate topics from headings, bold text, question stems |
register_topic | Add a topic to the tracker |
list_topics | Active topics with attempts, mastery %, last-attempt time |
archive_topic | Mark a topic as mastered (metadata only) |
log_result | Record a quiz score against a registered topic |
weakest_topics | Lowest-mastery active topics |
| Tool | Purpose |
|---|---|
extract_pyq_style | Structural profile: types, marks, stems, samples |
extract_pyq_questions | Parsed list of actual questions from a past paper |
| URI | Content |
|---|---|
study://content | Markdown index of materials/content/ |
study://pyqs | Markdown index of materials/pyqs/ |
study://topics | Mastery tracker: active + archived |
💡 Important: in Claude Desktop, resources are user-attached, not auto-fetched. Tools are model-initiated. Design accordingly.
studyTeach a topic from your content in any style.
topic: normalization
style: feynman
Styles: default, feynman, socratic, eli5, summary, exam-cram, or anything else the model can interpret.
study_allWalk through every active registered topic.
style: default
order: weakest_first | registered
quizGrounded quiz drawn only from your content. One question at a time. Results logged automatically.
topic: functional dependencies
n: 5
pyq_testReal past questions or new ones matching the paper's style.
topic: normalization
mode: ask | verbatim | style
n: 5
materials/content/, materials/pyqs/, materials/archive/Path.is_relative_to: blocks ../../.env traversaln, days, max_results) enforced via Pydantic Field metadata| Type | Extensions | Handling |
|---|---|---|
| Text | .txt, .md | Direct read |
.pdf | pypdf text extraction | |
| Word | .docx | python-docx extraction |
| Image | .png, .jpg, .jpeg, .webp | Returned as MCP ImageContent: vision-capable clients read it directly |
⚠️ Scanned PDFs have no extractable text.
pypdfreturns empty. OCR (Tesseract) or a text-based version before dropping in.
1. Discover topics from my material.
2. Register normalization and functional dependencies.
3. Teach me normalization in exam-cram style.
4. Quiz me on normalization with 5 questions.
5. Show my weakest topics.
6. Give me a PYQ-style test on functional dependencies.
The client chains discovery → registration → retrieval → quiz → logging, all against your own material.
Same MCP scaffolding, different domain:
The recipe:
safe data access
+ tools (actions)
+ resources (browsable context)
+ prompts (workflows)
+ persistent state (SQLite)
= a practical MCP server
mcp[cli] with FastMCPpypdf, python-docx: file extractionuv: dependency managementMIT © Eshita Kundu (see LICENSE).
Built for the Codédex Monthly Challenge, June 2026
⭐ Star if this taught you something · 🐛 Issues · 💬 Discussions
vdalhambra /
Instant SEO, performance, and security audits for any URL — an MCP server for AI agents
63/100 healthadeoluwaadesina /
An MCP server that gives Claude conversations a persistent, interactive plan/to-do panel.
71/100 healthtarundattagondi /
Turn an OpenAPI/Swagger spec into a high-quality, curated MCP server — consolidates endpoints into clear tools and proves it with an eval harness.
51/100 healthsshoecraft /
Self-contained Claude Code env: bundled MCP servers (ccmemory, ccusage, ccteam), project awareness skill (ccproject), and a relay-loop wrapper (ccloop), with an overlay system for per-user / per-host extensions.
73/100 health