Microsoft OneNote Integration
STDIOMCP server providing AI assistants with access to Microsoft OneNote for reading and writing.
MCP server providing AI assistants with access to Microsoft OneNote for reading and writing.
A Model Context Protocol (MCP) server that provides AI assistants with access to Microsoft OneNote. This server enables AI models to read from and write to OneNote notebooks, sections, and pages.
This project implements an MCP server that connects to Microsoft OneNote using the Microsoft Graph API. It provides tools for:
onenote/
├── dist/ # Compiled JavaScript files (generated)
├── src/ # TypeScript source files
│ ├── index.ts # Main entry point and server implementation
│ └── types/ # Custom TypeScript type definitions
├── .vscode/ # VS Code configuration
│ ├── launch.json # Debug configurations
│ └── tasks.json # Build tasks
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── Dockerfile # Docker configuration
├── .env.local.example # Example environment variables
└── README.md # This file
The server uses Microsoft Authentication Library (MSAL) with device code flow for authentication:
device-code.txt
in the project directorytoken-cache.json
for future useThe server provides the following MCP tools:
Read content from Microsoft OneNote notebooks, sections, or pages.
Parameters:
type
: "read_content"pageId
: (optional) ID of the specific page to readsectionId
: (optional) ID of the section to list pages fromnotebookId
: (optional) ID of the notebook to list sections fromincludeContent
: (optional) Whether to include the content of the page (default: true)includeMetadata
: (optional) Whether to include metadata about the page (default: false)Create new content in Microsoft OneNote.
Parameters:
type
: "create_page", "create_section", or "create_notebook"title
: Title of the content to createcontent
: Content in HTML format (for pages)parentId
: (optional) ID of the parent section or notebooknpm install
.env.local
file with your Azure client ID:CLIENT_ID=your-client-id-from-azure
To run the application in development mode:
npm run dev
To compile TypeScript to JavaScript:
npm run build
To run the compiled application:
npm start
You can build and run the application using Docker:
# Create a data directory for persistence mkdir -p data # Build the Docker image docker build -t onenote-mcp-server . # Run the container docker run -d \ --name onenote-mcp-server \ -e CLIENT_ID=your-client-id \ -v $(pwd)/data:/app/dist \ onenote-mcp-server
When running in Docker, the authentication flow works as follows:
cat data/device-code.txt
data/token-cache.json
for future useClone this repository
Run npm install
to install dependencies
In Claude Desktop, add a new MCP server:
npm run build && npm start
Save the configuration and connect to the server.
Find the file location (claude_desktop_config.json):
The file is typically located at:
On Mac OS (~/Library/Application Support/Claude/claude_desktop_config.json)
On Windows (C:\Users\YourUsername\AppData\Roaming\Claude\claude_desktop_config.json)
device-code.txt
in the project directorytoken-cache.json
token-cache.json
to force re-authenticationnpm run build
to check for compilation errors