Prepare the server locally
Run this once before adding it to Claude Code.
npm install
npm buildRegister it in Claude Code
claude mcp add -e "AZURE_CLIENT_ID=${AZURE_CLIENT_ID}" -e "AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}" -e "AUTH_CACHE_DIR=${AUTH_CACHE_DIR}" onenote-mcp -- node /path/to/dist/index.jsReplace any placeholder paths in the command with the real path on your machine.
AZURE_CLIENT_IDAZURE_CLIENT_SECRETAUTH_CACHE_DIRMake your agent remember this setup
onenote-mcp's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Supports both personal and organization OneNote notebooks
- Implements disk caching for authentication credentials
- Retrieves page content using ReadableStream
- Integrates with Microsoft Graph API
Tools 2
listNotebooksLists all available OneNote notebooks for the authenticated user.getPageContentRetrieves the content of a specific OneNote page.Environment Variables
AZURE_CLIENT_IDrequiredThe client ID from your Azure App registration.AZURE_CLIENT_SECRETrequiredThe client secret from your Azure App registration.AUTH_CACHE_DIRrequiredThe directory path where API access tokens are cached.Try it
Original README from swax/OneNoteMCP
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 ReadableStream - Successfully 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.
AZURE_CLIENT_ID=\
AZURE_CLIENT_SECRET=
AUTH_CACHE_DIR="C:\\git\\azure-onenote-mcp-server\\.cache"
Run server manually first to generate the credentials that will be cached and used by Claude desktop when it runs the server later on.
npm install
npm build
npm run
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": {}}}
Claude MCP config
{
"mcpServers": {
"onenote": {
"command": "node",
"args": ["C:\\git\\azure-onenote-mcp-server\\dist\\index.js"],
"env": {
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AUTH_CACHE_DIR": "C:\\git\\azure-onenote-mcp-server\\.cache"
}
}
}
}