Skip to main content
Glama

onenote-mcp

Your OneNote notebooks, readable and writable by both you and your AI assistant.

What this wraps

Microsoft OneNote via the Microsoft Graph API — notebooks, sections, and full page content, headless (no screen automation). See docs/WRAPPEE.md for official links, community, and disambiguation from similarly-named projects.

Related MCP server: OneNote MCP Server

Preview

Dashboard

AI Command chat

Dashboard

Chat

Live backend status, tool surface, activity

Chat with your notes through a local LLM

Two doors

  • MCP server, for AI agents — 26 tools + 1 prompt over stdio or streamable HTTP (:10907/mcp): list/explore notebooks, read page HTML, create pages, title + full-text search, notebook TOC cards. Any MCP client (Claude Desktop, Cursor, Copilot) can browse and edit your notes.

  • Webapp, for humans — dashboard (:10906) with notebook tree browser, rendered page viewer, search with filter/sort/pagination/CSV export, AI chat over your notes, skills, logging, settings. No prompt engineering required.

What You Can Do

  • Browse notebooks → sections → pages; read full page content rendered

  • Search titles instantly; build a local full-text index for body search

  • Create pages from plain text (paragraphs from blank lines)

  • Back up everything to Markdown files, any time

  • Ask the chat about your notes (local LLM via backend proxy, nothing leaks)

  • Run headless, as a Tauri desktop app, or from a .mcpb bundle

Install

Installation guide: INSTALL.md - a Windows app, a one-line add-on for Claude Desktop, or a config snippet for Cursor, VS Code and Claude Code.

Example Prompts

  • "Show me my OneNote notebooks"

  • "Find pages mentioning quarterly planning"

  • "Create a page in My Notebook titled Shopping with a bullet list"

Documentation

Doc

Contents

Installation

All install methods, prerequisites

Onboarding

Microsoft account + app setup, pitfalls

Wrapped app

OneNote links, community, disambiguation

Architecture

System, auth chain, scope recipe, ports

Configuration

Env vars, config options

Tool Reference

All 26 tools + prompt

Auth investigation

The 401 odyssey: evidence, verdicts

Development

Contributing, local setup

Troubleshooting

Common issues, diagnostics

Requirements

  • Windows 10/11 (primary), macOS/Linux for server-only use

  • A Microsoft account (free; your notes stay yours)

  • Claude Desktop or any MCP client (agents door); a browser (humans door)

  • Python 3.10+ via uv, Node.js (source installs only — see INSTALL.md)

License

MIT - see the LICENSE file for details.

Available Tools

19 tools
authenticateA

Start the Microsoft authentication flow using device code.

This tool initiates the OAuth 2.0 device code flow for Microsoft Graph API. The user will be provided with a URL and code to complete authentication in their browser.

Return Format

Confirmation string: "✅ Authentication successful" or "❌ ..." on failure.

Examples

authenticate()

Inputs: no named parameters. Returns: result

onenote_append_pageA

Append plain text to the end of a OneNote page.

Return Format

Confirmation string: "✅ Appended to page <id>".

Examples

onenote_append_page(page_id="0-PG123...", content="Follow-up note\n\nSecond paragraph")

Inputs: content (required), page_id (required). Returns: result

onenote_create_pageA

Create a new page in a OneNote notebook.

Return Format

Confirmation string: "✅ Page '' created successfully with ID: <id>".

Examples

onenote_create_page(notebook_id="0-ABC123...", title="Meeting Notes", content="Notes...")

Inputs: title (required), notebook_id (required), content. Returns: result

onenote_exportA

Back up notebooks to Markdown files (one per page + index).

Writes to data/exports//, runs in the background - check onenote_export_status.

Return Format

Markdown string confirming started/already-running.

Examples

onenote_export() onenote_export(notebook_id="0-ABC123...")

Inputs: notebook_id. Returns: result

onenote_export_statusA

Show Markdown backup progress (files written, output dir).

Return Format

Markdown string with state, pages done/total, file count, output dir.

Examples

onenote_export_status()

Inputs: no named parameters. Returns: result

onenote_get_notebookB

Get details of a specific OneNote notebook.

Return Format

Markdown string with notebook name, ID, sections URL, and section groups URL.

Examples

onenote_get_notebook(notebook_id="0-ABC123...")

Inputs: notebook_id (required). Returns: result

onenote_get_notebook_tocA

Generate a table of contents for a OneNote notebook.

Creates a comprehensive overview of all sections and pages, useful for navigation.

Return Format

Markdown string: "📚 Table of Contents: " with stats and per-section page lists.

Examples

onenote_get_notebook_toc(notebook_id="0-ABC123...")

Inputs: notebook_id (required). Returns: result

onenote_get_pageA

Get the complete HTML content of a OneNote page.

Retrieves the full page content including text, formatting, and embedded elements.

Return Format

Markdown string: "📄 Page Content:" with title, ID, timestamps, and the raw HTML body.

Examples

onenote_get_page(page_id="0-PG123...")

Inputs: page_id (required). Returns: result

onenote_helpA

List the available OneNote MCP tools and when to use each.

Return Format

Markdown string enumerating the 19 tools with one-line usage notes.

Examples

onenote_help()

Inputs: no named parameters. Returns: result

onenote_index_startA

Build (or refresh) the local full-text search index.

Walks all notebooks and indexes page bodies into SQLite FTS5 (skips unchanged pages). Runs in the background - check onenote_index_status.

Return Format

Markdown string confirming started/already-running.

Examples

onenote_index_start()

Inputs: no named parameters. Returns: result

onenote_index_statusA

Show full-text index build progress and coverage.

Return Format

Markdown string with state, pages done/total, indexed page count.

Examples

onenote_index_status()

Inputs: no named parameters. Returns: result

onenote_list_notebooksA

List all Microsoft OneNote notebooks accessible to the signed-in account.

Return Format

Markdown string: "📓 Your OneNote Notebooks:" followed by numbered notebooks with ID.

Examples

onenote_list_notebooks()

Inputs: no named parameters. Returns: result

onenote_list_pagesB

List all pages in a OneNote section.

Return Format

Markdown string: "📄 Pages in section:" with numbered pages, created and modified dates.

Examples

onenote_list_pages(section_id="0-SEC123...")

Inputs: section_id (required). Returns: result

onenote_list_sectionsA

List all sections in a OneNote notebook.

Return Format

Markdown string: "📂 Sections in notebook:" with numbered sections and their page URLs.

Examples

onenote_list_sections(notebook_id="0-ABC123...")

Inputs: notebook_id (required). Returns: result

onenote_recentA

List recently modified pages across all notebooks.

The domain-inbox answer to "what changed": TOC walk, newest first.

Return Format

Markdown string with dated page entries (title, notebook/section, id).

Examples

onenote_recent() onenote_recent(days=30)

Inputs: days. Returns: result

onenote_save_access_tokenA

Save a Microsoft Graph access token for later use.

Persists the token to the local token file so subsequent tools can call the Graph API.

Return Format

A confirmation string: "✅ Access token saved successfully" or "❌ ..." on failure.

Examples

onenote_save_access_token(token="eyJhbGciOi...") # paste a token from az login / Graph explorer

Inputs: token (required). Returns: result

onenote_search_pagesA

Search for pages across all OneNote notebooks.

Two modes: 'title' matches page titles via TOC walk (always available); 'fulltext' queries the local FTS index over page bodies (build it first).

Return Format

Markdown string: "🔍 Search Results for '':" with numbered matching pages.

Examples

onenote_search_pages(query="quarterly report") onenote_search_pages(query="hiking checklist", mode="fulltext")

Inputs: query (required), mode. Returns: result

show_notebooks_cardB

Show the user's OneNote notebooks as a rich in-chat card.

Return Format

ToolResult: PrefabApp card with one row per notebook, plus a plain-text markdown fallback for hosts that do not render apps.

Examples

show_notebooks_card()

Inputs: no named parameters.

shutdown_serverA

Shut down the onenote-mcp server gracefully.

Use when the user or an agent explicitly asks to stop the server process.

Return Format

Confirmation string: "✅ Server shutting down...".

Examples

shutdown_server()

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 19 tools

    Disambiguation4/5

    Most tools have a clearly distinct resource and action, but there is some overlap: onenote_list_notebooks and show_notebooks_card present the same notebook data in different formats, and onenote_get_notebook_toc overlaps with list_sections/list_pages navigation. The background export/index pairs are kept distinct by their status tools, so ambiguity is limited.

    Naming Consistency3/5

    The majority of tools use an onenote_ prefix with verb_noun naming, but authenticate, shutdown_server, and show_notebooks_card lack that prefix, and onenote_recent is not a verb_noun form. This creates mixed conventions that reduce predictability.

    Tool Count4/5

    With 19 tools the server is slightly heavy for a OneNote integration, but the extra tools cover necessary background export/index status checks plus auth, help, shutdown, and card presentation. The core read/create/search/export surface is reasonably scoped.

    Completeness3/5

    The toolset covers reading notebooks, sections, and pages, plus page creation, appending, search, export, and indexing. However, it lacks delete and update/replace operations for pages, sections, or notebooks, and there is no way to create a notebook or section, which are notable lifecycle gaps.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that enables AI language models like Claude to interact with Microsoft OneNote, allowing access to notebooks, creating pages, searching notes, and analyzing content directly through the AI interface.
      39 npm
      135
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server that connects AI tools to Microsoft OneNote for Business via the Microsoft Graph API, enabling listing, creating, and updating notebooks, sections, and pages.
      6
      MIT