onenote-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ONENOTE_SCOPES | No | Graph permissions. Default: Notes.ReadWrite offline_access | |
| ONENOTE_CLIENT_ID | No | Microsoft application ID. Default: built in, if set by the maintainer | |
| ONENOTE_TENANT_ID | No | Tenant ID: common, consumers, organizations, or a tenant GUID. Default: common | |
| ONENOTE_ALLOW_WRITE | No | Set to false to disable all write tools. Default: true | |
| ONENOTE_SKIP_DOTENV | No | Ignore .env entirely, for predictable config. Default: unset | |
| ONENOTE_TOKEN_CACHE | No | Where credentials are cached. Default: OS config dir | |
| ONENOTE_REDIRECT_PORT | No | Pin the sign-in callback port. Default: random | |
| ONENOTE_DEFAULT_SECTION | No | Section new pages go to when unspecified. Default: unset | |
| ONENOTE_ALLOW_DEVICE_CODE | No | Use device code flow instead of a browser. Default: false |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| authStatusA | Report whether the user is signed in to Microsoft, which account is cached, and where the token cache lives. Safe to call at any time; never triggers a sign-in prompt. |
| authenticateA | Begin sign-in to the Microsoft account that owns the OneNote notebooks. Returns immediately with the instruction the user must follow (a browser is opened, or a device code is shown). It does NOT wait for the user to finish -- poll |
| signOutA | Remove the cached Microsoft account, delete the local token cache file, and forget any page text remembered on this computer. The user must authenticate again afterwards. |
| getOutlineA | START HERE for anything structural. Returns every notebook, section group, and section in ONE call, with IDs and readable paths like "Learn / Cooking". Use this instead of chaining listNotebooks then listSections — it is one request instead of several, and it correctly includes sections nested inside section groups. |
| listNotebooksA | List notebooks only. Prefer |
| listSectionsA | List sections, including those nested inside section groups. Prefer |
| listPagesA | List pages, most recently modified first. Pass a section NAME to scope to one section; omit it to list across all sections. |
| getPageA | Read one page. Returns readable text including tables (as Markdown), image captions, and the text of any attached PDFs. Pass format="html" for raw XHTML. If the result mentions an image or attachment whose text is unavailable, say so rather than treating the page as complete. |
| searchPagesA | Find pages by title (fast — one request). Set searchContent=true to also scan page bodies. OneNote provides no server-side full-text search, so that fetches candidate pages; it runs them in parallel and stops early once enough matches are found, but it is still much slower than a title search. Pass |
| createPageA | Create a new page. Pass the section by NAME — no lookup needed first. If a default section is configured, |
| appendToPageA | Add content to the end (or start) of an existing page without replacing it. |
| createSectionB | Create a new section inside a notebook. |
| deletePageA | Permanently delete a page. This cannot be undone -- confirm the page title with the user before calling. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool maps to a distinct action: auth status/start/end, structural outline vs flat lists, and page/section operations are clearly separated. The descriptions for getOutline/listNotebooks/listSections explicitly clarify when each should be used, so an agent should not confuse them.
The page and section tools consistently use camelCase verb+Resource (listPages, createPage, deletePage, appendToPage, createSection). The auth tools break that pattern slightly with authStatus, authenticate, and signOut, but the overall naming style remains predictable.
Thirteen tools is well within the ideal range and covers authentication, structure discovery, and page/section operations without unnecessary bloat. The three auth tools are justified by the async sign-in flow, and even the slight overlap between getOutline and the list helpers serves different query needs.
Core workflows are covered: authenticate, discover structure, list/search/read/create/append/delete pages, and create sections. Missing full page content replacement and notebook/section deletion are workable gaps, but appendToPage and createSection handle the most common note-taking operations.