cd /news/ai-products/i-built-an-mcp-server-that-lets-clau… · home topics ai-products article
[ARTICLE · art-18293] src=dev.to pub= topic=ai-products verified=true sentiment=↑ positive

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.

read2 min publishedMay 30, 2026

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.

// 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.

── more in #ai-products 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-an-mcp-serve…] indexed:0 read:2min 2026-05-30 ·