OneNote MCP Server logo

OneNote MCP Server

by hwillGIT

An MCP server for browsing and interacting with OneNote web app using browser automation. It enables AI assistants and other MCP-compatible clients to programmatically browse and interact with OneNote notebooks shared via web links.

View on GitHub

Last updated: N/A

OneNote MCP Server

An MCP (Model Context Protocol) server for browsing and interacting with OneNote web app using browser automation. This server enables AI assistants and other MCP-compatible clients to programmatically browse and interact with OneNote notebooks that are shared via web links.

Features

  • Navigate OneNote's hierarchical structure (notebooks, sections, pages)
  • Read page content from OneNote
  • Add new content to existing pages
  • Create new pages
  • Search within OneNote
  • Take screenshots of the current view
  • Maintain state across the session

Requirements

  • Python 3.10 or higher
  • browser-use 0.1.40 or higher
  • MCP SDK 1.2.0 or higher
  • Playwright
  • Internet connection
  • A shared OneNote notebook URL (must be accessible without authentication)

Installation

# Clone the repository or create the project structure
# Then navigate to the project directory
cd onenote-mcp

# Install the package and dependencies
pip install -e .

# Install Playwright browsers
playwright install

Usage

Standalone Mode

You can run the server directly with:

python -m onenote_mcp

Integration with Claude Desktop or other MCP hosts

  1. Configure your Claude Desktop to use the OneNote MCP server by editing the configuration file:
{
  "mcpServers": {
    "onenote": {
      "command": "python",
      "args": ["-m", "onenote_mcp"]
    }
  }
}
  1. Launch Claude Desktop, which will automatically start the OneNote MCP server
  2. Use the available tools in your chat with Claude:
Can you help me navigate my OneNote notebook at https://example.com/my-shared-notebook? 
First, please launch OneNote with this URL and tell me what notebooks are available.

Available Tools

  • launch_onenote(shared_url): Launch the OneNote web app with a shared notebook URL
  • get_all_notebooks(): List all available notebooks
  • get_all_sections(): List all sections in the current notebook
  • get_all_pages(): List all pages in the current section
  • navigate_to_notebook_by_name(notebook_name): Go to a specific notebook
  • navigate_to_section_by_name(section_name): Go to a specific section
  • navigate_to_page_by_name(page_name): Go to a specific page
  • get_current_page_content(): Get the content of the current page
  • add_content_to_page(content): Add content to the current page
  • create_new_page_with_name(page_name): Create a new page
  • search_in_onenote(search_term): Search OneNote for specific terms
  • take_screenshot(): Take a screenshot of the current view
  • get_onenote_state(): Get the current state information
  • close_onenote(): Close the OneNote session and clean up resources

How It Works

This MCP server uses browser-use, a browser automation framework, to interact with the OneNote web interface. It creates a bridge between MCP-compatible AI assistants and the OneNote web application, enabling programmatic control of OneNote functions.

Limitations

  • Only works with OneNote notebooks that are shared with a public link (no authentication)
  • The server may need adjustments if the OneNote web interface changes
  • Browser automation can be somewhat fragile and dependent on the UI structure
  • Performance may vary based on network conditions and OneNote's responsiveness

Troubleshooting

  • If the server fails to connect to OneNote, ensure the shared link is accessible without login
  • If selectors fail, the OneNote UI may have changed - check the server code
  • For other issues, check the server logs for error details

License

MIT