onenote
MCP server for Microsoft OneNote integration with Claude Desktop
claude mcp add --transport stdio freshsk-onenote-mcp-server node /path/to/onenote-mcp-server/server.js \ --env AZURE_CLIENT_ID="your-azure-client-id-here"
How to use
This MCP server provides programmatic access to OneNote via the MCP protocol. It exposes tools for reading and creating OneNote content, including listing notebooks, browsing sections, viewing pages, and creating new notebooks, sections, or pages. The server authenticates against Microsoft Graph using the Device Code flow, caches tokens for smoother re-authentication, and implements the full OneNote MCP surface so Claude Desktop or any MCP-compatible client can interact with your notebooks as if they were native items.
To use it, configure Claude Desktop (or your MCP client) with the server entry and your Azure AD Client ID. Once set up, you can issue natural-language or structured commands such as: list my OneNote notebooks, create a new notebook called 'My Ideas', show me the sections in notebook 'Work Notes', create a page titled 'Meeting Notes' in a specific section, or read the content of a page. The available tools expose operations like onenote-read (list_notebooks, list_sections, list_pages, read_content) and onenote-create (create_notebook, create_section, create_page). Each operation requires the relevant IDs (notebookId, sectionId, pageId) when navigating deeper into the hierarchy.
How to install
Prerequisites:
- Node.js 14.0.0 or higher
- An Azure AD App Registration with Graph API permissions (Notes.Read, Notes.Create, Notes.ReadWrite, User.Read)
- Claude Desktop or another MCP client
Step-by-step installation:
- Clone the repository:
git clone https://github.com/YOUR_USERNAME/onenote-mcp-server.git
cd onenote-mcp-server
- Install dependencies:
npm install
- Set up Azure AD App Registration (follow the Setup section of the README):
- Create an app registration in Azure AD
- Configure permissions: Notes.Read, Notes.Create, Notes.ReadWrite, User.Read
- Note the Application (client) ID
- Configure Claude Desktop (or MCP client):
- Add an entry for the MCP server in Claude Desktop config pointing to the server.js path and your Azure Client ID For example:
{
"mcpServers": {
"onenote": {
"command": "node",
"args": ["/path/to/onenote-mcp-server/server.js"],
"env": {
"AZURE_CLIENT_ID": "your-azure-client-id-here"
}
}
}
}
- Start the server (adjust path as needed):
node /path/to/onenote-mcp-server/server.js
- Test with your MCP client by issuing commands like: list my OneNote notebooks or create a notebook named 'Sample'.
Additional notes
Tips and caveats:
- The server uses Microsoft Graph via the Device Code flow; ensure AZURE_CLIENT_ID is configured and that the app has the required permissions granted.
- Token caching helps reduce re-authentication prompts; if you run into authentication issues, you can delete the token cache file (e.g., .mcp-onenote-cache.json) to force re-authentication.
- Ensure Node.js is accessible in your environment when starting the server.
- If you see MODULE_NOT_FOUND, run npm install to install dependencies.
- Do not commit sensitive credentials (Azure Client ID, tokens) to version control; use environment variables or Claude Desktop configuration to manage credentials.
Related MCP Servers
zen
Selfhosted notes app. Single golang binary, notes stored as markdown within SQLite, full-text search, very low resource usage
MCP -Deepseek_R1
A Model Context Protocol (MCP) server implementation connecting Claude Desktop with DeepSeek's language models (R1/V3)
mcp-fhir
A Model Context Protocol implementation for FHIR
mcp
Inkdrop Model Context Protocol Server
mcp-appium-gestures
This is a Model Context Protocol (MCP) server providing resources and tools for Appium mobile gestures using Actions API..
dubco -npm
The (Unofficial) dubco-mcp-server enables AI assistants to manage Dub.co short links via the Model Context Protocol. It provides three MCP tools: create_link for generating new short URLs, update_link for modifying existing links, and delete_link for removing short links.