onenote-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@onenote-mcplist all my notebooks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OneNote MCP Server
📖 Installation Guide — quick start, manual setup, and troubleshooting
A Model Context Protocol (MCP) server implementation that enables AI language models like Claude and other LLMs to interact with Microsoft OneNote.
This project is based on azure-onenote-mcp-server by Zubeid Hendricks, with modifications to simplify authentication and improve usability.
Quick Start
git clone https://github.com/sandraschi/onenote-mcp
cd onenote-mcp
justThis opens an interactive dashboard showing all available commands. Run just bootstrap to install dependencies, then just serve or just dev to start.
Manual Setup
If you don't have just installed:
Related MCP server: OneNote MCP Server
What Does This Do?
This server allows AI assistants to:
Access your OneNote notebooks, sections, and pages
Create new pages in your notebooks
Search through your notes
Read complete note content, including HTML formatting and text
Analyze and summarize your notes directly
All of this happens directly through the AI interface without you having to switch contexts.
Using with AI Assistants
Setup for Cursor
Clone this repository and follow the installation steps below
Install the Python package:
uv pip install -e .Register the server in Cursor:
Open Cursor preferences (Cmd+, on Mac or Ctrl+, on Windows)
Go to the "MCP" tab
Add a new MCP server with these settings:
Name:
onenoteCommand:
pythonArgs:
["-m", "onenote_mcp.server"]
Here's the complete JSON configuration example:
{ "mcpServers": { "onenote": { "command": "python", "args": ["-m", "onenote_mcp.server"], "env": {} } } }Restart Cursor
In Cursor, you can now interact with your OneNote data using natural language:
Can you show me my OneNote notebooks?
Create a new page in my first notebook with a summary of this conversation
Find notes related to "project planning" in my OneNoteThe first time you ask about OneNote, the AI will guide you through the authentication process.
Setup for Claude Desktop (or other MCP-compatible assistants)
Clone this repository and follow the installation steps below
Install the Python package:
uv pip install -e .In the Claude Desktop settings, add the OneNote MCP server:
Name:
onenoteCommand:
pythonArgs:
["-m", "onenote_mcp.server"]
JSON configuration example:
{ "mcpServers": { "onenote": { "command": "python", "args": ["-m", "onenote_mcp.server"], "env": {} } } }You can now ask Claude to interact with your OneNote data
Features
Authentication with Microsoft OneNote using device code flow (no Azure setup needed)
List all notebooks, sections, and pages
Create new pages with HTML content
Read complete page content, including HTML formatting
Extract text content for AI analysis and summaries
Summarize content of all pages in a single operation
Read full content of all pages in a readable format
Search across your notes
Installation
Prerequisites
uv installed (RECOMMENDED)
Python 3.12+
Quick Start
Run immediately via uvx:
uvx onenote-mcpClaude Desktop Integration
Add to your claude_desktop_config.json:
"mcpServers": {
"onenote-mcp": {
"command": "uv",
"args": ["--directory", "D:/Dev/repos/onenote-mcp", "run", "onenote-mcp"]
}
}Prerequisites
Python 3.10 or higher (install from python.org)
pip (Python package installer)
An active Microsoft account with access to OneNote
Git (install from git-scm.com)
Step 1: Clone the Repository
git clone https://github.com/yourusername/onenote-mcp.git
cd onenote-mcpStep 2: Install Project Dependencies
npm installThis will automatically install the MCP TypeScript SDK from npm (@modelcontextprotocol/sdk).
Step 3: Install the Python Package
uv pip install -e .Step 4: Start the MCP Server
python -m onenote_mcp.serverThis will start the MCP server, and you'll see a message:
Server started successfully.
Use the "authenticate" tool to start the authentication flow,
or use "saveAccessToken" if you already have a token.Step 4: Authenticate Through Your AI Assistant
Once the server is running, you can authenticate directly through your AI assistant:
In Cursor, Anthropic's Claude Desktop, or any MCP-compatible assistant, ask to authenticate with OneNote:
Can you authenticate with my OneNote account?The AI will trigger the authentication flow and provide you with:
A URL (typically microsoft.com/devicelogin)
A code to enter
Go to the URL, enter the code, and sign in with your Microsoft account
After successful authentication, you can start using OneNote with your AI assistant
Available MCP Tools
Once authenticated, the following tools are available for AI assistants to use:
Tool Name | Description |
| Start the Microsoft authentication flow |
| Get a list of all your OneNote notebooks |
| Get details of a specific notebook |
| List all sections in a notebook |
| List all pages in a section |
| Get the complete content of a specific page, including HTML formatting |
| Create a new page with HTML content |
| Search for pages across your notebooks |
| Generate a Table of Contents for a notebook (all sections & pages) |
Example Interactions
Here are some examples of how you can interact with the OneNote MCP through your AI assistant:
User: Can you show me my OneNote notebooks?
AI: (uses listNotebooks) I found 3 notebooks: "Work", "Personal", and "Projects"
User: What sections are in my Projects notebook?
AI: (uses listSections) Your Projects notebook has the following sections: "Active Projects", "Ideas", and "Completed"
User: Create a new page in Projects with today's date as the title
AI: (uses createPage) I've created a new page titled "2025-04-12" in your Projects notebook
User: Find all my notes about machine learning
AI: (uses searchPages) I found 5 pages with content related to machine learning...
User: Can you read and summarize my notes on the "Project Requirements" page?
AI: (uses getPage) Based on your "Project Requirements" page, here's a summary: The project requires Python 3.8+, integration with AWS services, and completion by Q3. Key deliverables include a web dashboard, API, and documentation...
User: Extract all the action items from my "Team Meeting" notes
AI: (uses getPage) Here are all the action items from your "Team Meeting" notes:
1. John to complete API documentation by Friday
2. Sarah to schedule design review meeting
3. Team to finalize Q3 roadmap by end of month
User: Summarize content of all my OneNote pages
AI: (runs get-all-page-contents.js) Here's a summary of all your pages:
- Questions: Contains strategic business questions about competitor analysis
- 2025-04-12: Discussion about monetization strategy for bank transfers
- Role Specification: Details about the Chief Payments Officer position
...
User: I want to read through all my OneNote pages so I can ask questions about them
AI: (runs read-all-pages.js) I've retrieved the full content of all your pages in a readable format. Now you can ask me specific questions about any of the content.
User: Generate a table of contents for my Projects notebook
AI: (uses getNotebookTOC) Here's the TOC for your Projects notebook:
# Projects
> 3 sections, 12 pages
## Active Projects (5 pages)
- **Q1 Planning** *(11/15/2025)*
- **API Design** *(11/20/2025)*
- **Budget Review** *(11/25/2025)*
...
User: Show me a TOC of all my notebooks
AI: (uses listNotebooks, then getNotebookTOC for each) Here are all your notebooks with their structure...Advanced: Direct Script Usage
For testing or development purposes, you can also use the Python module directly:
# Install the package
uv pip install -e .
# Start the MCP server
python -m onenote_mcp.server
# Or run individual functions (for testing)
python -c "from onenote_mcp.server import authenticate_device_code; print('Authenticating...')"Troubleshooting
Authentication Issues
If authentication fails, make sure you're using a modern browser without tracking prevention
Try clearing browser cookies and cache
If you get "expired_token" errors, restart the authentication process
Server Won't Start
Verify Python is installed (version 3.10+):
python --versionMake sure all dependencies are installed:
uv pip install -e .Check that FastMCP is properly installed:
python -c "import fastmcp; print(FastMCP 3.1.0__version__)"
AI Can't Connect to the Server
Ensure the MCP server is running (
npm start)Check your AI assistant's settings to make sure it's configured to use MCP
For Cursor, make sure it's the latest version that supports MCP
Security Notes
Authentication tokens are stored locally in
.access-token.txtTokens grant access to your OneNote data, so keep them secure
Tokens expire after some time, requiring re-authentication
No Azure setup or API keys are required
Credits
This project builds upon the azure-onenote-mcp-server by Zubeid Hendricks, with a focus on simplifying the authentication process and improving the user experience with AI assistants.
🛡️ Industrial Quality Stack
This project adheres to SOTA 14.1 industrial standards for high-fidelity agentic orchestration:
Python (Core): Ruff for linting and formatting. Zero-tolerance for
printstatements in core handlers (T201).Webapp (UI): Biome for sub-millisecond linting. Strict
noConsoleLogenforcement.Protocol Compliance: Hardened
stdout/stderrisolation to ensure crash-resistant JSON-RPC communication.Automation: Justfile recipes for all fleet operations (
just lint,just fix,just dev).Security: Automated audits via
banditandsafety.
License
This project is licensed under the MIT License - see the LICENSE file for details
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/onenote-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server