getPageContentLABSCO SUMMARY
A fork that fixes the two things that stopped the original working.
The changelog is the honest description here: page content retrieval was broken and now works, and personal notebooks were unreachable and now are not. Credential caching is the third fix, and the reason the manual first run matters — skip it and the client launch fails with no obvious cause. The author's warning about write permissions is worth respecting; read-only is the safe configuration.
What it is
A fork of an Azure OneNote MCP server, revised to work with personal notebooks rather than organisational ones only. It reads through the Microsoft Graph API, caches the access token on disk so Claude Desktop does not need to re-authenticate on every launch, and was updated to a current MCP SDK version.
What you get
listNotebooks— enumerate the notebooks available to the signed-in accountgetPageContent— read a page's content, fixed in this fork by implementing a readable stream where the original failed- Working API calls against personal Microsoft accounts, which requires setting
signInAudiencetoAzureADandPersonalMicrosoftAccounton the app registration - Disk caching of the authentication credential, so the token generated once is reused when the client launches the server later
Requirements
An Azure app registration with Microsoft Graph permissions — Notes.Read and Notes.Read.All — and a client secret. Supply AZURE_CLIENT_ID, AZURE_CLIENT_SECRET and AUTH_CACHE_DIR in a .env file and in the client's env block. Node, with npm install and a build from a clone. Run the server manually once first so the cached credential exists before the client tries to launch it. Write permissions are optional, and the author warns of a risk of losing notes if you grant them.
Setup effort
Build from source — git clone https://github.com/swax/OneNoteMCP.git
USE CASES
Finding which notebook something is in
List the notebooks on the account and pick the one to read from.
Pulling a page into a draft
Read the page's content so its text can be quoted or summarised without copying it by hand.
Using OneNote on a personal account
Set the app registration's sign-in audience to include personal Microsoft accounts, which is what this fork exists to support.
2 tools
Listed in project docs. Your client may show a different list.
listNotebooksBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation. Neither comes from a tool list: the README mentions getPageContent and listNotebooks only in passing, and points to the upstream project for full documentation.
Requires
- AZURE_CLIENT_ID in your environment
- AZURE_CLIENT_SECRET in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/swax/OneNoteMCP.git
cd OneNoteMCP
npm install
npm run buildPut AZURE_CLIENT_ID, AZURE_CLIENT_SECRET and AUTH_CACHE_DIR (the folder where the generated access token is stored) in a .env file in the clone
Run the server once by hand, so the credentials it generates are cached for Claude Desktop:
node dist/index.jsMCP Clients
Claude Desktop
{
"mcpServers": {
"onenote": {
"command": "node",
"args": [
"C:\\git\\azure-onenote-mcp-server\\dist\\index.js"
],
"env": {
"AZURE_CLIENT_ID": "<YOUR_AZURE_CLIENT_ID>",
"AZURE_CLIENT_SECRET": "<YOUR_AZURE_CLIENT_SECRET>",
"AUTH_CACHE_DIR": "C:\\git\\azure-onenote-mcp-server\\.cache"
}
}
}
}C:\git\azure-onenote-mcp-server is the author's folder (it still carries the upstream project's name); yours, in both places, is the full path of your OneNoteMCP clone.