onenote-mcp

onenote-mcp

Enables Claude to read local OneNote notebooks via the Windows desktop COM API, including text from pasted screenshots, while keeping all data on the machine.

Category
Visit Server

README

onenote-mcp

A local MCP server that lets Claude read your OneNote notebooks, including the pictures you pasted into them.

It talks to the OneNote desktop application through its COM interface. There is no Azure app registration and no tenant consent. Nothing leaves the machine.

Why this exists

The Microsoft 365 connector does not support OneNote. It refuses with mime type 'application/msonenote' is not allowed. Every Graph API route needs an Entra app registration with Notes.ReadWrite.All, which on a corporate tenant means an IT request. The desktop COM API needs neither.

What it can do

  • Search every open notebook, including the text inside pasted screenshots, because OneNote's own index covers OCR.
  • Read a page as text, with a list of the images on it.
  • Return those images as pictures, downscaled to fit sensibly in a transcript.

It is read-only. It cannot change, create or delete anything.

Requirements

  • Windows, with the OneNote desktop application installed. The OneNote app from the Microsoft Store is a different program and has no COM interface.
  • Python 3.11 or later. Bitness does not matter.

Install

python -m venv .venv
.venv\Scripts\python.exe -m pip install -e .

Register

.mcp.json in this folder registers the server for this project. To use it everywhere:

claude mcp add onenote -s user -- C:\path\to\onenote_COM_mcp\.venv\Scripts\python.exe -m onenote_mcp.server

The same command works for Claude Desktop and the VS Code extension.

Tools

Tool What it gives you
list_notebooks Open notebooks and their sections, and whether each notebook is personal or on a shared team site
list_pages The pages under a notebook, section group or section
search_pages Pages matching a query, across everything or under one scope
get_page One page as text, plus a manifest of its images. No pixels
get_page_images The pictures, by index, downscaled to max_edge

get_page and get_page_images are deliberately separate. A page can hold a dozen full-size screenshots, and reading its text should not drag all of them into the conversation.

Ask get_page for include_ocr when you want the text OneNote recognised inside an image. It is often enough to answer a question without fetching the picture at all.

The first call is slow

The server does not contact OneNote until the first tool call. That call starts OneNote if it is closed, which can take a while. Later calls are fast: a ten-page section reads in about two seconds.

Development

.venv\Scripts\python.exe -m pytest        # no OneNote needed
.venv\Scripts\python.exe tools\smoke.py   # live check, needs OneNote

Read CLAUDE.md before changing com.py. The COM interface has two traps that cost a day to find, and one of them kills the OneNote process.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured