Notion Anki Mcp

Notion Anki Mcp

🚀 Notion-Anki MCP 服务器

这是一个基于模型上下文协议(MCP)的服务器,它能够自动从 Notion 页面生成 Anki 抽认卡。该工具通过 OpenAI 的 API 从 Notion 的折叠块中提取问题和答案,并将其转换为结构化的 Anki 卡片,同时借助 AnkiConnect 实现实时导入。

🚀 快速开始

1. 克隆仓库

git clone https://github.com/yourusername/notion-anki-mcp.git
cd notion-anki-mcp

2. 安装依赖

pip install -r requirements.txt

3. 环境配置

cp .env.example .env

编辑 .env 文件,填入你的 API 密钥:

NOTION_API_KEY=your_notion_api_key_here
OPENAI_API_KEY=your_openai_api_key_here

4. 启动 MCP 服务器

python server.py

✨ 主要特性

  • Notion 集成:通过官方 API 从 Notion 页面提取内容。
  • 智能解析:将折叠块识别为问答对。
  • AI 增强:利用 OpenAI 优化和提升抽认卡质量。
  • 实时导入:通过 AnkiConnect 自动将卡片添加到 Anki 中。
  • MCP 协议:可与如 Claude Desktop 等支持 MCP 的客户端配合使用。

📦 安装指南

在设置此项目之前,请确保你具备以下条件:

  1. Notion API 访问权限
    • 创建一个 Notion 集成
    • 从集成设置中获取你的 API 密钥。
  2. OpenAI API 访问权限
    • 注册 OpenAI API
    • 创建一个有足够额度的 API 密钥。
  3. Anki 设置
    • 安装 Anki 桌面应用程序。
    • 安装 AnkiConnect 插件。
    • 在生成抽认卡期间保持 Anki 运行。
  4. Python 环境
    • Python 3.8 或更高版本。
    • pip 包管理器。

💻 使用示例

基础用法

通过 MCP 客户端(推荐)

  1. 配置你的 MCP 客户端以连接到该服务器。
  2. 使用可用工具:
    • search_page:按名称查找 Notion 页面。
    • extract_page_content:从页面中提取问题和答案。
    • generate_flashcards:创建并导入 Anki 卡片。

直接使用 Python

import asyncio
from server import search_notion_page, fetch_page_content, generate_flashcards_gpt

async def create_flashcards(page_name):
# Search for the page
page_result = await search_notion_page(page_name)
if not page_result:
print(f"Page '{page_name}' not found")
return

# Extract content
topics, content = await fetch_page_content(page_result['page_id'])

# Generate and import flashcards
cards = await generate_flashcards_gpt(page_name, topics, content)
print(f"Created {len(cards)} flashcards for '{page_name}'")

# Run the example
asyncio.run(create_flashcards("Your Page Name"))

📚 详细文档

如何构建你的 Notion 页面

为使工具有效工作,请按以下方式构建你的 Notion 页面:

折叠块格式

创建折叠块,其中:

  • 折叠块标题 = 你的问题
  • 折叠块内容 = 答案/解释

示例结构:

📝 机器学习概念

🔽 什么是监督学习?
监督学习是一种机器学习类型,其中...
- 使用带标签的训练数据
- 学习从输入到输出的映射
- 示例:分类、回归

🔽 分类和回归有什么区别?
分类预测类别/类,而回归预测连续值...

支持的内容类型

在折叠块内,该工具支持:

  • 纯文本段落
  • 无序列表
  • 有序列表
  • 基本格式(粗体、斜体等)

API 参考

MCP 工具

search_page

按名称搜索 Notion 页面。 参数

  • page_name(字符串):要搜索的 Notion 页面的标题。 返回值
{
"status": "success",
"page_name": "Page Title",
"result": {
"result": "Found",
"page_id": "page-uuid",
"link": "https://notion.so/..."
}
}
extract_page_content

从 Notion 页面提取问题和答案。 参数

  • page_id(字符串):Notion 页面的 UUID。 返回值
{
"status": "success",
"topics": ["Topic 1", "Topic 2"],
"content": {
"Question 1?": "Answer 1...",
"Question 2?": "Answer 2..."
}
}
generate_flashcards

根据提取的内容创建 Anki 抽认卡。 参数

  • page_name(字符串):Anki 牌组的名称。
  • topics(数组):页面中的主题/标题列表。
  • content(对象):问答对。 返回值
{
"status": "created",
"cards": [...],
"message": "Created flashdeck and cards for 'Page Name' in Anki"
}

🔧 技术细节

常见问题

  • “未找到页面”错误
    • 确保页面名称完全匹配(区分大小写)。
    • 验证你的 Notion 集成有权限访问该页面。
    • 检查页面是否在共享工作区中。
  • “AnkiConnect 无响应”错误
    • 确保 Anki 桌面应用程序正在运行。
    • 验证 AnkiConnect 插件已安装并启用。
    • 检查 Anki 未处于复习模式或显示对话框。
  • “OpenAI API 错误”错误
    • 验证你的 OpenAI API 密钥正确且有效。
    • 检查你的 API 使用限制和账单情况。
    • 确保你有权访问 GPT - 4 模型。
  • 生成的抽认卡为空
    • 检查你的 Notion 页面是否使用了折叠块格式。
    • 确保折叠块包含文本内容。
    • 验证页面有实际内容,而不仅仅是标题。

调试模式

通过修改 server.py 启用调试日志:

import logging
logging.basicConfig(level=logging.DEBUG)

🤝 贡献代码

  1. 分叉仓库。
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)。
  3. 提交你的更改 (git commit -m 'Add amazing feature')。
  4. 推送到该分支 (git push origin feature/amazing-feature)。
  5. 打开一个拉取请求。

📄 许可证

本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。

🙏 致谢


❤️ 为更好的学习和知识留存而打造

  • 0 关注
  • 0 收藏,35 浏览
  • system 提出于 2025-09-19 10:51

相似服务问题

相关AI产品