使用说明
OneNote MCP服务器
A. 模型上下文协议(MCP) Microsoft OneNote服务器,通过OAuth进行身份验证。通过16个工具、5个资源和3个提示模板提供对笔记本、分区和页面的完全读/写访问。
快速开始
先决条件
- Node.js v22或更高版本
- 启用OAuth的Microsoft Entra应用程序注册
- 应用程序注册的客户端ID和客户端密码
步骤1:注册OAuth应用程序
- 在Azure门户中打开Microsoft Entra应用程序注册
- 创建(或选择)应用程序
- 添加重定向URI:
http://localhost:3000/callback - 创建客户端密钥
- 复制 应用程序(客户端)ID 和 客户端密钥
步骤2:配置MCP客户端
克劳德桌面(推荐)
添加到您的 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"onenote": {
"command": "npx",
"args": ["-y", "onenote-mcp"],
"env": {
"ONENOTE_OAUTH_CLIENT_ID": "your-client-id",
"ONENOTE_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}
克劳德代码(CLI)
{
"mcpServers": {
"onenote": {
"command": "npx",
"args": ["-y", "onenote-mcp"],
"env": {
"ONENOTE_OAUTH_CLIENT_ID": "your-client-id",
"ONENOTE_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}
光标
{
"mcpServers": {
"onenote": {
"command": "npx",
"args": ["-y", "onenote-mcp"],
"env": {
"ONENOTE_OAUTH_CLIENT_ID": "your-client-id",
"ONENOTE_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}
步骤3:首次授权
首次使用时,服务器将:
- 将OAuth授权URL打印到stderr
- 等待您在浏览器中打开URL
- 在本地主机接收回调
- 在本地缓存令牌以供重用和刷新
运输模式
此服务器使用 工作室 运输独家。
工具
服务器公开了16个与OneNote交互的工具:
| 工具 | 说明 |
|---|---|
list-notebooks |
列出经过身份验证的用户可访问的所有笔记本 |
get-notebook |
获取特定笔记本的详细信息 |
list-section-groups |
列出笔记本中或所有笔记本中的分区组 |
get-section-group |
获取特定节组的详细信息,包括其节 |
list-sections |
列出笔记本、分区组或所有笔记本中的分区 |
get-section |
获取特定部分的详细信息 |
create-section |
在笔记本或分区组中创建新分区 |
list-pages |
在特定部分列出页面 |
get-page |
获取特定页面的元数据(标题、时间戳、父信息) |
get-page-content |
获取页面的完整HTML内容 |
get-page-preview |
获取页面的简短文本预览(最多300个字符) |
create-page |
在包含HTML内容的部分中创建新页面 |
update-page |
使用JSON补丁命令更新页面内容 |
delete-page |
永久删除页面 |
search-pages |
按关键字在标题和内容之间搜索页面 |
get-notebook-hierarchy |
在一次通话中获取完整的笔记本/分区组/分区树 |
资源
服务器公开5个资源用于直接数据访问:
| 资源 | URI | 描述 |
|---|---|---|
notebooks-list |
onenote://notebooks |
所有笔记本列表 |
notebook |
onenote://notebooks/{notebookId} |
一个特定的笔记本及其分区和分区组 |
notebook-sections |
onenote://notebooks/{notebookId}/sections |
特定笔记本中的章节 |
section-pages |
onenote://sections/{sectionId}/pages |
特定部分中的页面 |
page-content |
onenote://pages/{pageId} |
特定页面的HTML内容 |
提示
服务器包括3个常见工作流的提示模板:
| 提示 | 描述 |
|---|---|
summarize-page |
获取并总结特定OneNote页面的内容 |
search-notes |
在OneNote笔记中指导搜索工作流程 |
create-note |
指导在正确的笔记本和分区中创建新页面 |
配置参考
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
ONENOTE_OAUTH_CLIENT_ID |
是* | - | OAuth客户端ID |
ONENOTE_OAUTH_CLIENT_SECRET |
是* | - | OAuth客户端密钥 |
ONENOTE_ACCESS_TOKEN |
否 | - | 手动令牌覆盖(绕过OAuth) |
ONENOTE_OAUTH_TENANT |
没有 | common |
OAuth租户选择器 |
ONENOTE_OAUTH_REDIRECT_URI |
没有 | http://localhost:3000/callback |
OAuth回调URI |
ONENOTE_OAUTH_SCOPES |
没有 | offline_access openid profile User.Read Notes.ReadWrite |
空格分隔的OAuth作用域 |
ONENOTE_TOKEN_STORE_PATH |
否 | 平台默认 | 令牌缓存文件路径 |
ONENOTE_OAUTH_AUTHORITY_BASE_URL |
没有 | https://login.microsoftonline.com |
OAuth权限库覆盖 |
ONENOTE_GRAPH_BASE_URL |
没有 | https://graph.microsoft.com/v1.0 |
图形API基础覆盖 |
*除非满足以下条件,否则必须 ONENOTE_ACCESS_TOKEN 已设置。
特性
- 16个MCP工具,用于完整的OneNote读/写访问(笔记本、分区、页面)
- 5个MCP资源,用于通过URI模板直接访问数据
- 3个用于常见工作流的MCP提示模板(汇总、搜索、创建)
- 带有自动令牌刷新的OAuth授权代码流
- 具有特定于平台的默认位置的安全令牌缓存
- 具有错误处理和分页功能的Microsoft Graph API客户端
- 安全强化(CodeQL、依赖性审查、记分卡、SBOM)
- 具有自动发布和npm可信发布的CI/CD
发展
设置
# Clone the repo
git clone https://github.com/jacob-hartmann/onenote-mcp.git
cd onenote-mcp
# Use Node.js 22
# (macOS/Linux nvm): nvm install && nvm use
# (Windows nvm-windows): nvm install 22 && nvm use 22
# Install dependencies
pnpm install
# Copy env template
cp .env.example .env
本地运行
# Development mode (auto-reload)
pnpm dev
# Production build
pnpm build
# Production run
pnpm start
调试
# Run from source
pnpm inspect
# Run from built output
pnpm inspect:dist
贡献
看 贡献.md.
安全
看 安全.md.
支持
看 支持.md.
许可证
麻省理工学院©雅各布·哈特曼