OneNote集成服务器

一个完整的Microsoft OneNote集成服务器,通过自然语言查询访问您的OneNote知识库。

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

使用说明

OneNote MCP服务器

一个完整、健壮的模型上下文协议(MCP)服务器,用于Microsoft OneNote与Claude Desktop的集成。通过自然语言查询访问整个OneNote知识库。

🎯 这有什么作用

将您的OneNote笔记本转换为AI可访问的知识库:

  • 列出所有笔记本、分区和页面
  • 阅读页面内容 用于分析和搜索
  • 自然语言查询 例如“显示我的DevOps笔记”或“查找有关项目规划的页面”
  • 安全OAuth身份验证 使用Microsoft Graph API
  • 防弹错误处理 经过详细调试

✨ 为什么要实施

与其他OneNote MCP服务器不同,此服务器:

  • ✅ 实际上有效 -使用真实的OneNote数据进行了广泛测试
  • ✅ 功能齐全 -已实施所有核心OneNote操作
  • ✅ 强大的身份验证 -处理边缘情况的两步设备流
  • ✅ 生产就绪 -正确的错误处理和记录
  • ✅ 易于设置 -面向非技术用户的详细说明

🚀 快速开始

先决条件

  • Python 3.10+
  • uv包管理器 (推荐)或pip
  • 克劳德桌面
  • Microsoft Azure帐户(免费)

1.安装uv(如果没有)

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# or with Homebrew
brew install uv

2.克隆和设置

git clone https://github.com/yourusername/onenote-mcp-server.git
cd onenote-mcp-server

# Create virtual environment and install dependencies
uv sync

3.Azure应用程序注册

您需要创建一个Azure应用程序来访问OneNote。 别担心,它是免费的,需要5分钟:

  1. 首选 Azure门户 (使用您的Microsoft帐户登录)
  2. 引导到 Azure Active Directory → 应用程序注册 → 新注册
  3. 填写表格:
    • 名字:“OneNote MCP服务器”(或您喜欢的任何服务器)
    • 支持的帐户类型:“任何组织目录中的帐户和个人Microsoft帐户”
    • 重定向URI:选择“公共客户端/本地”并输入: https://login.microsoftonline.com/common/oauth2/nativeclient
  4. 点击 注册
  5. 复制 应用程序(客户端)ID -你需要这个!

4.添加权限

仍在Azure应用程序中:

  1. 首选 API权限 → 添加权限
  2. 选择 微软图形 → 委托权限
  3. 添加这些权限:
    • Notes.Read -阅读OneNote笔记本
    • Notes.ReadWrite -创建/修改OneNote内容(可选,但建议)
    • User.Read -读取用户资料
  4. 点击 授予管理员同意 (顶部的按钮)

5.配置克劳德桌面

编辑您的Claude Desktop配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\\Claude\\claude_desktop_config.json

添加此配置(替换 /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather 根据您的实际路径):

基本配置:

{
  "mcpServers": {
    "onenote": {
      "command": "uv",
      "args": [
        "--directory", "/FULL/PATH/TO/onenote-mcp-server",
        "run", "python", "onenote_mcp_server.py"
      ],
      "env": {
        "AZURE_CLIENT_ID": "your-azure-client-id-here"
      }
    }
  }
}

使用显式令牌缓存控制:

{
  "mcpServers": {
    "onenote": {
      "command": "uv",
      "args": [
        "--directory", "/FULL/PATH/TO/onenote-mcp-server",
        "run", "python", "onenote_mcp_server.py"
      ],
      "env": {
        "AZURE_CLIENT_ID": "your-azure-client-id-here",
        "ONENOTE_CACHE_TOKENS": "true"
      }
    }
  }
}

替换 /FULL/PATH/TO/onenote-mcp-server 与这个项目的实际路径。

6.重新启动克劳德桌面

完全退出并重新启动Claude Desktop。您应该在中看到OneNote工具🔨 菜单。

🔐 首次身份验证

  1. 在Claude Desktop中,说: “启动OneNote身份验证”
  2. Claude会给你一个URL和代码
  3. 访问浏览器中的URL,输入代码,然后登录
  4. 浏览器兼容性:
    • ✅ 火狐 (用139.0.4测试)-工作完美
    • ❌ 游猎 -可能存在Microsoft OAuth重定向问题
    • ✅ Chrome/Edge -应该可以工作(微软的浏览器)
  5. 回到克劳德身边说: “完成OneNote身份验证”
  6. 你准备好了!

令牌持久性

默认情况下,身份验证令牌安全地缓存在本地计算机上,因此您只需要每隔几周/几个月进行一次身份验证。

禁用令牌缓存 (适用于安全敏感环境):

{
  "mcpServers": {
    "onenote": {
      "command": "uv",
      "args": [
        "--directory", "/FULL/PATH/TO/onenote-mcp-server",
        "run", "python", "onenote_mcp_server.py"
      ],
      "env": {
        "AZURE_CLIENT_ID": "YOUR_CLIENT_ID_HERE",
        "ONENOTE_CACHE_TOKENS": "false"
      }
    }
  }
}

令牌缓存选项:

  • ONENOTE_CACHE_TOKENS=true (默认)-令牌在会话中持续存在
  • ONENOTE_CACHE_TOKENS=false -对每个会话进行身份验证(更安全)

📖 使用示例

通过身份验证后,在Claude Desktop中尝试以下命令:

List my OneNote notebooks
Show me sections in my Work notebook  
What pages are in my Ideas section?
Read the content of my "Project Plan" page

🛠 故障排除

Claude Desktop中“无可用工具”

  • 确保在配置更改后重新启动了Claude Desktop
  • 检查配置中的路径是否正确(使用完整绝对路径)
  • 验证是否安装了紫外线: uv --version

身份验证问题

  • Safari OAuth问题:Safari可能无法正确处理Microsoft的OAuth重定向-请改用Firefox或Chrome
  • “nativeclient”提示:正常的Microsoft OAuth行为,但如果它阻止身份验证,请尝试其他浏览器
  • 身份验证已过期:使用“检查OneNote身份验证状态”查看令牌过期情况
  • 清除缓存的令牌:如果需要重置身份验证,请使用“清除OneNote令牌缓存”
  • 推荐浏览器:Firefox(确认正常工作)、Chrome或Edge以获得最佳兼容性

“找不到命令”错误

  • 确保紫外线在你的路径中
  • 替代方案:替换 "uv" 随着 "python" 在配置中,使用Python解释器的完整路径

权限被拒绝错误

  • 检查项目目录中的文件权限
  • 确保Claude Desktop可以读取文件

🏗 发展

项目结构

onenote-mcp-server/
├── onenote_mcp_server.py      # Main server implementation
├── pyproject.toml             # Dependencies and metadata  
├── README.md                  # This file
├── LICENSE                    # MIT License
└── .gitignore                 # Git ignore rules

主要特点

  • 两步身份验证:正确处理设备代码流
  • 完整的Graph API集成:支持所有OneNote操作
  • 稳健的错误处理:详细的日志记录和优雅的失败
  • FastMCP框架:干净、可维护的代码结构
  • 环境变量配置:安全的凭证处理

添加新功能

服务器使用FastMCP构建,可以轻松添加新工具:

@mcp.tool()
async def your_new_tool(param: str) -> str:
    """Description of what your tool does."""
    # Your implementation here
    return result

🤝 贡献

欢迎投稿!拜托:

  1. 分叉回购
  2. 创建要素分支
  3. 添加新功能的测试
  4. 提交拉取请求

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件。

🙏 致谢

  • 内置于 FastMCP 框架
  • 使用Microsoft Graph API进行OneNote访问
  • 受到AI+个人知识库惊人潜力的启发

⚠️ 重要提示

  • 此服务器仅读取/写入您已有访问权限的数据
  • 您的Azure应用凭据将保留在您的计算机上
  • 所有身份验证都直接在您和Microsoft之间进行
  • 不向第三方发送数据

内置于❤️ Claude+OneNote社区

将您的OneNote变成一个AI可访问的知识库!