OneNote MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OneNote MCP Serversearch my notes for 'project roadmap' and summarize the key points"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OneNote MCP Server
An MCP (Model Context Protocol) server that gives Claude access to your local Microsoft OneNote notebooks. It reads .one files directly from disk and writes to OneNote via the COM API — no Azure registration, no API keys, no authentication required.
What It Does
This server parses the OneNote backup files that the desktop app stores locally and exposes them as tools that Claude can use to browse, read, and write to your notes.
Reading Tools
Tool | Description |
| List all locally available OneNote notebooks (from backup files) |
| List all sections in a specific notebook |
| Read the full text content of a section |
| Search for text across all notebooks and sections |
| List every section across every notebook |
| Get a notebook overview with content previews |
Writing Tools
Tool | Description |
| List notebooks/sections from the running OneNote app |
| Create a new page in any notebook section |
| List pages in a section (with IDs for appending) |
| Append content to an existing page |
Writing tools use the OneNote COM API and require the OneNote desktop app to be running on Windows.
Related MCP server: MCP OneNote Server
Prerequisites
Python 3.12+
uv (recommended) or pip
Microsoft OneNote desktop app (with local backup files)
Installation
git clone https://github.com/mhzarem/onenote-mcp.git
cd onenote-mcp
uv syncOr with pip:
git clone https://github.com/mhzarem/onenote-mcp.git
cd onenote-mcp
pip install "mcp[cli]" pyOneNoteSetup
Claude Code
claude mcp add --transport stdio onenote -- uv --directory /path/to/onenote-mcp run server.pyVerify it's connected:
claude mcp listClaude Desktop
Add this to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"onenote": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/onenote-mcp",
"run",
"server.py"
]
}
}
}On Windows, use the full path to uv.exe and double backslashes:
{
"mcpServers": {
"onenote": {
"command": "C:\\Users\\YOUR_USER\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\path\\to\\onenote-mcp",
"run",
"server.py"
]
}
}
}Restart Claude Desktop after saving.
Where It Reads Files From
By default, the server reads from the OneNote desktop app's local backup directory:
C:\Users\<user>\AppData\Local\Microsoft\OneNote\16.0\Backup\To use a different location, set the ONENOTE_BACKUP_DIR environment variable:
# Claude Code
claude mcp add --transport stdio --env ONENOTE_BACKUP_DIR=/path/to/notes onenote -- uv --directory /path/to/onenote-mcp run server.py
# Or export it
export ONENOTE_BACKUP_DIR=/path/to/your/onenote/filesUsage Examples
Once connected, you can ask Claude:
Reading:
"List my OneNote notebooks"
"Show me the sections in my Machine Learning notebook"
"Read my Algorithm notes"
"Search my notes for transformers"
"Give me a summary of my Programming notebook"
Writing:
"Create a new page in My Notebook / Quick Notes titled 'Meeting Notes'"
"Add my interview prep notes to OneNote"
"Append today's summary to my existing page"
How It Works
Reading:
Scans the OneNote backup directory for
.onefilesOrganizes them by notebook and section (grouping backup versions together)
Uses pyOneNote to parse the binary
.oneformatExtracts
RichEditTextUnicodetext content from each section
Writing:
Connects to the running OneNote desktop app via the COM API
Uses PowerShell subprocess calls to create pages and update content
Supports HTML formatting in page content
Limitations
Reading: Uses OneNote desktop backup files — not OneDrive-only notebooks without local backup
Reading: Extracts text content only; images and embedded files are not included
Writing: Requires Windows with the OneNote desktop app installed
Writing: The OneNote app must be installed (it doesn't need to be open — the COM API will start it)
License
MIT
Available Tools
10 toolsappend_to_pageA
Append content to an existing OneNote page.
The content is added as a new outline block at the bottom of the page.
Supports HTML formatting (<b>, <i>, <br>, <ul>, <li>, etc.).
Args:
page_id: The page ID (from list_live_pages).
content: The content to append (plain text or HTML).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| page_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that content is appended as a new outline block at the bottom and supports HTML formatting. However, lacks details about error conditions, authentication requirements, rate limits, or what the output contains. With no annotations, the description carries the full burden but is partially complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise three sentences plus parameter list. Front-loaded with the main action, then details, then parameter descriptions. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with two required parameters and an output schema (though not described), the description covers the core behavior and parameter usage. Missing description of the return value, but the output schema exists and can supplement. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond the schema by explaining page_id is from 'list_live_pages' and content can be plain text or HTML. Since schema description coverage is 0%, this is valuable. Could be enhanced with length limits or encoding details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Append content' to a specific resource 'OneNote page'. Specifies it adds to the bottom of the page as a new outline block, distinguishing it from sibling tools like 'create_page' which creates new pages, and 'search_notes' which searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context by stating the page_id should come from 'list_live_pages'. Implicitly suggests use for appending to existing pages rather than creating new ones, but does not explicitly exclude use cases or mention alternative tools for updating or inserting content elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageA
Create a new page in a OneNote notebook section.
The content is written as HTML. You can use basic HTML tags like
<b>, <i>, <br>, <ul>, <li>, <h1>-<h6>, etc.
Requires the OneNote desktop app to be installed.
Args:
notebook_name: Name of the notebook (from list_live_notebooks).
section_name: Name of the section within the notebook.
title: Title for the new page.
content: The page content (plain text or HTML).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes | ||
| section_name | Yes | ||
| notebook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It mentions HTML support and desktop app requirement but omits side effects, validation, error handling, or confirmation of successful creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently front-loaded with purpose and usage notes, and the Args section is structured. Could be slightly tighter, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required params, no annotations, and an output schema, the description covers parameters and content format but lacks return value explanation and error handling, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides clear semantic meaning for all parameters: notebook_name from list_live_notebooks, section_name, title, content as HTML or plain text, significantly compensating for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new page in a OneNote notebook section,' with a specific verb and resource, and distinguishes from siblings like append_to_page and list_* tools by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some usage hints (HTML content, desktop app requirement) but does not explicitly guide when to use this vs alternatives like append_to_page for existing pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notebook_summaryC
Get a summary of a notebook: its sections and a preview of each section's content.
Args:
notebook_name: The name of the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the tool 'gets' a summary, implying a read operation, but does not discuss auth requirements, side effects, or rate limits. The output schema exists but the description adds no behavioral context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose. It includes an Args section but lacks additional guidance or behavioral notes. It is concise but omits useful information, balancing efficiency with completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple input (one parameter) and an output schema, so the description need not explain return values. However, it misses usage guidelines and behavioral transparency. The description is adequate for minimal understanding but incomplete for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is notebook_name, and the description merely restates its name: 'The name of the notebook.' Schema description coverage is 0%, and the description adds no format, examples, or constraints beyond what the schema title already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a summary of a notebook: its sections and a preview of each section's content.' It uses a specific verb and resource, and distinguishes from sibling tools like list_notebooks, list_sections, and read_section by specifying it returns a summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not state when not to use it or mention alternative tools like read_section for full content. The usage context is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_sectionsA
List ALL sections across ALL notebooks.
Useful for getting a complete overview of everything in your OneNote.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description bears full weight. It states the action but doesn't discuss potential pagination, performance, or whether it retrieves all data at once. Adequate for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences, no fluff. Perfectly concise for the simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no params, output schema present), the description covers the essential context. Could mention potential large payloads, but overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is trivial. Description adds value by clarifying the scope ('ALL notebooks'), ensuring the agent knows it's a global operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List ALL sections across ALL notebooks' with a specific verb and resource. Distinguishes from sibling 'list_sections' by emphasizing the global scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a use case ('useful for getting a complete overview') but does not explicitly mention when to avoid or compare with similar tools like list_sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_notebooksA
List notebooks from the running OneNote app (live, not backup files).
This uses the OneNote COM API and shows the notebooks currently open in the OneNote desktop app, including their sections. Use this to find where to create new pages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses it uses the OneNote COM API and shows notebooks currently open in the desktop app, including sections. Without annotations, this provides adequate behavioral context, though it could mention that it only shows live notebooks, not cloud-only ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main purpose in the first sentence, followed by a contextual sentence. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters, an output schema exists (so return values are documented elsewhere), and the description includes relevant context about COM API and live notebooks, it is fully sufficient for the agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema description coverage is 100%. The description does not need to add parameter information, and it provides baseline value by clarifying the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists live notebooks from the running OneNote app, distinguishing them from backup files, and notes it includes sections. This provides a specific verb and resource, differentiating it from siblings like list_notebooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to find where to create new pages,' giving a clear use case. However, it does not mention when to use alternatives like list_notebooks or get_notebook_summary, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_pagesB
List pages in a section from the running OneNote app.
Use this to find page IDs for appending content to existing pages.
Args:
notebook_name: Name of the notebook.
section_name: Name of the section.
| Name | Required | Description | Default |
|---|---|---|---|
| section_name | Yes | ||
| notebook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions 'from the running OneNote app,' which implies the app must be active, but it does not disclose whether the operation is read-only, what happens if the notebook or section doesn't exist, or any rate limits or destructive potential. The description lacks sufficient behavioral context for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and includes a clear primary statement followed by a use case, which is good. However, the Args section is redundant because it merely restates parameter names without additional detail. Removing or enriching that section would improve conciseness. The structure is front-loaded but not optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has only two required parameters, no enums, and no nested objects, the description provides the essential purpose and a use case. The presence of an output schema (not shown but signaled) means return values need not be explained. However, it lacks information about error handling, preconditions (e.g., app must be running), or confirmatory details, leaving gaps for a new agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage (no descriptions for parameters). The description lists the parameters in an Args block but simply repeats their names ('notebook_name: Name of the notebook.'), adding no semantic meaning or formatting details. Since the schema provides no descriptions and the description adds no value, the parameter semantics are weak.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List pages in a section'), the resource ('pages in a section'), and the context ('from the running OneNote app'). It also specifies a primary use case ('find page IDs for appending content to existing pages'), which helps differentiate it from sibling tools like list_sections or read_section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool: 'Use this to find page IDs for appending content to existing pages.' While it does not provide explicit 'when not to use' guidance, the stated use case implies that for other purposes (e.g., reading page content), alternative tools like read_section or search_notes might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notebooksA
List all locally available OneNote notebooks.
Shows notebook names and how many sections each one has.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It correctly describes a read-only operation ('list all') and mentions it returns notebook names with section counts. However, it lacks details on permissions, side effects, or whether notebooks are cached or always up-to-date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words, front-loaded with purpose and output summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema, the description adequately covers purpose, scope ('locally available'), and output format (names and section counts). No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0 parameters with 100% coverage, so baseline is 4. Description adds no parameter info, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists locally available OneNote notebooks and specifies the output (names and section counts). Distinguishes from sibling tool 'list_live_notebooks' by emphasizing 'locally available'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus siblings like 'list_live_notebooks' or 'list_all_sections'. No explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sectionsC
List all sections in a specific notebook.
Args:
notebook_name: The name of the notebook (from list_notebooks).
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits like read-only, side effects, pagination, or permissions. It assumes a simple list but lacks any safety notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short with no fluff, front-loaded purpose, and structured Args section. However, it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is adequate but lacks details on return behavior, order, or whether it lists all sections recursively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description adds context for notebook_name: 'The name of the notebook (from list_notebooks)'. This helps the agent source the parameter but lacks format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'sections' scoped to a notebook. However, it does not distinguish from sibling tool 'list_all_sections', which may list sections across notebooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The argument hint 'from list_notebooks' implies a prerequisite but alternatives like list_all_sections are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sectionA
Read all text content from a specific section of a notebook.
Args:
notebook_name: The name of the notebook.
section_name: The name of the section (from list_sections).
| Name | Required | Description | Default |
|---|---|---|---|
| section_name | Yes | ||
| notebook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool reads content, implying non-destructive behavior, but does not disclose any side effects, permissions, rate limits, or data format specifics (e.g., markdown, plain text). The output schema exists but the description does not hint at return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (two lines for args, one line for purpose) and front-loaded. However, it includes 'Args:' which is redundant if the schema is present. Still, it is concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with an output schema, the description is minimally complete: it explains inputs and basic function. It lacks pre/error conditions or comparative context with siblings. Given the low complexity and existence of output schema, the description is adequate but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameter descriptions, so the description adds significant value by explaining that 'section_name' should come from 'list_sections' and 'notebook_name' is the notebook name. This is helpful and compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'all text content from a specific section of a notebook'. This distinguishes it from sibling tools like list_sections (list only) and search_notes (search across sections). The specificity is high.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool reads a section's text content, but provides no guidance on when to use it versus alternatives (e.g., list_sections for listing, search_notes for querying). It relies on the user to infer usage context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesA
Search for text across ALL notebooks and sections.
Searches through the text content of every section for the given query.
Returns matching sections with a snippet of the matched text.
Args:
query: The text to search for (case-insensitive).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses basic behavior (search all notebooks, returns snippets, case-insensitive) but lacks details on performance, limitations, or error conditions. Without annotations, the description carries full burden; it is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences plus a parameter description. Every word is necessary and front-loaded with the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description adequately covers return behavior ('matching sections with a snippet'). Could mention pagination or max results, but not essential for a one-parameter search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds 'case-insensitive' detail beyond the schema property title 'Query', providing valuable usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'search' and resource 'text across ALL notebooks and sections', clearly distinguishing from sibling tools that list or read specific items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States what it does ('searches through text content of every section') but does not explicitly mention when to avoid or suggest alternatives, though no obvious alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
append_to_page - First observed
create_page - First observed
get_notebook_summary - First observed
list_all_sections - First observed
list_live_notebooks - First observed
list_live_pages - First observed
list_notebooks - First observed
list_sections - First observed
read_section - First observed
search_notes
TDQS
Most tools have clear, distinct purposes (e.g., create_page vs append_to_page). However, there is potential confusion between list_notebooks and list_live_notebooks, and between list_sections and list_all_sections, though descriptions clarify some differences.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., list_live_notebooks, create_page, search_notes). No mixing of conventions.
With 10 tools, the set is well-scoped for a Note-taking server. It covers the main operations—listing, creating, reading, appending, and searching—without being overwhelming.
Core read (list notebooks, sections, pages, read section) and write (create page, append content) operations are present. However, missing update (edit page), delete (page, section, notebook), and create section/notebook leave notable gaps for full lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Search, read, create and edit your Memol notes from Claude. Team note-taking with AI search.
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to read, search, write, and update Microsoft OneNote pages through the Model Context Protocol.14MIT
- FlicenseAqualityFmaintenanceEnables AI agents to read, create, and analyze Microsoft OneNote notebooks, sections, and pages, including automatic image text extraction via Claude Vision.71-
- AlicenseNot gradedqualityBmaintenanceEnables Claude to search, read, write, and manage a local markdown vault through 8 tools, turning your notes into an AI-accessible knowledge base.3AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceEnables Claude Desktop to create, read, list, and manage local notes stored on the computer using natural language requests.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mhzarem/onenote-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server