I built an MCP server that lets Claude read my study data — here's how A developer built an MCP server for the open-source study app Shiori that lets Claude Code access real-time study data, including assignments, grades, and notes. The server exposes six tools that read from a local JSON export, enabling queries like "what assignments are due this week?" without sending data through external APIs. The project runs entirely in the browser with localStorage and is available at shiori-v1.vercel.app. tl;dr — Shiori is an open-source AI study app React + Gemini . I added a Model Context Protocol server so you can ask Claude Code things like "what assignments are due this week?" and get real answers from your actual data. I was using Claude Code to help me study, but it had no idea what I was actually studying. I'd have to paste my notes, deadlines, and grades into the chat every time. What I wanted: Claude to already know my study context. Shiori is a full study companion: assignments, grades, GPA predictor, AI flashcard generation, spaced repetition, AI quiz generator, habit tracker, focus mode Pomodoro , leaderboard, and a syllabus importer that extracts all assignments from a PDF/text dump. It runs entirely in the browser — no server needed for the core features. Data lives in localStorage. You can try it at shiori-v1.vercel.app click TRY DEMO, no account needed . The interesting part: I added a /mcp server that exposes 6 tools: get study summary → overview of assignments, grades, streaks get assignments → list with due dates, status, priority get grades → GPA, course grades, trend get notes → your markdown notes add assignment → create assignment from Claude get flashcard decks → deck names + mastery % You export your data from Shiori Settings → Export Data , which writes shiori-data.json . The MCP server reads that file and serves it to Claude. js // mcp/index.js simplified server.tool 'get assignments', async = { const data = JSON.parse fs.readFileSync DATA PATH const upcoming = data.assignments .filter a = a.completed .sort a, b = a.dueDate - b.dueDate .slice 0, 20 return { content: { type: 'text', text: JSON.stringify upcoming, null, 2 } } } Add to .claude/mcp.json : { "mcpServers": { "shiori": { "command": "node", "args": "/path/to/Shiori-v1/mcp/index.js" , "env": { "SHIORI DATA PATH": "/path/to/shiori-data.json" } } } } Then in Claude Code: what's due this week? → Claude calls get assignments and gives you a real answer. Same idea, add to claude desktop config.json : { "mcpServers": { "shiori": { "command": "node", "args": "/absolute/path/to/mcp/index.js" } } } The MCP pattern is powerful for personal tools. Your study data doesn't need to go through any API — it stays local. Claude reads the file directly. This is the "bring your own context" model taken seriously. I plan to add more tools: create study plan , generate quiz from notes , get habit streaks . mcp/README.md in the repoStars appreciated — this is a solo project and GitHub discoverability matters for open source. PRs welcome — there are good-first issues open with exact file + line pointers.