黑曜石学习扩展MCP服务器
一种模型上下文协议(MCP)服务器,它扩展了官方的黑曜石MCP服务器,具有智能学习和第二大脑功能。
特性
🎯 挑战系统
- 人工智能带来的挑战:根据主题、难度和类型创建个性化学习挑战
- 进度跟踪:监控每个挑战所花费的时间和状态
- 挑战类型:知识、实践、教学、分析、创意
- 难度等级:初级、中级、高级、专家
📊 进度分析
- 活动记录:跟踪学习课程的持续时间和掌握程度评级
- 统计仪表板:查看花费的时间、平均掌握程度和活动趋势
- 主题分析:查看不同主题的时间分布
- 性能洞察:确定需要改进的领域
🔄 间隔重复
- 智能调度:基于间隔重复算法自动安排评论
- 基于性能的间隔:复习间隔根据你的记忆力进行调整
- 到期审查跟踪:获取过期评论的通知
- 注释集成:将评论直接链接到黑曜石笔记
🧠 知识差距分析
- 识别薄弱环节:查找掌握程度较低的主题
- 活动跟踪:查看最近哪些主题没有练习
- 个性化建议:获取基于人工智能的下一步学习建议
- 焦点分析:分析特定领域或整个知识库
先决条件
- Docker和Docker Compose
- 官方黑曜石MCP服务器(来自Docker)已设置
- Claude Desktop配置了黑曜石MCP
安装
1.克隆存储库
git clone https://github.com/yourusername/obsidian-learning-extension.git
cd obsidian-learning-extension2.构建Docker镜像
docker-compose build3.测试服务器
docker-compose up服务器应启动并等待stdio通信。
配置
添加到Claude桌面配置
编辑您的Claude Desktop配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 视窗: %APPDATA%\Claude\claude_desktop_config.json
在现有的黑曜石服务器旁边添加学习扩展服务器:
{
"mcpServers": {
"obsidian": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OBSIDIAN_HOST",
"-e", "OBSIDIAN_API_KEY",
"mcp/obsidian"
],
"env": {
"OBSIDIAN_HOST": "host.docker.internal",
"OBSIDIAN_API_KEY": "YOUR_API_KEY"
}
},
"obsidian-learning": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/ABSOLUTE/PATH/TO/obsidian-learning-extension/data:/data:rw",
"obsidian-learning-extension:latest"
]
}
}
}重要:替换 /ABSOLUTE/PATH/TO/obsidian-learning-extension 与你的实际路径!
重新启动克劳德桌面
完全退出并重新打开Claude Desktop以加载新服务器。
可用工具
挑战管理
create_challenge
使用人工智能生成的内容创建新的学习挑战。
参数:
topic(string):学习主题(例如“Docker Networking”)difficulty(enum):初级、中级、高级、专家challenge_type(enum):知识、实践、教学、分析、创意description(字符串,可选):自定义挑战描述
示例:
"Create an intermediate practical challenge on Docker networking"list_challenges
使用可选筛选列出所有挑战。
参数:
status(枚举,可选):待定、正在进行、已完成、已存档difficulty(枚举,可选):按难度级别筛选
示例:
"Show me all my in-progress challenges"get_challenge
获取有关特定挑战的详细信息。
参数:
challenge_id(string):挑战的ID
update_challenge_status
更新挑战状态并添加注释。
参数:
challenge_id(字符串):挑战IDstatus(enum):待定、正在进行、已完成、已存档notes(字符串,可选):关于状态更改的注释
示例:
"Mark challenge ch_abc123 as completed with notes: Built a working multi-container app"进度跟踪
record_progress
记录一次学习过程。
参数:
topic你学什么activity你做了什么duration_minutes(数字):花费的时间mastery_rating(数字):自我评估0-10challenge_id(字符串,可选):链接到挑战notes(字符串,可选):附加注释
示例:
"Record 45 minutes learning Docker volumes, mastery 7/10, completed tutorial"get_progress_stats
查看学习统计数据和分析。
参数:
topic(字符串,可选):按主题筛选days(数字,可选):回顾的天数(默认值:30)
示例:
"Show my learning stats for the last 7 days"间隔重复
schedule_review
安排一次间隔重复的复习。
参数:
topic(string):要查看的主题note_path(string):黑曜石音符路径initial_interval_days(数字,可选):第一次审查间隔
示例:
"Schedule a review for Docker networking, note at Software Development/Docker Networking.md"get_due_reviews
获取所有到期或逾期的评论。
示例:
"What reviews are due today?"complete_review
将一条评论标记为已完成,并安排下一条评论。
参数:
review_id(string):审核IDperformance(enum):弱、中等、强、完美notes(字符串,可选):复习笔记
示例:
"Complete review rv_abc123 with strong performance"知识分析
suggest_next_topic
获取有关下一步学习内容的AI建议。
参数:
area(字符串,可选):焦点区域(例如“Docker”)
示例:
"What should I study next?"analyze_knowledge_gaps
分析你的学习,找出差距和薄弱环节。
参数:
focus_area(字符串,可选):要分析的区域
示例:
"Analyze my knowledge gaps in programming"用法示例
入门指南
Claude: "Create a beginner knowledge challenge on Python async/await"
Claude: "List all my pending challenges"
Claude: "Update challenge ch_abc123 to in_progress"学习期间
Claude: "Record 30 minutes studying async programming, mastery 6/10"
Claude: "What are my learning stats this week?"维护知识
Claude: "Schedule a review for async programming at Python/Async.md"
Claude: "What reviews are due?"
Claude: "Complete review rv_xyz789 with strong performance"获取见解
Claude: "What should I study next?"
Claude: "Analyze my knowledge gaps"
Claude: "Show challenges with low mastery scores"数据存储
所有数据都存储在JSON文件中 data/ 目录:
challenges.json:挑战定义和状态progress.json:学习活动日志reviews.json:间隔重复时间表
这些文件由服务器自动创建和维护。
建筑
┌─────────────────┐
│ Claude Desktop │
└────────┬────────┘
│
┌────┴─────────────────┐
│ │
┌───▼────────┐ ┌───────▼────────┐
│ Official │ │ Learning │
│ Obsidian │ │ Extension │
│ MCP Server │ │ MCP Server │
└───┬────────┘ └────────┬───────┘
│ │
┌───▼────────────┐ ┌────▼──────┐
│ Obsidian Vault │ │ JSON │
│ (via REST) │ │ Data │
└────────────────┘ └───────────┘两台服务器协同工作:
- 官方服务器:处理所有黑曜石文件操作
- 学习扩展:提供智能学习功能
发展
本地运行
# Install dependencies
pip install -r requirements.txt
# Run server
python learning_server.py构建Docker镜像
docker-compose build查看日志
# With docker-compose
docker-compose logs -f
# With docker
docker logs obsidian-learning -f调试
使用MCP检查器进行调试:
npx @modelcontextprotocol/inspector python learning_server.py故障排除
服务器无法启动
- 检查Docker是否正在运行:
docker ps - 重建映像:
docker-compose build --no-cache - 检查日志:
docker-compose logs
Claude中未显示的工具
- 验证Claude Desktop配置JSON是否有效
- 确保数据目录路径是绝对的(不是相对的)
- 完全重新启动克劳德桌面
- 检查克劳德日志:
~/Library/Logs/Claude/(macOS)
数据不持久
- 验证docker-compose.yml中的卷装载
- 检查数据目录权限
- 确保路径是绝对的
权限错误
# Fix data directory permissions
chmod 755 data/路线图
第二阶段(计划中)
- \[\]知识图可视化
- \[\]基于主题的自动笔记链接
- \[\]学习条纹跟踪
- \[\]挑战模板库
- \[\]导出进度报告
第三阶段(未来)
- \[\]用于个性化难度调整的机器学习
- \[\]协作挑战
- \[\]与外部学习平台集成
- \[\]手机评论通知
- \[\]高级分析仪表板
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-随意使用和修改!
支持
- 问题:
- 讨论:
致谢
- 建立在 模型上下文协议
- 补充 官方黑曜石MCP服务器
- 受间隔重复研究和第二大脑方法的启发
