Skip to main content
Glama
eddyficial

onenote-mcp-python

by eddyficial

OneNote MCP (Python)

A standalone Model Context Protocol server for Microsoft OneNote desktop, written in Python. It connects to OneNote through its Windows COM API via a bundled PowerShell bridge and does not require an API key or an embedded AI provider.

Requirements

  • Windows

  • Microsoft OneNote desktop from Office (comes with Microsoft 365; not the Store app), with at least one notebook open

  • Python 3.11+ and uv — install uv with:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

(uv manages Python itself, so a separate Python install is not required.)

Related MCP server: OneNote MCP Server

Quickstart

git clone https://github.com/eddyficial/onenote-mcp-python.git
cd onenote-mcp-python
uv sync
uv run onenote-mcp-setup

onenote-mcp-setup configures Codex, Claude Desktop, and Claude Code in one shot, preserving unrelated MCP entries. Preview with --dry-run, or target one client with --client codex, claude-desktop, or claude-code (--client claude covers both Claude clients). Reload the client and the onenote_* tools appear.

Run manually

uv run onenote-mcp

The server speaks MCP over stdio; all diagnostics go to stderr.

Connect an MCP client by hand

If you'd rather not use the setup command:

Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "onenote": {
      "command": "uv",
      "args": ["--directory", "C:\\path\\to\\onenote-mcp-python", "run", "onenote-mcp"]
    }
  }
}

Claude Code

claude mcp add onenote -- uv --directory C:\path\to\onenote-mcp-python run onenote-mcp

Codex

Add to %USERPROFILE%\.codex\config.toml:

[mcp_servers.onenote]
command = "uv"
args = ["--directory", "C:\\path\\to\\onenote-mcp-python", "run", "onenote-mcp"]

Capabilities

The server exposes 27 onenote_* tools covering hierarchy, page CRUD, search, organization, rich content, export, safe deletion, knowledge digests, action and decision extraction, duplicate and stale-page health checks, weekly review source packs, and preview-first templates.

Tool

What it does

onenote_hierarchy

List notebooks, section groups, sections, and pages with IDs

onenote_get_page

Read a page's title and flattened text

onenote_search

Full-text search across pages

onenote_knowledge_digest

Source-grounded executive/detailed digest across a scope

onenote_extract_insights

Extract action items, owners, due dates, decisions, risks, questions

onenote_health_report

Audit duplicates, stale/untitled/empty pages, ownerless actions

onenote_template_preview

Preview a trusted page template (read-only)

onenote_create_from_template

Create a page from a template (preview-first)

onenote_weekly_review

Build a weekly-review source pack (read-only)

onenote_create_page

Create a page in a section

onenote_append_page

Append text to a page

onenote_update_page

Replace or append a page's body

onenote_insert_rich_content

Append XHTML fragments and/or images

onenote_rename_page

Set a page's title

onenote_move_page

Move a page to another section (returns new page ID)

onenote_reorder_pages

Change page order within a section

onenote_create_section

Create a section

onenote_create_section_group

Create a section group

onenote_create_notebook

Create a notebook

onenote_rename_section

Rename a section

onenote_move_section

Move a section to another parent

onenote_reorder_sections

Change section tab order

onenote_navigate

Open an object in the visible OneNote window

onenote_export

Export a page/section to pdf, html, docx, mhtml, xps, or onenote

onenote_delete_page

Delete a page (recycle bin by default)

onenote_delete_section

Delete a section (recycle bin by default)

onenote_delete_notebook

Delete/close a notebook (recycle bin by default)

Why a PowerShell bridge instead of pywin32?

With x64 Click-to-Run Office, the OneNote COM typelib is registered only under the Win32 registry key, so 64-bit Python COM dispatch (pywin32/comtypes) fails with TYPE_E_LIBNOTREGISTERED. .NET's COM binder is unaffected, so the server spawns bridge\onenote_bridge.ps1 once (powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File ...) and speaks a small JSON-lines RPC over its stdio: {id, op, args} requests, {id, ok, result, error} responses, with a 60-second per-call timeout. The bridge is the single canonical COM path.

Cloud notebooks caveat

onenote_create_notebook without a path lets OneNote choose its default location, which on modern installs is OneDrive cloud. A just-created cloud notebook can reject immediate writes with COM error 0x80042030 until it syncs. For reliable scripted workflows, pass an absolute local path (e.g. C:\Users\you\Documents\Notebooks) — local notebooks accept section and page writes instantly.

Safety

  • Template creation previews by default.

  • Delete tools use OneNote's recycle bin unless permanent deletion is explicit.

  • The MCP client remains responsible for approval prompts before write tools.

Test

uv run pytest

Other implementations

Same 27 tools, same schemas — pick your runtime:

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    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
    107
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI language models like Claude to securely interact with Microsoft OneNote data, allowing for reading, writing, searching, and comprehensive editing of notebooks, sections, and pages directly through an AI interface.
    13
    15
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    A pure-local Microsoft OneNote MCP server for Windows that controls the OneNote desktop app through the local OneNote COM API without needing Azure, Microsoft Graph, API keys, or OAuth.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

Latest Blog Posts

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/eddyficial/onenote-mcp-python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server