OneNote MCP Server
Supports converting markdown content to HTML when creating or updating OneNote pages, allowing for easier content formatting.
Enables AI language models to interact with Microsoft OneNote data through the Microsoft Graph API, providing tools for reading, writing, searching, and editing notebooks, sections, and pages.
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 planning meeting minutes from last week"
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
The OneNote MCP Server is a powerful Model Context Protocol (MCP) server that enables AI language models (LLMs) like Claude, and other AI assistants, to securely interact with your Microsoft OneNote data. It allows for reading, writing, searching, and comprehensive editing of your OneNote notebooks, sections, and pages directly through your AI interface.
This server provides a rich set of tools for advanced OneNote management, including robust text extraction, HTML content processing, and fine-grained page manipulation.
Features
Authentication: Secure device code flow for Microsoft Graph API access.
Read Operations:
List notebooks, sections, and pages.
Search pages by title.
Get page content in various formats (full HTML, readable text, summary).
Write & Edit Operations:
Create new OneNote pages with custom HTML or markdown content.
Update entire page content, preserving or replacing the title.
Append content to existing pages with optional timestamps and separators.
Update page titles.
Find and replace text within pages (case-sensitive or insensitive).
Add formatted notes (like callouts or todos) to pages.
Insert structured tables into pages from CSV data.
Advanced Content Processing:
Sophisticated HTML to readable text extraction.
Markdown-to-HTML conversion for page content.
Robust Input Validation: Uses Zod for defining and validating tool input schemas.
Related MCP server: Evernote MCP Server
Prerequisites
Node.js: Version 18.x or later is recommended. (Install from nodejs.org)
npm: Usually comes bundled with Node.js.
Git: For cloning the repository. (Install from git-scm.com)
Microsoft Account: An active Microsoft account with access to OneNote.
Azure Application Registration (Recommended for Production/Shared Use):
While the server defaults to using the Microsoft Graph Explorer's public Client ID for easy testing, for regular or shared use, it is strongly recommended to create your own Azure App Registration.
Ensure your app registration has the following delegated Microsoft Graph API permissions:
Notes.Read,Notes.ReadWrite,Notes.Create,User.Read.You will need the "Application (client) ID" from your app registration.
Installation
Clone the Repository:
git clone https://github.com/[your-github-username]/onenote-ultimate-mcp-server.git cd onenote-ultimate-mcp-server(Replace
[your-github-username]/onenote-ultimate-mcp-serverwith your actual repository URL)Install Dependencies:
npm install
Configuration
Azure Client ID: This server requires an Azure Application Client ID to authenticate with Microsoft Graph.
Recommended for Production/Shared Use: Set the
AZURE_CLIENT_IDenvironment variable to your own Azure App's "Application (client) ID".export AZURE_CLIENT_ID="your-actual-azure-app-client-id"(On Windows, use
set AZURE_CLIENT_ID=your-actual-azure-app-client-id)For Quick Testing: If the
AZURE_CLIENT_IDenvironment variable is not set, the server will default to using the Microsoft Graph Explorer's public Client ID. This is suitable for initial testing but not recommended for prolonged or shared use.Alternatively, you can modify the
clientIdvariable directly inonenote-mcp.mjs, but using an environment variable is preferred.
.gitignore: The project includes a.gitignorefile. Ensure it contains at least the following to prevent committing sensitive files:node_modules/ .DS_Store *.log .access-token.txt .envThe
.access-token.txtfile will be created by the server to store your authentication token.
Running the MCP Server
Once configured, start the server from the project's root directory:
node onenote-mcp.mjsYou should see console output indicating the server has started and listing the available tool categories.
Connecting to an MCP Client
You can connect this server to any MCP-compatible client, such as Claude Desktop or Cursor.
Example for Claude Desktop or Cursor:
Open your MCP client's configuration file.
Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.jsonClaude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.jsonCursor: Preferences -> MCP tab.
Add or update the
mcpServersconfiguration:{ "mcpServers": { "onenote": { "command": "node", "args": ["/full/path/to/your/onenote-ultimate-mcp-server/onenote-mcp.mjs"], "env": { // Recommended: Set AZURE_CLIENT_ID here if not set globally "AZURE_CLIENT_ID": "YOUR_AZURE_APP_CLIENT_ID_HERE" } } } }Replace
/full/path/to/your/onenote-ultimate-mcp-server/with the absolute path to where you cloned the repository.Replace
YOUR_AZURE_APP_CLIENT_ID_HEREwith your Azure App's Client ID, especially if you are not setting it as a system-wide environment variable.
Restart your MCP client (Claude Desktop/Cursor).
Authentication Flow
The first time you try to use a OneNote tool through your AI assistant, or by explicitly invoking the authenticate tool:
Invoke
authenticateTool: Your AI assistant will call theauthenticatetool on the server.Device Code Prompt: The server will output a URL (typically
https://microsoft.com/devicelogin) and a user code to itsstderr. Your MCP client (e.g., Claude Desktop) should display this information to you.Browser Authentication: Open the provided URL in a web browser and enter the user code.
Sign In & Grant Permissions: Sign in with your Microsoft account that has OneNote access and grant the requested permissions.
Token Saved: Upon successful browser authentication, the server will automatically receive and save the access token to an
.access-token.txtfile in its directory.Verify (Optional but Recommended): Invoke the
saveAccessTokentool through your AI assistant. This tool doesn't actually save (as it's already saved by the background process) but rather loads and verifies the token, confirming successful authentication and displaying your account info.
The saved token will be used for subsequent sessions until it expires, at which point you may need to re-authenticate.
Available MCP Tools
This server exposes the following tools to your AI assistant:
Authentication:
authenticate: Initiates the device code authentication flow with Microsoft Graph.saveAccessToken: Loads and verifies the locally saved access token.
Reading OneNote Data:
listNotebooks: Lists all your OneNote notebooks.searchPages: Searches for pages by title across all notebooks. (Arg:query(optional string))getPageContent: Retrieves the content of a specific OneNote page. (Args:pageId(string),format(enum: "text", "html", "summary", optional, default: "text"))getPageByTitle: Finds a page by its title and retrieves its content. (Args:title(string),format(enum: "text", "html", "summary", optional, default: "text"))
Editing & Creating OneNote Pages:
createPage: Creates a new OneNote page in the first available section. (Args:title(string),content(string - HTML or markdown))updatePageContent: Replaces the entire content of an existing page. (Args:pageId(string),content(string),preserveTitle(boolean, optional, default: true))appendToPage: Adds new content to the end of an existing page. (Args:pageId(string),content(string),addTimestamp(boolean, optional, default: true),addSeparator(boolean, optional, default: true))updatePageTitle: Changes the title of an existing page. (Args:pageId(string),newTitle(string))replaceTextInPage: Finds and replaces text within a page. (Args:pageId(string),findText(string),replaceText(string),caseSensitive(boolean, optional, default: false))addNoteToPage: Adds a formatted, timestamped note/comment to a page. (Args:pageId(string),note(string),noteType(enum: "note", "todo", "important", "question", optional, default: "note"),position(enum: "top", "bottom", optional, default: "bottom"))addTableToPage: Adds a formatted table to a page from CSV data. (Args:pageId(string),tableData(string - CSV),title(string, optional),position(enum: "top", "bottom", optional, default: "bottom"))
Example Interactions with AI
Once connected and authenticated, you can ask your AI assistant to perform tasks like:
"List my OneNote notebooks."
"Create a new OneNote page titled 'Meeting Ideas' with the content 'Brainstorm new marketing strategies'."
"Can you find my OneNote page about 'Project Phoenix' and tell me its summary?"
"Append 'Follow up with John Doe' to the OneNote page with ID 'your-page-id-here'."
"In my OneNote page 'Recipe Ideas', replace all instances of 'sugar' with 'sweetener'."
Troubleshooting
Authentication Issues:
Ensure your
AZURE_CLIENT_ID(if set) is correct and has the required API permissions.If the device code flow fails, try in a different browser or an incognito/private window.
Token expiry: If tools stop working, you may need to re-run the
authenticatetool.
Server Not Starting:
Check Node.js version (
node -v).Ensure all dependencies are installed (
npm install).
MCP Client Issues (e.g., Claude Desktop, Cursor):
Verify the
commandandargs(especially the absolute path toonenote-mcp.mjs) in your client's MCP server configuration are correct.Restart the MCP client after making configuration changes.
Check the MCP client's logs and the server's console output for errors.
Security Notes
Access Token Security: The
.access-token.txtfile contains a token that grants access to your OneNote data according to the defined scopes. Protect this file as you would any sensitive credential. Ensure it is included in your.gitignorefile.Azure Client ID: If you create your own Azure App Registration, keep its client secret (if any generated for other flows) secure. For this device code flow, a client secret is not used by this script.
Permissions: This server requests
Notes.ReadWriteandNotes.Createpermissions. Be aware of the access you are granting.
Acknowledgements
This project was developed with inspiration and by adapting patterns from the following open-source projects:
onenote-mcp by danosb: This project served as an early inspiration and provided reference for structuring a OneNote MCP server, particularly for initial concepts around authentication and basic OneNote operations.
azure-onenote-mcp-server by Zubeid Hendricks: The core authentication flow using Device Code Credentials, token storage/retrieval strategy, and foundational patterns for wrapping Microsoft Graph API calls for OneNote (such as listing entities and creating pages) as MCP tools were significantly informed by or adapted from this project. This project is licensed under the MIT License.
The extensive set of editing tools, advanced text extraction and HTML processing utilities, Zod schema integration, and the overall refined structure of this server are original contributions.
Development of this server was also assisted by AI language models, including Anthropic's Claude and Google's Gemini, for tasks such as code generation, refactoring, debugging, and documentation.
We are grateful to the authors of the referenced projects and the developers of the AI tools for their contributions to the open-source and development communities.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
13 toolsaddNoteToPageD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to add a note to. | |
| note | Yes | The note/comment content. | |
| noteType | No | Type of note (note, todo, important, question). | note |
| position | No | Position to add the note (top or bottom). | bottom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
addTableToPageD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to add a table to. | |
| tableData | Yes | Table data in CSV format (header row, then data rows). | |
| title | No | Optional title for the table. | |
| position | No | Position to add the table (top or bottom). | bottom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appendToPageD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to append content to. | |
| content | Yes | Content to append (HTML or markdown-style). | |
| addTimestamp | No | Add a timestamp (default: true). | |
| addSeparator | No | Add a visual separator (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authenticateD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPageD
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title for the new page. | |
| content | Yes | The content for the new page (HTML or markdown-style). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPageByTitleD
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title (or partial title) of the page to find. | |
| format | No | Format of the content: text, html, or summary. | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPageContentD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to retrieve content from. | |
| format | No | Format of the content: text (readable), html (raw), or summary (brief). | text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listNotebooksD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replaceTextInPageD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to modify. | |
| findText | Yes | The text to find and replace. | |
| replaceText | Yes | The text to replace with. | |
| caseSensitive | No | Case-sensitive search (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveAccessTokenD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchPagesD
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | The search term for page titles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updatePageContentD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page to update. | |
| content | Yes | New page content (HTML or markdown-style text). | |
| preserveTitle | No | Keep the original title (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updatePageTitleD
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The ID of the page whose title is to be updated. | |
| newTitle | Yes | The new title for the page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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?
Tool has no description.
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.
3 tool updates
v1.0.0- Changed
authenticate1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
listNotebooks1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
saveAccessToken1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
13 tool updates
- First observed
addNoteToPage - First observed
addTableToPage - First observed
appendToPage - First observed
authenticate - First observed
createPage - First observed
getPageByTitle - First observed
getPageContent - First observed
listNotebooks - First observed
replaceTextInPage - First observed
saveAccessToken - First observed
searchPages - First observed
updatePageContent - First observed
updatePageTitle
TDQS
Each tool has a clearly distinct purpose targeting specific OneNote operations like listing notebooks, creating pages, or modifying content. There is no overlap or ambiguity between tools like 'createPage', 'updatePageContent', and 'replaceTextInPage' as they handle different aspects of page management.
All tool names follow a consistent verb_noun pattern with clear, descriptive actions (e.g., 'listNotebooks', 'createPage', 'updatePageTitle'). The naming is uniform throughout, using camelCase consistently without any deviations or mixed conventions.
With 13 tools, this server is well-scoped for managing OneNote operations, covering authentication, notebook listing, page creation, content updates, and search. Each tool serves a distinct function, and the count is appropriate for the domain without being excessive or insufficient.
The toolset provides comprehensive coverage for core OneNote workflows, including CRUD operations for pages and notebooks, content manipulation, and search. Minor gaps might include operations like deleting pages or managing sections, but agents can likely work around these with the available tools.
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
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.43119MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants like Claude to interact with Evernote, enabling them to create, search, read, and manage notes through natural language.4-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to read, search, write, and update Microsoft OneNote pages through the Model Context Protocol.25MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that lets AI assistants read and edit OneNote pages on Windows via COM automation, without cloud authentication.1MIT
Appeared in Searches
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/eshlon/onenotemcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server