OneNote
About
Access your entire OneNote knowledge base through AI using the Microsoft Graph API.
Details
- Author
- purpleslurple
- Categories
- Productivity
Jump to
1. Install uv (if you don't have it)
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # or with Homebrew brew install uv
git clone https://github.com/yourusername/onenote-mcp-server.git cd onenote-mcp-server # Create virtual environment and install dependencies uv sync
You need to create an Azure app to access OneNote.Don't worry, it's free and takes 5 minutes:
- Go toAPI permissions→Add a permission
- SelectMicrosoft Graph→Delegated permissions
- Add these permissions:
- Notes.Read- Read OneNote notebooks
- Notes.ReadWrite- Create/modify OneNote content (optional but recommended)
- User.Read- Read user profile
macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\\Claude\\claude_desktop_config.json
Add this configuration (replace/ABSOLUTE/PATH/TO/PARENT/FOLDER/weatherwith your actual path):
{ "mcpServers": { "onenote": { "command": "uv", "args": ](https://docs.astral.sh/uv/getting-started/installation/)[ "--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" } } } }
Replace/FULL/PATH/TO/onenote-mcp-serverwith the actual path to this project.
Completely quit and restart Claude Desktop. You should see OneNote tools in the 🔨 menu.
By default, authentication tokens are cached securely on your local machine so you only need to authenticate once every few weeks/months.
To disable token caching(for security-sensitive environments):
{ "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(default) - Tokens persist across sessions
- ONENOTE_CACHE_TOKENS=false- Authenticate every session (more secure)
Once authenticated, try these commands in 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
A complete, robust Model Context Protocol (MCP) server for Microsoft OneNote integration with Claude Desktop. Access your entire OneNote knowledge base through natural language queries.
Transform your OneNote notebooks into an AI-accessible knowledge base:
- List all your notebooks, sections, and pages
- Read page contentfor analysis and search
- Natural language querieslike "Show me my DevOps notes" or "Find pages about project planning"
- Secure OAuth authenticationwith Microsoft Graph API
- Bulletproof error handlingwith detailed debugging
Unlike other OneNote MCP servers, this one:
- ✅Actually works- tested extensively with real OneNote data
- ✅Complete functionality- all core OneNote operations implemented
- ✅Robust authentication- two-step device flow that handles edge cases
- ✅Production ready- proper error handling and logging
- ✅Easy setup- detailed instructions for non-technical users
- Python 3.10+
- uv package manager(recommended) or pip
- Claude Desktop
- Microsoft Azure account (free)
1. Install uv (if you don't have it)
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # or with Homebrew brew install uv
git clone https://github.com/yourusername/onenote-mcp-server.git cd onenote-mcp-server # Create virtual environment and install dependencies uv sync
You need to create an Azure app to access OneNote.Don't worry, it's free and takes 5 minutes:
- Go toAPI permissions→Add a permission
- SelectMicrosoft Graph→Delegated permissions
- Add these permissions:
- Notes.Read- Read OneNote notebooks
- Notes.ReadWrite- Create/modify OneNote content (optional but recommended)
- User.Read- Read user profile
macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\\Claude\\claude_desktop_config.json
Add this configuration (replace/ABSOLUTE/PATH/TO/PARENT/FOLDER/weatherwith your actual path):
{ "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" } } } }
Replace/FULL/PATH/TO/onenote-mcp-serverwith the actual path to this project.
Completely quit and restart Claude Desktop. You should see OneNote tools in the 🔨 menu.
By default, authentication tokens are cached securely on your local machine so you only need to authenticate once every few weeks/months.
To disable token caching(for security-sensitive environments):
{ "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(default) - Tokens persist across sessions
- ONENOTE_CACHE_TOKENS=false- Authenticate every session (more secure)
Once authenticated, try these commands in 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
"No tools available" in Claude Desktop
- Make sure you restarted Claude Desktop after config changes
- Check that the path in your config is correct (use full absolute path)
- Verify uv is installed:uv --version
- Safari OAuth problems: Safari may not handle Microsoft's OAuth redirect properly - use Firefox or Chrome instead
- "nativeclient" prompts: Normal Microsoft OAuth behavior, but if it blocks authentication, try a different browser
- Authentication expired: Use "Check OneNote authentication status" to see token expiry
- Clear cached tokens: Use "Clear OneNote token cache" if you need to reset authentication
- Recommended browsers: Firefox (confirmed working), Chrome, or Edge for best compatibility
- Make sure uv is in your PATH
- Alternative: replace"uv"with"python"in the config and use the full path to your Python interpreter
- Check the file permissions in your project directory
- Make sure Claude Desktop can read the files
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
- Two-step authentication: Handles device code flow properly
- Complete Graph API integration: All OneNote operations supported
- Robust error handling: Detailed logging and graceful failures
- FastMCP framework: Clean, maintainable code structure
- Environment variable configuration: Secure credential handling
The server is built with FastMCP, making it easy to add new tools:
@mcp.tool() async def your_new_tool(param: str) -> str: """Description of what your tool does.""" # Your implementation here return result
- Fork the repo
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
MIT License - see LICENSE file for details.
- This server only reads/writes data you already have access to
- Your Azure app credentials stay on your machine
- All authentication happens directly between you and Microsoft
- No data is sent to third parties
Built with ❤️ for the Claude + OneNote community
Turn your OneNote into an AI-accessible knowledge base!
The 1Password MCP server creates a bridge that allows MCP clients such as Codex and Kiro to manage your 1Password Environments with secure authorization prompts.
This is the 1st, easiest, and cheapest PPT, slides, presentation AI generation MCP Server in the world.
Persistent memory for any AI assistant. Zero token cost until recall. Stores memories in local SQLite, ranks by 6-factor scoring, returns results 79% smaller than JSON. Works with Claude, ChatGPT, Grok, Cursor, Windsurf, and any MCP client.
A MCP server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.
Enables LLM clients to interact with macOS applications through AppleScript. Built using the @beyondbetter/bb-mcp-server library, this server provides safe, controlled execution of predefined scripts with optional support for arbitrary script execution.
An MCP server for WordPress plugin audits
Turn your AI assistant into a digital marketing hub that creates, organizes, and analyzes links and QR Codes on demand.
Connect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.
Sync Calendars, Scheduling Links, AI Executive Scheduling Assistant, Unified Calendar
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



