Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the OneNote (Microsoft 365) in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work in OneNote: browse notebooks, sections and pages, read pages, create notebooks, sections and pages, and add notes to existing pages. OneNote for work or school and personal OneNote through Microsoft Graph, signed in with your Microsoft account.
Try asking
Example prompts for OneNote (Microsoft 365)
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → OneNote (Microsoft 365), paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Microsoft OneNote + Cursor
Let your AI work in OneNote: browse notebooks, sections and pages, read pages, create notebooks, sections and pages, and add notes to existing pages. OneNote for work or school and personal OneNote through Microsoft Graph, signed in with your Microsoft account.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID
Step 1 — Get credentials
-
Open the Microsoft Entra admin center (entra.microsoft.com) or the Azure portal and go to Applications → App registrations → New registration.
-
Name the app (for example "AnythingMCP Microsoft 365") and choose the Supported account types. The choice decides what goes into
MICROSOFT_TENANT_ID:- Accounts in this organizational directory only (single tenant): only users of your organisation can sign in. Use the Directory (tenant) ID from the app's Overview page (a GUID) or your domain, such as
contoso.onmicrosoft.com. - Accounts in any organizational directory (multi-tenant): use
organizations. - Accounts in any organizational directory and personal Microsoft accounts: use
common(work, school and personal accounts) orconsumers(personal accounts only).
If the value does not match the account type, Microsoft refuses the sign-in (AADSTS50194 or AADSTS50020).
- Accounts in this organizational directory only (single tenant): only users of your organisation can sign in. Use the Directory (tenant) ID from the app's Overview page (a GUID) or your domain, such as
-
Under Redirect URI, pick the platform Web and enter
https://cloud.anythingmcp.com/api/mcp-oauth/callback. If you host AnythingMCP yourself, enterhttps://your-anythingmcp-host/api/mcp-oauth/callbackinstead. The URI must match character for character, otherwise Microsoft answers AADSTS50011. -
Open API permissions → Add a permission → Microsoft Graph → Delegated permissions and add
offline_access,User.ReadandNotes.ReadWrite.offline_accessis what makes Microsoft issue a refresh token; without it the connector stops an hour after you authorize it. -
Open Certificates & secrets → New client secret. Copy the secret Value, not the Secret ID; it is shown only once. Note the expiry date: when the secret expires, the connector stops working until you create a new one and paste it in.
-
Paste the Application (client) ID from the Overview page into
MICROSOFT_CLIENT_ID, the secret value intoMICROSOFT_CLIENT_SECRETand the tenant value from step 2 intoMICROSOFT_TENANT_ID, then install the connector. -
On the connector page, click Authorize with Provider and sign in with the account whose notebooks the AI should work with. The refresh token is stored encrypted, and access tokens (valid for about an hour) are renewed automatically.
-
Start with
microsoft_onenote_list_notebooks: it lists the notebooks the connector can open and your role in each (owner, contributor or reader).
One Entra app for all Microsoft connectors: the app registration you made for the Outlook, OneDrive, SharePoint or Excel connector works here too. Open it, add the permission from step 4 under API permissions, keep the same redirect URI and reuse the same client ID, secret and tenant. Each connector asks only for its own permissions when you authorize it:
- Outlook:
Mail.ReadWrite,Mail.Send,Calendars.ReadWrite - OneDrive:
Files.ReadWrite - Excel:
Files.ReadWrite(plusFiles.ReadWrite.Allfor workbooks in SharePoint or shared with you) - SharePoint:
Sites.ReadWrite.AllandFiles.ReadWrite.All - OneNote:
Notes.ReadWrite - Microsoft To Do:
Tasks.ReadWrite - Planner:
Tasks.ReadWrite
All of them also need offline_access and User.Read.
Admin consent: these delegated permissions normally do not need an administrator, but many organisations turn off user consent. If the sign-in shows "Need admin approval" (AADSTS65001 or AADSTS90094), a tenant administrator opens the app registration once and clicks API permissions → Grant admin consent for the organisation. After that every user can authorize. Each connector still works only with what the account that signed in may see.
Notebooks shared with you: Notes.ReadWrite covers your own notebooks. To work in notebooks that colleagues shared with you (work or school accounts), add Notes.ReadWrite.All to the app registration, replace Notes.ReadWrite with it in the connector's OAuth settings and authorize again.
Read-only setup: replace the scopes in the connector's OAuth settings with offline_access User.Read Notes.Read, authorize again and disable microsoft_onenote_create_notebook, microsoft_onenote_create_section, microsoft_onenote_create_page, microsoft_onenote_append_to_page and microsoft_onenote_update_page.
Changes wait for your yes: before the AI creates a notebook, section or page, or changes a page, it tells you what it is about to write and where, and waits for your yes.
Switched off at install: microsoft_onenote_delete_page. The connector cannot undo a deletion, so turn it on only if the AI should really delete pages.
Finding and reading pages: a notebook holds sections, optionally grouped in section groups, and each section holds pages. The AI can search page titles and filter by the date of the last change, but Microsoft Graph does not search the text inside pages, so the AI opens the likely pages and reads them. Images in a page only open with your sign-in, handwritten ink is not included, and very long pages are cut off at about 200 KB. If you have a very large number of OneNote items, the page list across all notebooks can fail with error 10008; the AI then goes section by section.
Writing pages: new pages take simple formatting: headings, lists, tables, links, to-do checkboxes and images from a public web address. microsoft_onenote_append_to_page is the easiest way to add notes at the end of a page. A new page needs a few seconds before OneNote accepts changes to it: if adding to a page right after creating it answers 404, the AI waits briefly and tries again.
Common errors: 401 InvalidAuthenticationToken means the authorization was revoked or the client secret expired; paste a new secret if needed and click Authorize with Provider again. 403 (code 40004 or 40002) means Notes.ReadWrite is missing or was not consented, or the notebook is shared with you read-only. 404 (or code 20102 or 20112) means the id is wrong or the item was deleted. 20117 means a notebook or section with that name already exists there; 20115, 20153 or 20155 mean the name contains a forbidden character or is too long (128 characters for notebooks, 50 for sections). 30105 or 30108 mean your OneDrive for Business is not set up yet: open OneDrive once, or ask your admin to check your licence. 429 means Microsoft Graph is throttling the account: wait a moment and try again.
The connector does not upload images or files into pages, handle ink, copy pages or sections, or open the notebooks of Microsoft 365 groups and SharePoint sites.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Cursor
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Cursor reads MCP servers from ~/.cursor/mcp.json. Add this entry:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers → your server → API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart Cursor.
- Open Cursor → Settings → MCP and check that
anythingmcpis listed and connected. - Start chatting: the agent can now call the
Microsoft OneNotetools.
Available tools
| Tool | What it does |
|---|---|
microsoft_onenote_list_notebooks | List the OneNote notebooks the user can open: id, displayName, isDefault, isShared, userRole (Owner, Contributor, Reader), dates and links… |
microsoft_onenote_list_sections | List all sections in all of the user's notebooks, including sections inside section groups |
microsoft_onenote_list_notebook_sections | List the sections directly inside one notebook (not those inside its section groups; see microsoft_onenote_list_notebook_section_groups) |
microsoft_onenote_list_section_groups | List all section groups (folders of sections) in the user's notebooks, including nested ones |
microsoft_onenote_list_notebook_section_groups | List the section groups directly inside one notebook: id, displayName, dates and links |
microsoft_onenote_list_section_group_sections | List the sections directly inside one section group: id, displayName, isDefault, dates and links |
microsoft_onenote_list_pages | List pages across all of the user's notebooks, most recently changed first: id, title, createdDateTime, lastModifiedDateTime, links… |
microsoft_onenote_list_section_pages | List the pages of one section: id, title, dates, links |
microsoft_onenote_get_page | Get one page's metadata: title, dates, links, contentUrl, and the parentSection and parentNotebook it belongs to |
microsoft_onenote_get_page_content | Read a page: OneNote returns the page as HTML (title in <title>, text in <p>, <li>, <table> elements inside absolutely positioned <div>s… |
microsoft_onenote_create_notebook | Create a new notebook in the user's OneDrive |
microsoft_onenote_create_section | Create a section in a notebook |
microsoft_onenote_create_page | Create a page in a section from a title and HTML content |
microsoft_onenote_append_to_page | Add HTML at the end of a page (inside its first div), e.g. "<p>Follow-up: call Anna on Friday</p>" |
microsoft_onenote_update_page | Change a page with a list of commands, each {target, action, position?, content}. target: "title" (only action replace, content = new title… |
microsoft_onenote_delete_page | Delete a page |
Example prompts
- "Which OneNote notebooks do I have, and what sections are in my Work notebook?"
- "Find my pages with 'budget' in the title from the last month and summarize what they say."
- "Create a page Kickoff Acme in the Meetings section with these notes and a to-do checkbox for each action item."
- "Add a line to the page Supplier call: follow up with Anna on Friday about the delivery date."
FAQ
Does Cursor support custom MCP servers on the free tier? Yes, MCP is available on Hobby, Pro and Business plans.
Next steps
Was this guide helpful?