OneNote MCP 服务器

一个允许Claude访问本地Microsoft OneNote笔记本的服务器,通过解析OneNote备份文件并提供读写工具,无需Azure注册或API密钥。

  • by mhzarem
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 mhzarem/onenote-mcp

使用说明

OneNote MCP服务器

一 MCP(模型上下文协议) 允许Claude访问您本地Microsoft OneNote笔记本的服务器。上面写着 .one 文件直接从磁盘,并通过COM API写入OneNote-无需Azure注册,无需API密钥,无需身份验证。

它的作用

此服务器解析桌面应用程序本地存储的OneNote备份文件,并将其作为Claude可以用来浏览、读取和写入笔记的工具公开。

阅读工具

工具 说明
list_notebooks 列出所有本地可用的OneNote笔记本(来自备份文件)
list_sections 列出特定笔记本中的所有部分
read_section 阅读一节的全文内容
search_notes 在所有笔记本和分区中搜索文本
list_all_sections 列出每个笔记本的每个部分
get_notebook_summary 通过内容预览获取笔记本概述

书写工具

工具 说明
list_live_notebooks 列出正在运行的OneNote应用程序中的笔记本/分区
create_page 在任何笔记本分区中创建新页面
list_live_pages 在一个部分中列出页面(带有用于附加的ID)
append_to_page 将内容附加到现有页面

书写工具使用OneNote COM API,并且要求OneNote桌面应用程序在Windows上运行。

先决条件

  • Python 3.12+
  • 紫外线 (推荐)或pip
  • Microsoft OneNote桌面应用程序(带本地备份文件)

安装

git clone https://github.com/mhzarem/onenote-mcp.git
cd onenote-mcp
uv sync

或者使用pip:

git clone https://github.com/mhzarem/onenote-mcp.git
cd onenote-mcp
pip install "mcp[cli]" pyOneNote

设置

克劳德代码

claude mcp add --transport stdio onenote -- uv --directory /path/to/onenote-mcp run server.py

验证它是否已连接:

claude mcp list

克劳德桌面版

将此添加到您的 claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "onenote": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/onenote-mcp",
        "run",
        "server.py"
      ]
    }
  }
}

在Windows上,使用完整路径 uv.exe 双反睫毛:

{
  "mcpServers": {
    "onenote": {
      "command": "C:\\Users\\YOUR_USER\\.local\\bin\\uv.exe",
      "args": [
        "--directory",
        "C:\\path\\to\\onenote-mcp",
        "run",
        "server.py"
      ]
    }
  }
}

保存后重新启动Claude Desktop。

从何处读取文件

默认情况下,服务器从OneNote桌面应用程序的本地备份目录读取:

C:\Users\<user>\AppData\Local\Microsoft\OneNote\16.0\Backup\

要使用其他位置,请设置 ONENOTE_BACKUP_DIR 环境变量:

# Claude Code
claude mcp add --transport stdio --env ONENOTE_BACKUP_DIR=/path/to/notes onenote -- uv --directory /path/to/onenote-mcp run server.py

# Or export it
export ONENOTE_BACKUP_DIR=/path/to/your/onenote/files

使用示例

连接后,您可以问Claude:

阅读:

  • “列出我的OneNote笔记本”
  • “显示我的机器学习笔记本中的部分”
  • “阅读我的算法笔记”
  • “在我的笔记中搜索变压器”
  • “给我一份编程笔记本的摘要”

写作:

  • “在我的笔记本/快速笔记中创建一个名为“会议笔记”的新页面”
  • “将我的面试准备笔记添加到OneNote”
  • “将今天的摘要添加到我现有的页面”

运作原理

阅读:

  1. 扫描OneNote备份目录以查找 .one 文件
  2. 按笔记本和分区组织它们(将备份版本分组在一起)
  3. 用途 pyOneNote 解析二进制文件 .one 格式
  4. 提取物 RichEditTextUnicode 每个部分的文本内容

写作:

  1. 通过COM API连接到正在运行的OneNote桌面应用程序
  2. 使用PowerShell子进程调用创建页面和更新内容
  3. 支持页面内容中的HTML格式

局限性

  • 阅读:使用OneNote桌面备份文件,而不是没有本地备份的仅支持OneDrive的笔记本
  • 阅读:仅提取文本内容;不包括图像和嵌入文件
  • 写作:需要安装了OneNote桌面应用程序的Windows
  • 写作:必须安装OneNote应用程序(它不需要打开-COM API将启动它)

许可证

麻省理工学院