OneNote MCP Server (Go 实现)
使用说明
-
项目简介
- 该仓库实现了一个基于 MCP 的后端服务器,用于为 LLM 客户端提供一致的上下文信息、数据访问、外部工具调用和可渲染的提示模板,专门用于 OneNote 的数据交互。服务器提供资源、工具、提示模板的标准 MCP 接口,并支持多传输协议(STDIO、HTTP SSE),具备 OAuth2 PKCE 验证、Notebook 级权限控制、缓存以及进度通知等安全与可扩展性特性。
-
主要功能点
- MCP 服务器核心:处理 MCP 请求/响应,向客户端暴露资源、工具和提示模板。
- 资源管理:提供按层级 URI 的 OneNote 数据资源(如 notebooks、sections、pages、content 等)。
- 工具注册与执行:包括笔记本、章节、页面等域的操作工具,并对敏感操作实施安全控制。
- Prompt 模板管理:提供可渲染的提示模板,支持对话式交互模式。
- 安全与授权:Notebook 级权限、PKCE 流程、OAuth 授权、令牌刷新、审计日志等安全措施。
- 多传输协议与 streaming:支持 STDIO 与 HTTP 模式,HTTP 模式支持 SSE 流式输出。
- Graph API 集成:通过 Microsoft Graph 访问 OneNote 数据,结合缓存和进度通知提升性能与体验。
- 部署与运行:提供本地开发、Docker 部署、以及与 mcptools 交互的测试工作流。
-
安装步骤
-
- 构建服务器
- 进入仓库根目录,执行 go build -o onenote-mcp-server ./cmd/onenote-mcp-server(或使用 go run 直接运行 main 包)
-
- 配置依赖与环境变量
- 需要配置以下环境变量:
- ONENOTE_CLIENT_ID:Azure 应用客户端ID
- ONENOTE_TENANT_ID:租户ID(可为 common)
- ONENOTE_REDIRECT_URI:OAuth 回调地址(如 http://localhost:8080/callback)
- 以及可选的 ONENOTE_DEFAULT_NOTEBOOK_NAME、QUICKNOTE_, MCP_AUTH_, LOG_LEVEL 等等(详见配置说明)
-
- 以 stdio 模式运行(默认)
- 直接运行 ./onenote-mcp-server,就可在当前进程间通过 MCP 客户端进行交互。
-
- 以 HTTP 模式运行
- 运行 ./onenote-mcp-server -mode=http -port=8081
- 服务器将提供基于 SSE 的远程通信接口,便于集成到 Web 应用或 Claude Desktop 等客户端。
-
- 运行测试与工具
- 项目内包含多组测试,亦可结合 mcptools 进行交互测试。
-
-
服务器配置(MCP 客户端所需,不需要在 MCP 客户端直接运行)
- 配置信息以 JSON 格式提供,描述服务器端的对接信息(包括服务器名称、启动命令及参数等,供 MCP 客户端读取并建立连接的参照)。
- JSON 示例(字段含义在注释中解释;实际使用请以 MCP 客户端对接需求为准) { "server_name": "OneNote MCP Server", "command": "onenote-mcp-server", "args": [ "-mode=http", "-port=8081" ], "description": "MCP 服务端启动命令以及参数,供 MCP 客户端在对接时读取,用于建立连接并开始会话。该服务器实现支持 stdio 与 http 模式,默认模式为 stdio。" } 说明:
- server_name: MCP 服务器的名称标识,便于在 MCP 客户端的服务器列表中区分。
- command: 启动 MCP 服务器的可执行名或脚本名称。
- args: 启动参数(如模式、端口、配置路径等)。
- 描述字段用于说明服务器提供的核心能力、授权方式和对接要点。
- 实际对接时,MCP 客户端不会需要额外的代码,仅需引用上述可移植的配置信息来建立连接。
-
基本使用方法
- 第一步:启动服务器(STDIO 或 HTTP 模式)。
- 第二步:在 MCP 客户端执行身份认证、列出笔记本、选择默认笔记本、创建/查询页面等操作。
- 第三步:通过工具(如 notebooks、sections、pages 等)实现对 OneNote 的读写操作,并利用快速笔记、缓存、授权等特性确保安全性和高效性。
- 第四步:使用 progress 通知追踪长时间操作的进度,适配 AI 客户端的对话式体验。
-
备注
- 项目包含 OAuth2 PKCE 验证、令牌轮转与持久化、Notebook 级权限控制、缓存等安全与性能特性,适合作为 MCP 服务器端实现的完整样例。
- 由于涉及对 OneNote 数据的真实读写,请在生产环境中谨慎使用,确保备份与授权策略到位。