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., "@OneNoteMCPlist my notebooks and get the content of the 'Project Ideas' page"
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.
Forked from ZubeidHendricks/azure-onenote-mcp-server see that page for the original README.md
About
An MCP for OneNote. Forked and revised extensively, now works with personal notebooks. Updated to the latest MCP API. Supports caching credentials.
Improvements
Functionality
Fixed
getPageContentfunctionality by implementing ReadableStreamSuccessfully implemented API calls against personal notebooks
Updated index and tools to use the latest MCP version
Code Architecture
Simplified codebase by removing classes that weren't necessary
Many unnecessary files removed
Authentication & Performance
Implemented disk caching for authentication credentials
Updated package dependencies
Added dotenv support for direct testing capabilities
Azure App Registration
Go to Azure Portal and navigate to App registrations
Create a new registration for OneNoteMCP
Add Microsoft Graph API permissions:
Notes.Read
Notes.Read.All
(optionally add Notes.Write permissions, but there is a risk of losing your notes)
Create a client secret
Copy the client ID/secret for configuration
In the manifest set
signInAudiencetoAzureADandPersonalMicrosoftAccount
MCP Server setup
Put the client ID/secret n your .env file locally as well as in Claude desktop.
The AUTH_CACHE_DIR should be the directory where you want the generated API access token to be stored.
Run server manually first to generate the credentials that will be cached and used by Claude desktop when it runs the server later on.
You can test the API works by running this command directly once the server starts up and logs in.
{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "listNotebooks", "arguments": {}}}