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 |
Capabilities
Features and capabilities supported by this server
| 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 and delete the local token cache file. 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 by ID. Returns readable text by default; pass format="html" for the raw XHTML, and includeIds=true if you intend to modify the page afterwards. |
| 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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JonEricDelaCruz/onenote-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server