A Model Context Protocol (MCP) server implementation for Microsoft OneNote, enabling AI language models to interact with OneNote through a standardized interface.
- List all notebooks
- Create new notebooks
- Get notebook details
- Delete notebooks
- List sections in a notebook
- Create new sections
- Get section details
- Delete sections
- List pages in a section
- Create new pages with HTML content
- Read page content
- Update page content
- Delete pages
- Search pages across notebooks
npm install -g mcp-server-onenote
The package is now available on the npm registry as of April 27, 2025.
After installation, you can run the package using:
mcp-server-onenote
Or with npx:
npx mcp-server-onenote
To install OneNote Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @modelcontextprotocol/server-onenote --client claude
npm install -g github:ZubeidHendricks/azure-onenote-mcp-server
Set the following environment variables:
AZURE_TENANT_ID
: Your Azure tenant IDAZURE_CLIENT_ID
: Your Azure application (client) IDAZURE_CLIENT_SECRET
: Your Azure client secret
Add this to your MCP client configuration (e.g. Claude Desktop):
{
"mcpServers": {
"onenote": {
"command": "mcp-server-onenote",
"env": {
"AZURE_TENANT_ID": "<YOUR_TENANT_ID>",
"AZURE_CLIENT_ID": "<YOUR_CLIENT_ID>",
"AZURE_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>"
}
}
}
}
- Go to Azure Portal and navigate to App registrations
- Create a new registration
- Add Microsoft Graph API permissions:
- Notes.ReadWrite.All
- Notes.Read.All
- Create a client secret
- Copy the tenant ID, client ID, and client secret for configuration
# Install dependencies
npm install
# Run tests
npm test
# Build
npm run build
# Lint
npm run lint
# Run locally
npm start
See CONTRIBUTING.md for information about contributing to this repository.
This project is licensed under the MIT License - see the LICENSE file for details
- Initial release
- Core functionality for OneNote notebook, section, and page management
- Published to npm registry
- Added executable bin to package.json
- Fixed issue where npx command couldn't determine executable to run
- Updated README with clear running instructions