欢迎光临
我们一直在努力

我搭建了一个 MCP 服务器,让 Claude 可以读取我的研究数据——方法如下

我搭建了一个MCP服务器,可以让Claude读取我的研究数据。

简而言之——Shiori 是一款开源的 AI 学习应用(基于 React 和 Gemini)。我添加了一个模型上下文协议服务器,这样你就可以向 Claude Code 询问诸如“这周有哪些作业要交?”之类的问题,并从你的实际数据中获得真实的答案。

问题

我用Claude Code辅助学习,但它根本不知道我到底在学什么。每次都得把笔记、截止日期和成绩粘贴到聊天窗口里。

我希望克劳德事先了解我的研究背景。

诗织做什么

Shiori 是一款功能齐全的学习伴侣:作业、成绩、GPA 预测器、AI 记忆卡生成、间隔重复、AI 测验生成器、习惯追踪器、专注模式(番茄工作法)、排行榜,以及一个可以从 PDF/文本转储中提取所有作业的课程大纲导入器。

它完全在浏览器中运行——核心功能无需服务器。数据存储在本地存储中。您可以在shiori-v1.vercel.app上试用(点击“试用演示”,无需注册账号)。

MCP服务器

有趣的是:我添加了一个/mcp服务器,它提供了 6 个工具:

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 %

工作原理

您可以通过 Shiori(设置 → 导出数据)导出数据,该文件会被写入shiori-data.json。MCP 服务器读取该文件并将其提供给 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) }] }
})

克劳德代码设置

添加.claude/mcp.json

{
  "mcpServers": {
    "shiori": {
      "command": "node",
      "args": ["/path/to/Shiori-v1/mcp/index.js"],
      "env": { "SHIORI_DATA_PATH": "/path/to/shiori-data.json" }
    }
  }
}

然后,在克劳德代码中:what's due this week?→ 克劳德打电话get_assignments来给你一个真实的答案。

克劳德桌面设置

同样的想法,添加到claude_desktop_config.json

{
  "mcpServers": {
    "shiori": {
      "command": "node",
      "args": ["/absolute/path/to/mcp/index.js"]
    }
  }
}

为什么这很重要

MCP 模式对于个人工具来说非常强大。你的研究数据无需通过任何 API 传输——它保留在本地。Claude 直接读取文件。这才是真正意义上的“自带上下文”模型。

我计划添加更多工具:create_study_plan,,generate_quiz_from_notesget_habit_streaks

试试看

感谢您的点赞——这是一个个人项目,GitHub 上的开源项目曝光度至关重要。欢迎提交 PR——目前已有针对该项目的初始 issue,并附有具体的文件和行号。

赞(0)
未经允许不得转载:X记录空间 » 我搭建了一个 MCP 服务器,让 Claude 可以读取我的研究数据——方法如下