OneNote服务器协议

一个用于Microsoft OneNote的Model Context Protocol (MCP)服务器,允许AI代理读取、创建和分析OneNote笔记本、分区和页面,包括通过Claude Vision自动提取图像内容。

  • by FRESHSK
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FRESHSK/mcp_onenote

使用说明

MCP OneNote服务器

服务器 模型上下文协议(MCP) 对于Microsoft OneNote,允许AI代理 克劳德桌面 阅读、创建和分析OneNote笔记本、分区和页面,包括图像内容的自动提取 通过克劳德视觉。


✨ 功能

  • 📒 利斯特 les笔记本、章节和页面
  • 📄 意大利里拉 页面的HTML内容
  • 🖼️ 从图像中提取文本 通过Claude Vision嵌入(新!)
  • ✏️ 创建 des笔记本、章节和页面
  • 🔐 认证 通过Azure AD设备代码流

🧰 先决条件


🚀 逐步安装

步骤1-克隆项目

git clone https://github.com/FRESHSK/mcp_onenote.git
cd mcp_onenote_01
npm install

步骤2-创建Azure AD应用程序(一次)

此步骤允许获得 Client ID 访问Microsoft图形API。

  1. 继续 Azure门户-应用程序注册
  2. 点击 “新注册”
  3. 填写表格:
    • 名字 : MCP OneNote
    • 支持的帐户类型 :选择第三个选项 (多租户+个人Microsoft帐户)
    • 重定向URI : Public client/native → http://localhost
    • 点击 注册
  4. 启用公共流:
    • 菜单粗鲁→ 认证
    • 滚动底座→ 高级设置
    • 允许公共客户端流 → 是
    • 点击 保存
  5. 复印机l'应用程序(客户端)ID 从那时起 概述

步骤3-添加Microsoft图形API权限

创建Azure AD应用程序后,必须授予访问OneNote所需的权限。

  1. 在 Azure 门户,转到您的应用程序注册
  2. 菜单粗鲁→ API权限
  3. 点击 “添加权限”
  4. 选择 微软图形
  5. 选择 委托权限
  6. 搜索并检查以下权限:
权限 描述
User.Read 阅读登录用户的个人资料
Notes.Read 阅读OneNote笔记本
Notes.Create 创建笔记本和页面
Notes.ReadWrite 阅读和编辑OneNote笔记本
  1. 点击 “添加权限”
  2. 点击 “授予管理员对…的同意” (如果您是管理员)然后确认

ℹ️ 如果您不是管理员,则将在首次通过设备代码流连接时授予权限。

Azure门户的预期结果:

✅ User.Read              (Delegated) - Granted
✅ Notes.Read             (Delegated) - Granted
✅ Notes.Create           (Delegated) - Granted
✅ Notes.ReadWrite        (Delegated) - Granted

步骤4-配置环境变量

cp .env.example .env

编辑 .env :

MICROSOFT_CLIENT_ID=ton-client-id-azure
MICROSOFT_TENANT_ID=common
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
TOKEN_CACHE_PATH=./token_cache.json

⚠️ 永远不要提交文件 .env -他在 .gitignore


步骤5-首次Microsoft身份验证

服务器需要Microsoft令牌才能访问OneNote。运行此脚本一次:

node debug_auth.js

您将在终端中看到:

To sign in, use a web browser to open the page
https://microsoft.com/devicelogin and enter the code XXXXXXXX
  1. 打开 https://microsoft.com/devicelogin
  2. 输入终端中显示的代码
  3. 使用您的Microsoft帐户登录
  4. 文件 token_cache.json 将自动创建

✅ 此步骤只需要一次。令牌自动更新。


步骤6-设置Claude桌面

编辑文件 claude_desktop_config.json de Claude桌面:

  • 视窗 : C:\Users\<user>\AppData\Roaming\Claude\claude_desktop_config.json
  • 苹果电脑 : ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "onenote": {
      "command": "node",
      "args": [
        "C:\\chemin\\absolu\\vers\\mcp_onenote_01\\server.js"
      ],
      "env": {
        "TOKEN_CACHE_PATH": "C:\\chemin\\absolu\\vers\\mcp_onenote_01\\token_cache.json"
      }
    }
  }
}

⚠️ 乐 TOKEN_CACHE_PATH Absolu对于Claude Desktop找到正确的令牌文件非常重要。


步骤7-重新启动Claude桌面

关闭并重新启动Claude桌面。OneNote MCP将可用。


🛠️ 可用工具

工具 描述 设置
list_notebooks 列出所有笔记本 -
list_sections 列出笔记本的部分 notebookId
list_pages 列出部分中的页面 sectionId
read_content 读取页面内容(文本+图像) pageId, extract_images (bool,默认值:true)
create_notebook 创建新笔记本 displayName
create_section 创建新部分 notebookId, displayName
create_page 创建新页面 sectionId, htmlContent

🖼️ 图像提取(克劳德视觉)

什么时候 extract_images: true (默认),工具 read_content :

  1. 解析页面的HTML
  2. 检测标签 <img> 指向图形API
  3. 使用Microsoft Bearer令牌获取每个图像
  4. 将图像发送给Claude Vision以提取文本内容
  5. 返回文本+从每个图像中提取的内容

要禁用此功能:

read_content(pageId: "...", extract_images: false)

📁 项目结构

mcp_onenote_01/
├── server.js                   # Serveur MCP principal
├── debug_auth.js               # Script d'authentification initiale
├── .env                        # Variables d'environnement (non commité)
├── .env.example                # Template des variables d'environnement
├── .gitignore                  # Fichiers ignorés par Git
├── claude_desktop_config.json  # Exemple de config Claude Desktop
├── token_cache.json            # Cache du token MSAL (non commité)
└── package.json                # Dépendances Node.js

📦 主要依赖项

包装 用法
@modelcontextprotocol/sdk MCP服务器
@azure/msal-node 身份验证Microsoft
@anthropic-ai/sdk Claude Vision for Images
node-fetch HTTP请求
dotenv 环境变量

🔒 安全

  • 文件 .env 包含键在 .gitignore
  • 乐 token_cache.json 包含Microsoft令牌的是 .gitignore
  • 永远不要在GitHub中提交API密钥或令牌

🐛 故障排除

MCP在Claude桌面中没有响应? →检查日志: AppData\Roaming\Claude\logs\mcp-server-onenote.log

令牌是否过期并再次请求身份验证? → 请问 TOKEN_CACHE_PATH 指向绝对正确的路径 claude_desktop_config.json → 继电器 node debug_auth.js 要续订令牌:

错误 media_type 在照片上? →代码自动规范化为 image/png 如果Anthropic API不支持该类型


📝 许可证

麻省理工学院