OneNote MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ONENOTE_SCOPES | No | Permission scopes for Microsoft Graph. | Notes.ReadWrite |
| ONENOTE_AUTH_FLOW | No | Sign-in method: 'browser' or 'device'. | browser |
| ONENOTE_BASE_PATH | No | OneNote location, e.g., 'sites/<site-id>/onenote'. | me/onenote |
| ONENOTE_CACHE_DIR | No | Location for settings and token cache. | |
| ONENOTE_CLIENT_ID | Yes | Your app (client) ID from Microsoft Entra. Required unless set in the config file. | |
| ONENOTE_TENANT_ID | No | Tenant ID or domain. Defaults to 'common'. | common |
| ONENOTE_MAX_IMAGES | No | Maximum number of images per response. | 6 |
| ONENOTE_NO_BROWSER | No | Set to '1' to print the sign-in link instead of opening a browser. | |
| ONENOTE_DOWNLOAD_DIR | No | Folder for downloaded images and attachments. | ~/Downloads/OneNote MCP |
| ONENOTE_MAX_RESPONSE_IMAGE_BYTES | No | Maximum total image bytes per response. | 700000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| onenote_sign_inA | Checks the Microsoft sign-in. If not signed in, starts sign-in: by default a browser window opens on the user's computer; with device-code sign-in it returns a URL and code. Relay the returned instructions to the user exactly; after they finish, other OneNote tools work. |
| onenote_sign_outB | Removes the cached Microsoft sign-in for this OneNote server. |
| onenote_list_notebooksA | Lists the user's OneNote notebooks with their section groups and sections (IDs included). Start here to find section IDs. |
| onenote_list_sectionsA | Lists sections, optionally within one notebook (including nested section groups) or one section group, optionally filtered by name. |
| onenote_list_pagesA | Lists pages (title, dates, location, ID) in a section, a notebook, or across all notebooks. Filter by title text and last-modified date range. Use for 'what did I write this week' style questions. |
| onenote_search_pagesA | Finds pages whose title or text contains all the query words. Title matches are searched server-side; text matches scan the most recently modified pages in scope (Microsoft Graph has no full-text OneNote search). Narrow with section_id or notebook_id for thorough results. Text inside screenshots is only matched via alt text; open pages with onenote_get_page to read screenshots. |
| onenote_get_pageA | Reads a page as markdown, with screenshots and other images returned as images you can see. Images appear in the text as [Image N] placeholders. Large screenshots are downscaled here; use onenote_get_page_image with a region to zoom in on small text. Set format=html_with_ids to get element IDs for targeted edits with onenote_update_page. |
| onenote_get_page_imageA | Returns one image from a page at high resolution, optionally cropped to a region so small text in big screenshots is legible. Region values are fractions of the image (0-1), e.g. the right half is {x:0.5,y:0,width:0.5,height:1}. |
| onenote_collect_pagesA | Reads many pages at once (text, optionally with images) for summaries and reports, e.g. all pages in a section modified this week. Pages are returned oldest to newest. Either pass page_ids or a scope with filters. |
| onenote_create_pageA | Creates a new page (e.g. a report) in a section. Identify the section by section_id, or by section_name (plus notebook_name if the name is ambiguous). Images: use |
| onenote_update_pageA | Adds or changes content on an existing page. Default appends to the end of the page body. action=prepend adds to the top; insert/replace need a target element id from onenote_get_page with format=html_with_ids (replace overwrites that element). To rename a page use target=title with action=replace and the new title as content. Images: use |
| onenote_create_sectionB | Creates a section in a notebook or section group. |
| onenote_create_notebookB | Creates a new notebook for the signed-in user. |
| onenote_download_resourcesA | Saves original-resolution images and file attachments from a page to the local folder /root/Downloads/OneNote MCP (e.g. to embed screenshots in a Word or PDF report). Returns the saved file paths. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| onenote_report | Gathers notes (text and screenshots) from a notebook or section and turns them into a report. |
| onenote_extract_screenshots | Reads every screenshot on a page and transcribes the text, tables and figures in them. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool has a clearly distinct purpose: auth, notebook/section/page listing and creation, page reading/searching/batch collection, image retrieval, page updates, and resource downloads. The read-oriented tools (get_page, list_pages, search_pages, collect_pages) overlap conceptually but descriptions sharply define their boundaries.
All tools use the same onenote_ prefix followed by snake_case verb_noun or verb-object patterns (sign_in, list_pages, create_page, get_page_image). The convention is predictable throughout with no mixed casing or inconsistent verb styles.
Fourteen tools is well-scoped for a OneNote integration covering auth, discovery, reading, searching, creation, updates, images, and downloads. Each tool earns its place without excessive fragmentation.
Core read and write workflows are covered, including notebooks, sections, pages, search, images, and updates. However, lifecycle operations are notably incomplete: there are no delete tools for pages, sections, or notebooks, and no move/copy or section/notebook update operations.
for local screenshots,