Notes MCP Server
Click on "Deploy 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., "@Notes MCP Serversearch my notes for 'roadmap'"
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.
Notes MCP Server
A simple MCP (Model Context Protocol) server for saving, listing, and searching notes. Built with the MCP SDK and persists notes to a local JSON file.
Setup
npm installRelated MCP server: tavily-server
Run the server
npm startConnect to Claude Desktop
Edit your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"notes": {
"command": "node",
"args": ["/absolute/path/to/mcpServer/server.js"]
}
}
}Restart Claude Desktop.
Available Tools
Tool | What it does |
| Save a new note with a title and content |
| List all saved notes |
| Search notes by keyword |
Example prompts to use with Claude
Add a note titled "Meeting" with content "Discuss Q3 roadmap on Friday"
List all my notes
Search my notes for "roadmap"Data storage
Notes are saved to ./notes.json — a plain JSON file you can open, edit, or back up any time.
Tech stack
Available Tools
3 toolsadd_noteC
Save a new note
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. 'Save a new note' implies a mutation, but it does not specify side effects, authentication needs, or whether duplicate titles are allowed. This is insufficient for an unannotated 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?
The description is a single, clear sentence with no wasted words. It is appropriately concise for a simple tool, though it could benefit from slight expansion without harming conciseness.
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 create tool with two parameters and no output schema, the description is minimally adequate. However, it lacks information about return values or side effects, which would improve completeness.
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%, and the description adds no meaning beyond the parameter names and types. It does not provide constraints like maximum length or format, which is a significant gap given the low 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 'Save a new note' clearly indicates a create operation, distinguishing it from sibling tools 'list_notes' and 'search_notes'. It uses a specific verb and resource, though it is minimal and could be more detailed.
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 guidance is provided on when to use this tool versus alternatives like 'list_notes' or 'search_notes'. The description lacks any context about prerequisites or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesC
List all notes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states 'List all notes'—no mention of ordering, pagination, rate limits, or side effects. The agent lacks transparency about potential limits or default behavior.
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 and front-loaded, but it essentially restates the tool name with the addition of 'all'. While concise, it does not add significant new information beyond the name.
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 no output schema, so the description should explain the return value format. It does not describe what fields the notes contain, any pagination, or limitations. For a simple list, the description is incomplete.
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 tool has zero parameters, so the input schema is fully covered (100%). Per guidelines, baseline is 4 for 0 params. The description adds no parameter info, which is acceptable given no parameters exist.
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 'List all notes' clearly states the action (list) and the resource (notes). It distinguishes from siblings 'add_note' (creation) and 'search_notes' (likely filtered retrieval). However, it does not elaborate on the scope beyond 'all'.
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 guidance on when to use this tool versus alternatives like 'search_notes'. The description does not mention any filtering or selection criteria, leaving the agent without context for choosing this tool over the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesC
Search notes by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Search notes by keyword' implies a read operation but does not state whether it is read-only, case‑sensitive, or returns partial matches. There is no information about pagination, ordering, or access restrictions, which is a significant gap for a search 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?
The description is a single, front‑loaded sentence with no fluff. It is appropriately concise for a simple search tool. If anything, it is under‑specified rather than verbose, but it earns its place by clearly identifying 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?
Given there is no output schema and no annotations, the description should explain what the tool returns and any relevant behavior. 'Search notes by keyword' does not mention the format of results, error conditions, or any filtering capabilities. For a simple tool it is still incomplete, leaving the agent to guess at the tool's behavior.
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 schema has zero description coverage for the 'query' parameter. The description adds the word 'keyword' but that is largely synonymous with 'query'. It does not clarify whether the search is substring, full‑text, exact match, or case‑insensitive. For a single required parameter, more detail was needed to compensate for the missing schema 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?
The description uses a specific verb 'Search' with a resource 'notes' and a modifier 'by keyword', clearly distinguishing it from the sibling tool 'add_note' which creates notes. However, it lacks additional context about scope or behavior, making it clear but not exceptionally rich.
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 guidance is provided about when to use this tool versus alternatives. The description does not mention the sibling tool 'add_note' or any exclusions. It merely states what it does, implying usage without explicit direction.
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.
3 tool updates
v1.0.0- First observed
add_note - First observed
list_notes - First observed
search_notes
TDQS
Scored across 3 tools
Each tool targets a distinct action: adding, listing, and searching notes. No overlap in purpose.
All tool names follow a consistent verb_noun pattern using snake_case (add_note, list_notes, search_notes).
Three tools is on the low side for a note-taking server, but it covers basic operations. Could be considered minimal but not extreme.
Missing update and delete operations, which are standard for notes. The tool surface is incomplete for full lifecycle management.
Maintenance
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
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…
Related MCP Servers
- AlicenseCqualityDmaintenanceA Model Context Protocol server that implements a simple notes system, allowing users to create, list, and summarize text notes.32 npmISC
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that implements a simple notes system with resources for notes, a tool to create notes, and prompts to summarize notes.1-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for managing text notes, with resources (note:// URIs), tools (create_note), and prompts (summarize_notes).-
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol (MCP) server that gives Claude a persistent personal notebook. Notes are stored on disk as JSON, so they survive restarts and are shared across every tool and resource.-