An MCP server bridging an LLM and the OneMore CLI for OneNote. Provides tools to read, search, and modify OneNote notebooks, sections, and pages.
OneMore MCP demonstrates solid tool design with consistent naming (verb_noun pattern), comprehensive parameter descriptions, and clear input schemas. All 10 tools are properly registered with [McpServerTool] attributes and have descriptions. However, output schemas are not formally documented, responses are described in prose (e.g., 'Returns Markdown or raw XML') rather than structured JSON Schema. Error handling is minimal; most tools lack recovery guidance. The append_to_page tool is well-designed (append-only, never exposes existing content), but write tools (update_page, create_page, export) lack confirmation/dry-run patterns. Parameter descriptions are generally good (72 chars avg baseline met), but some tools like search_hashtags lack format parameter documentation.
Add a hashtag to a page. Requires writes to be enabled.
Append text to the end of a OneNote page WITHOUT sending the page's existing content to the model. The server fetches the page locally, adds your text as new paragraph(s), and writes it back — it can only add, never overwrite. Always available (independent of the write gate). Requires notebook + section + page.
Create a new page with the given title. IMPORTANT: the page is created EMPTY and cannot be given body text — the OneMore CLI can only modify content that already exists, so nothing (including append_to_page) can write into it until someone types in the page in OneNote. Use it to place a titled page; use append_to_page for pages that already have content. Requires writes to be enabled.
Export a page or notebook to a file (PDF, Word, OneNote, HTML, etc.). Requires writes to be enabled. Output paths must stay within the configured ExportRoot if set.
Get a page's content. Target it by notebook + section + page name, or set current=true for the page open in OneNote. Returns Markdown (default) or raw OneNote page XML.
Output schemas not formally documented. Tools describe responses in prose ('Returns Markdown or raw XML') rather than structured JSON Schema. LLMs cannot reliably parse unstructured output or plan downstream tool calls.
Destructive write tools lack confirmation/dry-run pattern. update_page and create_page can modify OneNote state irreversibly without user confirmation. Agents may make mistakes.
Error handling lacks recovery guidance. Tools throw McpException but do not provide actionable next steps (e.g., 'Try search_titles() first to find the page').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
List the OneNote notebook/section/page hierarchy. Optionally scope to one notebook or section. Returns an indented tree (markdown) or the raw OneNote XML.
Full-text search a notebook for pages matching a query, optionally scoped to a section/page. Returns matching page paths (markdown) or raw XML.
Search OneNote hashtags, optionally scoped to a notebook/section/page. Returns matching results as raw XML.
Search page TITLES across a notebook — faster and more precise than full-text search for finding a page by name. Returns matching page paths (markdown) or raw XML.
OVERWRITE an EXISTING OneNote page from raw page XML (as returned by get_page with format='xml'). The page must already exist — this tool won't create one. Requires writes to be enabled. For simply adding text, use append_to_page.
search_hashtags missing format parameter documentation. Unlike other search tools, it does not document whether output is XML-only or if markdown is available.
create_page limitation not surfaced in tool description. The description states 'page is created EMPTY' but does not explain why append_to_page cannot be used immediately after creation, forcing users to manually type in OneNote first.