techeditor/vocabcube-mcp-server-js
If you are the rightful owner of vocabcube-mcp-server-js and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
VocabCube is an intelligent English vocabulary learning and memory aid system based on the Ebbinghaus forgetting curve, implemented as an MCP (Model Context Protocol) server.
VocabCube - 英文单词学习和记忆辅助MCP服务器
VocabCube是一个基于艾宾浩斯遗忘曲线的智能英文单词学习和记忆辅助系统,实现为MCP (Model Context Protocol) 服务器。它帮助中学生科学地学习和复习英语词汇,提高记忆效果。
✨ 核心特性
- 🧠 科学记忆算法: 基于艾宾浩斯遗忘曲线的智能复习计划
- 📚 丰富词汇库: 包含2305个中学英语词汇,覆盖七年级到九年级
- 🎯 精准筛选: 支持按课本、单元范围获取单词
- 📊 进度跟踪: 自动记录学习进度和复习状态
- 🔄 智能复习: 根据遗忘曲线自动安排复习时间
- 🛠️ MCP标准: 完全兼容MCP协议,可集成到各种AI应用
📖 词汇数据覆盖
- 七年级上册 (七上): Starter Unit 1-3, Unit 1-9
- 七年级下册 (七下): Unit 1-12
- 八年级上册 (八上): Unit 1-10
- 八年级下册 (八下): Unit 1-10
- 九年级全册 (九全): Unit 1-14
每个单词包含:单词、中文释义、音标、课本信息、单元信息。 因版权原因,本仓库中只提供示例文件。
🚀 快速开始
环境要求
- Node.js 18.0 或更高版本
- npm 或 pnpm 包管理器
安装依赖
# 使用pnpm
pnpm install
启动服务器
# 通过xiaozhi-client启动
xiaozhi start
# 或直接启动MCP服务器
node mcpServers/VocabCube/index.js
配置说明
VocabCube已预配置在 xiaozhi.config.json 中:
{
"mcpServers": {
"vocabCube": {
"command": "node",
"args": ["./mcpServers/VocabCube/index.js"],
"env": {},
"disabled": false
}
}
}
🛠️ MCP工具接口
VocabCube提供4个核心MCP工具:
1. get_words_by_range - 按范围获取单词
根据课本和单元范围获取英语单词。
参数:
text_book(可选): 课本名称 - "七上"、"七下"、"八上"、"八下"、"九全"、"全部"text_book_subject(可选): 主题名称 - 如"Starter Unit 1"、"Unit 1"等word_count(可选): 返回单词数量,默认为1is_random(可选): 是否随机选择,默认为true
示例:
{
"name": "get_words_by_range",
"arguments": {
"text_book": "七上",
"text_book_subject": "Starter Unit 1",
"word_count": 3,
"is_random": false
}
}
2. set_memory_plan - 设置记忆计划
为指定单词设置基于艾宾浩斯遗忘曲线的复习计划。
参数:
word(必需): 要设置记忆计划的单词start_time(可选): 开始学习时间,ISO格式,默认为当前时间
复习时间间隔:
- 20分钟后
- 1天后
- 3天后
- 1周后
- 2周后
- 1个月后
示例:
{
"name": "set_memory_plan",
"arguments": {
"word": "good",
"start_time": "2024-01-01T10:00:00.000Z"
}
}
3. get_review_words - 获取复习单词
获取当前需要复习的单词列表。
参数:
review_time(可选): 复习时间点,ISO格式,默认为当前时间word_count(可选): 返回单词数量,默认为1is_random(可选): 是否随机选择,默认为true
示例:
{
"name": "get_review_words",
"arguments": {
"word_count": 5,
"is_random": false
}
}
4. mark_review_complete - 标记复习完成
标记单词复习完成,自动计算下次复习时间。
参数:
word(必需): 完成复习的单词review_time(可选): 复习完成时间,默认为当前时间
示例:
{
"name": "mark_review_complete",
"arguments": {
"word": "good"
}
}
📁 项目结构
mcpServers/VocabCube/
├── index.js # 主服务器入口文件
├── lib/
│ ├── ExcelManager.js # Excel数据处理管理器
│ ├── EbbinghausAlgorithm.js # 艾宾浩斯遗忘曲线算法
│ └── Logger.js # 日志记录工具
└── data/
└── Middle School English Vocabulary.demo.xlsx # 中学英语词汇数据示例
💡 使用场景
场景1: 开始学习新单词
- 使用
get_words_by_range获取要学习的单词 - 使用
set_memory_plan为单词设置复习计划 - 系统自动安排科学的复习时间表
场景2: 进行复习
- 使用
get_review_words获取当前需要复习的单词 - 完成复习后使用
mark_review_complete标记完成 - 系统自动计算下次复习时间
场景3: 按教材学习
- 指定课本和单元,如"七上 Starter Unit 1"
- 获取该单元的所有单词进行学习
- 为每个单词设置个性化的复习计划
🔧 技术架构
核心组件
- ExcelManager: 负责Excel文件的读取、写入和数据管理
- EbbinghausAlgorithm: 实现艾宾浩斯遗忘曲线算法
- Logger: 提供统一的日志记录功能
- MCP Server: 标准MCP协议服务器实现
数据存储
- 使用Excel文件存储词汇数据和学习进度
- 自动备份机制防止数据丢失
- 支持并发访问和数据一致性
算法原理
艾宾浩斯遗忘曲线表明,遗忘在学习之后立即开始,而且遗忘的进程并不是均匀的。VocabCube根据这一原理设置了科学的复习间隔:
- 第1次复习: 学习后20分钟
- 第2次复习: 学习后1天
- 第3次复习: 学习后3天
- 第4次复习: 学习后1周
- 第5次复习: 学习后2周
- 第6次复习: 学习后1个月
📊 数据格式
单词数据结构
{
"text_book": "七上", // 课本名称
"text_book_subject": "Starter Unit 1", // 单元名称
"word": "good", // 单词
"chinese": "adj.好的", // 中文释义
"phonetic": "[gʊd]", // 音标
"review_20min": "2024-01-01T10:20:00Z", // 20分钟复习时间
"review_1day": "2024-01-02T10:00:00Z", // 1天复习时间
"review_3day": "2024-01-04T10:00:00Z", // 3天复习时间
"review_1week": "2024-01-08T10:00:00Z", // 1周复习时间
"review_2week": "2024-01-15T10:00:00Z", // 2周复习时间
"review_1month": "2024-01-31T10:00:00Z", // 1个月复习时间
"next_review_time": "2024-01-01T10:20:00Z" // 下次复习时间
}
🚨 错误处理
VocabCube提供完善的错误处理机制:
- 参数验证错误: 输入参数不符合要求时的详细提示
- 文件访问错误: Excel文件不存在或无法访问时的处理
- 数据格式错误: Excel文件格式不正确时的验证
- 业务逻辑错误: 如单词不存在、复习计划冲突等
所有错误信息都提供中文描述,便于理解和调试。
🔒 安全考虑
- 文件访问安全: 验证Excel文件路径的合法性
- 数据验证: 严格的输入参数验证
- 并发控制: Excel文件访问的互斥锁机制
- 数据备份: 自动创建备份文件防止数据损坏
让学习更科学,让记忆更持久! 🚀