MoeReview
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MoeReviewCreate a new study page covering React hooks."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
这不是又一个"聊天窗口套壳"。MoeReview 更像一台学习机甲的驾驶舱:Agent 负责推理和教学(可以借力 MCP filesystem 读你的真实项目代码),Hub 负责稳定连接,Web UI 负责沉淀、做题、回看和交互。问题驱动,不是体系驱动——Agent 不该一次性铺开大体系,而该基于你实战中遇到的具体问题做精准讲解 + 验证。
✦ 产品预览
Related MCP server: MnemoQ
✦ 和已有工具的差别
NotebookLM | Anki | Obsidian + AI | MoeReview | |
借力你已有的 Agent | ×(自有模型) | ×(无 Agent) | 部分 | ✓(MCP 复用 Claude/Cursor) |
Agent 主动出题/批改 | × | × | 部分 | ✓ |
Agent 读你的真实项目代码 | × | × | × | ✓(借力 MCP filesystem) |
学习内容沉淀成稳定 UI | 部分(笔记) | ×(卡片) | ✓(但需手写) | ✓(Agent 自动生成) |
Agent 接得上你上次学到哪 | × | × | 部分 | ✓(通过 get_pages 读取完整历史 page) |
本地优先 | × | ✓ | ✓ | ✓ |
上手门槛 | 零(上传即用) | 中(卡片设计) | 高(配置插件) | 中(需 MCP 客户端) |
MoeReview 的位置:你已经用 MCP 客户端,想要 Agent 基于你的真实项目代码做讲解 + 出题,沉淀成稳定 UI,而不是散在聊天里。
✦ 示例场景
基于若依 Mapper 的实战概念巩固 — 你在写若依仓储模块,让 Agent 读你真实项目里的 SysDeptMapper.java,基于真实代码讲解 + 出题验证 + 沉淀可回看 page。第二天 Agent 通过 get_pages 接得上你上次学到哪。
✦ 它解决什么问题
如果你正在写若依仓储模块、读 React Fiber 源码、上手新框架—— 你大概率会用 Claude / Cursor 问问题、要讲解、做题验证。
但所有内容都在聊天记录里:
关掉对话窗口,讲解没了
错题没法回看
进度没法追踪
Agent 接不上你上次学到哪
MoeReview 让 Agent 把讲解、题目、批改、错题沉淀到一个稳定的浏览器工作台。 Agent 负责推理 + 读你的代码,浏览器负责记忆。重启 Agent 不丢学习状态。
不要让 Agent 的生命周期绑架学习界面的稳定性。
✦ 功能亮点
常驻
MoeReview Hub,Web 页面不依赖 Agent 启动(重启 Claude 不丢页面)借力 Agent 已有能力:让 Agent 通过 MCP filesystem 读你的真实项目代码,讲解基于真实代码不是泛泛而谈
会话级历史:Agent 通过
get_pages读取以往讲解完整内容,真正接得上你上次学到哪临时
MCP Agent Adapter,只转发工具调用(零状态、可重启)代码沙箱:Python(Pyodide WASM)+ C/Java 子进程(适合算法题验证)
测验闭环:出题 → 答题 → 批改 → 结果页 → 错题沉淀
右侧
Guidance Panel展示临时状态、短建议和下一步,不用切回 Agent 聊天无 Agent 时也能进入欢迎页和回看历史
默认本地存储,不需要账号或云服务
⌁ 架构
flowchart LR
Agent["✦ Agent"] <-->|stdio| Adapter["MCP Adapter"]
Adapter <-->|HTTP| Hub["MoeReview Hub"]
Hub <-->|HTTP / WebSocket| Web["Browser UI"]
classDef pink fill:#fff0f8,stroke:#ff8fcf,color:#3b2633,stroke-width:2px;
classDef mint fill:#ecfbf8,stroke:#43b3ae,color:#183b39,stroke-width:2px;
classDef violet fill:#f3f0ff,stroke:#8b7cf6,color:#302a55,stroke-width:2px;
classDef neutral fill:#f7f8fb,stroke:#9aa3b2,color:#252a33,stroke-width:2px;
class Agent pink;
class Adapter violet;
class Hub mint;
class Web neutral;MoeReview 后端拆成两个角色:
MoeReview Hub:常驻 HTTP/WebSocket 服务,负责网页、会话、历史、连接状态和事件路由。MCP Agent Adapter:临时 MCP stdio 服务,负责注册 Agent,并把工具调用转发到 Hub。
这样做的直接收益是:重启 Agent、切换 Agent、结束 Agent 对话,都不会导致网站不可访问。
⌁ 目录结构
.
+-- mcp-server/ # MoeReview Hub 和 MCP Agent Adapter
| +-- src/hub.ts # Hub 入口
| +-- src/index.ts # MCP Adapter 入口
| +-- src/ws/server.ts # HTTP / WebSocket / API / 路由
| +-- src/tools/ # MCP 工具实现
+-- web/ # React + Vite 前端
+-- skills/
| +-- moereview-agent/ # 可选 Codex skill:约束 Agent 正确使用 MoeReview
+-- docs/ # 设计文档
+-- scripts/ # 本地快速启动与检查脚本
+-- start.cmd # Windows 双击启动入口
+-- README.md # 中文文档
+-- README.en.md # 英文文档◇ 环境要求
Node.js 20.19+,或 22.12+
npm
一个支持 MCP 的 Agent / 客户端
当前项目优先服务本地单用户场景。账号系统、云同步、权限模型都还没引入。
本节专供 Agent 执行。MCP 的
stdio接入方式可以跨客户端复用;Skill 并非统一行业标准,必须先探测当前 Agent 的能力,再选择安装、引用或规则降级方案。
执行约束
先定位仓库根目录,并把配置中的路径转换为绝对路径。
先读取官方客户端文档或已有配置,确认 MCP 与 Skill 的格式和位置;无法确认时停止修改并报告,不要猜测。
修改配置时只合并 MoeReview 条目,禁止覆盖其他 MCP Server、Skill、Rules 或用户设置。
不提交依赖目录、构建产物、密钥或用户级 Agent 配置。
不要启动第二个 Hub;如果
http://127.0.0.1:3456/health已可访问,直接复用。
1. 探测环境与能力
开始前记录以下信息:
OS 与版本、Shell、CPU 架构
node --version、npm --version
Agent/客户端名称与版本
是否支持 MCP stdio
是否原生支持 SKILL.md 或其他项目规则机制完整项目要求 Node.js ^20.19.0 或 >=22.12.0。如果版本不满足:
优先使用机器上已有的 Node 版本管理器升级到当前 LTS。
没有版本管理器时,使用该操作系统的官方/可信包管理器或 Node.js 官方安装方式。
涉及管理员权限、GUI 安装或改变全局运行时且当前 Agent 无权执行时,停止自动安装,向用户给出对应系统的最短操作步骤。
不要改用 pnpm、Yarn 或 Bun;本仓库提交了 npm lockfile。Windows 使用 PowerShell,macOS/Linux 使用当前 POSIX Shell 即可完成依赖与构建。
2. 安装并构建
所有平台均在仓库根目录执行:
node --version
npm --version
npm run setup
npm run build任一命令失败时先报告实际错误,不要继续写入 MCP 配置。
3. 配置 MCP Adapter
以下是跨客户端不变的 MCP 契约:
name: moereview
transport: stdio
command: node
args: [<repo-absolute-path>/mcp-server/dist/index.js]Codex 用户将以下内容合并到 $CODEX_HOME/config.toml;未设置 CODEX_HOME 时使用 ~/.codex/config.toml:
[mcp_servers.moereview]
command = "node"
args = ["<repo-absolute-path>/mcp-server/dist/index.js"]将占位符替换为真实绝对路径。Windows TOML 路径建议使用 /,例如 E:/WebProject/LearnBuddy/MoeReview/mcp-server/dist/index.js。其他客户端必须根据其官方格式表达同一份契约;不要直接套用 Codex 的配置路径或字段名。
4. 按能力接入 Skill
Skill 源文件是 <repo>/skills/moereview-agent/SKILL.md。按当前 Agent 能力选择且只选择一种方案:
原生支持
SKILL.md:按该客户端官方方式安装整个skills/moereview-agent目录。Codex 安装到$CODEX_HOME/skills/moereview-agent,默认位置为~/.codex/skills/moereview-agent。支持 Rules/Instructions,但不支持 Skill:读取
SKILL.md及其直接引用的必要文件,将规则接入该客户端官方的项目级指令机制,并保留“仅在使用 MoeReview 时生效”的范围。两者都不支持:不要伪造 Skill 安装。每次 MoeReview 会话开始前读取
SKILL.md作为操作协议,并向用户说明该规则不会被客户端自动持久加载。
更新已有安装时只同步 moereview-agent,不得删除其他 Skill 或规则。原生安装后确认目标目录中的 SKILL.md 存在且可被客户端发现。
5. 启动 Hub
Hub 是独立常驻进程,必须在独立持久终端或受控后台进程中启动。
Windows:
npm run start:no-openmacOS/Linux:
npm --prefix mcp-server run hubnpm run build 已生成 Hub 所需的 Web 与 Server 构建产物。若使用非默认端口(例如 4567),给 Hub 设置 MOEREVIEW_HUB_PORT=4567,并在 MCP Adapter 配置中设置 MOEREVIEW_HUB_URL=http://127.0.0.1:4567;环境变量字段名按客户端官方格式填写。
6. 验收与报告
重新加载 Agent 的 MCP/规则配置后依次验证:
http://127.0.0.1:3456/health可访问。MCP Server
moereview已连接且能列出工具。调用
prepare_turn能返回绑定状态。原生 Skill 客户端能发现并调用
moereview-agent;Rules 方案确认规则已加载;临时读取方案明确记录其非持久性。
完成后向用户简要报告:OS、Node/npm 版本、构建结果、Hub 状态、MCP 配置位置、采用的 Skill 方案及四项验收结果。不得把“读取过 Skill”误报为“已原生安装 Skill”。
◇ 快速启动
Windows 用户可以直接双击:
start.cmd或者在仓库根目录运行:
npm run start这会自动:
检查 Node.js 和 npm。
安装缺失的
web/mcp-server依赖。构建前端和后端。
检查
3456端口。打开浏览器。
启动 MoeReview Hub。
如果只想检查环境:
npm run check如果不想自动打开浏览器:
npm run start:no-open快速启动脚本不会自动 kill 端口占用者。如果 3456 被占用,请手动停止旧进程,或者使用:
.\scripts\start.ps1 -Port 4567◇ 安装与构建
安装依赖:
cd mcp-server
npm install
cd ../web
npm install构建前端:
cd web
npm run build构建 Hub / MCP Adapter:
cd ../mcp-server
npm run build如果你从仓库根目录开始,可以按这个顺序执行:
cd web
npm run build
cd ../mcp-server
npm run build◇ 启动 Hub
Hub 默认监听 3456 端口,并托管已经构建好的 web/dist。
cd mcp-server
npm run hub然后打开:
http://localhost:3456没有 Agent 连接时,MoeReview 仍然可以正常打开,进入欢迎页或回看历史会话。
如果要换端口:
$env:MOEREVIEW_HUB_PORT="4567"
npm run hub⌁ 配置 MCP Adapter
构建 mcp-server 后,在你的 MCP 客户端里配置:
node <repo>/mcp-server/dist/index.js示例:
{
"mcpServers": {
"moereview": {
"command": "node",
"args": ["<absolute-path-to-repo>/mcp-server/dist/index.js"]
}
}
}把 <absolute-path-to-repo> 替换成你本地 clone 的仓库路径。
推荐启动顺序:
构建
web和mcp-server。运行
npm run hub启动 Hub。启动支持 MCP 的 Agent / 客户端。
打开
http://localhost:3456。
仓库内提供了一个可选 Codex skill:
skills/moereview-agent/它不规定教学方法,不干涉讲解风格。它只约束 Agent 如何正确使用 MoeReview:
显式绑定会话。
每轮开始读取 pending messages。
真实地区分
idle/waiting/working/disconnected。把讲解、总结、出题、批改和复习计划优先渲染到 MoeReview Web UI,而不是只写在 Agent 聊天里。
只有有长期回看价值的内容才创建 page。
临时状态和下一步建议放到侧边栏 guidance。
如果你的 Agent 支持显式 skill 调用,可以使用:
Use $moereview-agent或者直接指向:
skills/moereview-agent/SKILL.md如果你的 Agent 不会自动选择 skill,MoeReview 不能从 Hub 侧强制模型调用 MCP 工具。推荐在具体复习目录放一个 AGENTS.md,把 MoeReview 设成默认 Web-first 工作区,例如:
# MoeReview Web-First Study Workspace
如果 MoeReview MCP 工具可用,复习、讲解、出题、批改、总结前必须使用 `$moereview-agent`。
实质学习内容写入 MoeReview pages / quiz / result / guidance,Agent 聊天只保留短状态和错误说明。
需要用户继续操作时使用 `enter_standby`,让用户留在 Web UI。这类工作区默认指令能减少每次手动输入 Use $moereview-agent 的次数。
性能优化工具
为了减少 MCP 往返,Agent 应优先使用两个聚合工具:
prepare_turn:一次返回绑定状态、pending Web 消息和轻量 session snapshot,替代常见的get_binding_status+get_pending_messages+ 小范围get_session_snapshot。update_workspace:一次批量更新普通 pages、guidance、progress、toast、dashboard,替代多次show_card/create_pages+set_guidance_panel+set_progress。
推荐普通学习轮次:
prepare_turn
update_workspace测验和批改仍然使用专用工具:
show_quiz
enter_standby
show_result结果页与修正工具
show_result 是 MoeReview 的专用结果页工具,不是普通文本页。Agent 必须传结构化逐题结果,Hub 会根据逐题字段自动计算正确率。
每题至少需要提供以下任一种判分信息:
correct: true | falseverdict: "correct" | "partial" | "wrong" | "skipped"score+maxScore
自然语言批改不要放进 results 数组;应放到 summary.feedback 或 summary.grading_notes。否则结果页无法可靠统计,也容易误导用户。
示例:
{
"results": [
{
"id": "q1",
"verdict": "partial",
"score": 0.5,
"maxScore": 1,
"user_answer": "用户答案",
"correct_answer": "参考答案",
"explanation": "方向正确,但关键步骤不完整。"
}
],
"summary": {
"time_spent": 120,
"feedback": "整体反馈",
"grading_notes": "可选的自然语言批改说明"
}
}如果已经发布的结果页或学习页有实质错误:
用
correct_result修正结果页。必须提供具体reason,旧页会标记为superseded,新页作为修订版追加。用
supersede_page作废严重错误、重复或误导性的页面。必须提供具体reason。
这两个工具用于少数纠错场景,不用于普通措辞润色或无理由改写历史。
✦ 核心交互模型
Pages:长期学习记录
适合放进 page 的内容:
知识点讲解
结构化总结
测验题
测验结果
错题复盘
学习计划
重要修订
不适合放进 page 的内容:
“好的”
“我正在处理”
临时建议
工具状态
一句话提醒
Guidance Panel:右侧临时引导
适合放到侧栏的内容:
当前状态
下一步建议
操作提示
等待用户输入的说明
轻量警告
目标是让用户不打开 Agent 聊天窗口,也知道当前该做什么。
Agent 等待与唤醒
MCP 不能反向唤醒一个已经结束的 Agent turn。MoeReview 因此明确区分状态:
状态 | 含义 |
| 当前会话没有 Agent |
| Adapter 在线,但 Agent 没有主动等待 |
| Agent 正在 |
| Agent 正在处理或调用工具 |
| Agent 心跳过期或连接断开 |
只有 waiting 可以被 Web 输入立即唤醒。idle 和 working 状态下,Web 消息会进入队列,等待 Agent 下一轮调用 get_pending_messages。
◇ 常用命令
前端:
cd web
npm run dev
npm run build
npm run lint
npm test✦ 主题系统
顶部栏的主题设置提供两种模式:
快速:切换六套内置主题、明暗模式、强调色、三类字号、密度、内容宽度和动效。
实验室:编辑完整 Token、组件变体和布局,也可使用 JSONC 源码与作用域 CSS。
实验室会先复制内置主题,不会直接修改预设。自定义主题支持撤销、重做、20 条快照、导入导出和恢复。主题损坏时可访问 /?safe-theme=1,或在启动时按住 Shift 进入安全模式。
新增主题及公开 Token/选择器说明见 主题开发指南。
后端:
cd mcp-server
npm run build
npm run hub
npm run dev:hub
npm run start注意:npm run start 启动的是 MCP Adapter,不是 Hub。
⌁ 本地数据
MoeReview 默认把运行时数据放在用户目录:
~/.examforge/会话数据包括:
meta.jsonpages.jsonfavorites.jsonwrong_answers.jsonqa_memory.jsonactivity_log.jsonmessage_queue.jsonguidance.json
这些数据不应该提交到 Git。
※ 常见问题
3456 端口被占用
Hub 不会自动 kill 端口占用者。请手动停止旧进程,或者设置 MOEREVIEW_HUB_PORT。
Hub 打开了,但不是完整 Web UI
通常是还没构建前端:
cd web
npm run build然后重启 Hub。
MCP 工具提示 Hub 未启动
先启动 Hub,再启动 MCP Adapter:
cd mcp-server
npm run hub前端发消息后 Agent 没反应
看会话状态:
waiting:应该能立即唤醒。idle:消息已入队,Agent 下一轮读取。working:消息已入队,等待 Agent 忙完。disconnected:需要重启 MCP Adapter。
◇ 开源前状态
MoeReview 仍在快速迭代中,API 和目录结构可能继续变化。当前最重要的设计原则是:
Web 工作台必须独立于 Agent 生命周期稳定运行。
后续适合补:
一键启动脚本
连接诊断面板
pending message 数量提示
standby 取消 / 延长机制
自动生成 MCP 工具文档
License
This server cannot be deployed
Maintenance
Related MCP Connectors
- OctopadOAuthapp.octopad
The back-office workspace for your team's AIs: tasks, knowledge and context shared over MCP.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Self-hosted AI-native knowledge workspace with hybrid search, GraphRAG, and MCP.
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides LLM agents with a structured, queryable, local-first knowledge base with typed documents and full-text search via MCP.MIT
- AlicenseAqualityBmaintenanceA local-first memory engine for AI agents with MCP-native, graph-linked, spaced repetition. It enables agents to log, retrieve, and manage learnings via CLI or MCP server.8AGPL 3.0
- FlicenseCqualityCmaintenanceA local-first flashcard and quiz app with an MCP server for Codex, enabling users to manage decks, cards, quizzes, and reviews through natural language.19-
- AlicenseAqualityBmaintenanceAn agent-native teaching OS that gives AI assistants a persistent classroom with courses, lessons, flashcards, and graded exercises via MCP tools.503AGPL 3.0