使用说明
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分钟:
- 首选 Azure门户 (使用您的Microsoft帐户登录)
- 引导到 Azure Active Directory → 应用程序注册 → 新注册
- 填写表格:
- 名字:“OneNote MCP服务器”(或您喜欢的任何服务器)
- 支持的帐户类型:“任何组织目录中的帐户和个人Microsoft帐户”
- 重定向URI:选择“公共客户端/本地”并输入:
https://login.microsoftonline.com/common/oauth2/nativeclient
- 点击 注册
- 复制 应用程序(客户端)ID -你需要这个!
4.添加权限
仍在Azure应用程序中:
- 首选 API权限 → 添加权限
- 选择 微软图形 → 委托权限
- 添加这些权限:
Notes.Read-阅读OneNote笔记本Notes.ReadWrite-创建/修改OneNote内容(可选,但建议)User.Read-读取用户资料
- 点击 授予管理员同意 (顶部的按钮)
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工具🔨 菜单。
🔐 首次身份验证
- 在Claude Desktop中,说: “启动OneNote身份验证”
- Claude会给你一个URL和代码
- 访问浏览器中的URL,输入代码,然后登录
- 浏览器兼容性:
- ✅ 火狐 (用139.0.4测试)-工作完美
- ❌ 游猎 -可能存在Microsoft OAuth重定向问题
- ✅ Chrome/Edge -应该可以工作(微软的浏览器)
- 回到克劳德身边说: “完成OneNote身份验证”
- 你准备好了!
令牌持久性
默认情况下,身份验证令牌安全地缓存在本地计算机上,因此您只需要每隔几周/几个月进行一次身份验证。
禁用令牌缓存 (适用于安全敏感环境):
{
"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
🤝 贡献
欢迎投稿!拜托:
- 分叉回购
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件。
🙏 致谢
- 内置于 FastMCP 框架
- 使用Microsoft Graph API进行OneNote访问
- 受到AI+个人知识库惊人潜力的启发
⚠️ 重要提示
- 此服务器仅读取/写入您已有访问权限的数据
- 您的Azure应用凭据将保留在您的计算机上
- 所有身份验证都直接在您和Microsoft之间进行
- 不向第三方发送数据
内置于❤️ Claude+OneNote社区
将您的OneNote变成一个AI可访问的知识库!