sample-notes-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., "@sample-notes-mcp-serveradd a note: buy groceries"
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.
sample-notes-mcp-server
A tiny Model Context Protocol (MCP) server for saving, listing, searching, and deleting text notes — over stdio.
It knows nothing about any particular client. It just speaks MCP over stdio, so any MCP client (Claude Desktop, Claude Code, or your own) can use it. Notes persist as a JSON file on disk.
Install
No install required — run it straight from npm with npx:
npx sample-notes-mcp-serverOr install it globally:
npm install -g sample-notes-mcp-server
sample-notes-mcp-serverRelated MCP server: live2d-mcp
Usage
sample-notes-mcp-server [notes-file]notes-file(optional) — path to the JSON file where notes are stored. Defaults to./notes.jsonin the current working directory. The file is created on first write.
The server communicates over stdio: stdout is reserved for the MCP protocol, so all human-facing logging goes to stderr. You normally don't run it by hand — an MCP client launches it for you (see below).
Tools
Tool | Arguments | Description |
|
| Save a short text note. Returns the new note's id. |
| (none) | List all saved notes. |
|
| Find notes containing |
|
| Delete a saved note by its id. |
Each note is stored as { id, text, createdAt }, where id auto-increments and createdAt is an ISO 8601 timestamp.
MCP client configuration
Add the server to your MCP client's config. Most clients use a JSON block like this:
{
"mcpServers": {
"notes": {
"command": "npx",
"args": ["-y", "sample-notes-mcp-server", "/absolute/path/to/notes.json"]
}
}
}The trailing path argument is optional — omit it to use ./notes.json relative to the client's working directory. Using an absolute path is recommended so your notes land in a predictable place.
Claude Desktop
Add the block above to claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Then restart Claude Desktop.
Claude Code
claude mcp add notes -- npx -y sample-notes-mcp-server /absolute/path/to/notes.jsonDevelopment
npm install # install dependencies
npm run build # compile TypeScript to dist/
npm run start # run the built server
npm run smoke-test # spawn the built server via a real MCP stdio client and exercise every toolThe build uses a two-config split: tsconfig.json drives the editor and typecheck (and covers the smoke test), while tsconfig.build.json excludes the smoke test so it never ships in dist/.
License
MIT — see LICENSE.
Available Tools
4 toolsadd_noteA
Save a short text note for later. Returns the new note's id.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The note text to save. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should bear the full burden. It mentions saving and returning an ID, but lacks details on side effects, constraints, or error 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?
Two sentences, 12 words, front-loaded with action and result. Extremely concise.
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's simplicity (1 param, no output schema), the description adequately covers purpose and return value, though it could mention potential issues like duplicate checking.
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 100%, so parameter description is already covered. The description adds no additional meaning beyond the schema.
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 saves a short text note and returns its ID, distinguishing it from sibling tools like list_notes, search_notes, and delete_note.
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 usage guidance or comparisons to siblings are given, but the purpose is clear enough that an agent can infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_noteA
Delete a saved note by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the note to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It accurately indicates a destructive action, but does not explicitly state whether the deletion is permanent or if any permissions are required. The behavior is implied, but additional clarity would be beneficial.
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 consists of a single, clear sentence that efficiently conveys the tool's purpose without any unnecessary words or fluff.
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 delete operation with one parameter and no output schema, the description is largely adequate. It could be improved by noting irreversibility or confirmation requirements, but it is sufficiently complete for an agent to understand the tool's core function.
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 100% as the only parameter 'id' is described in the schema. The tool description does not add any additional meaning beyond what the schema already provides.
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 'delete', the resource 'saved note', and the method 'by its id'. It distinguishes itself from sibling tools like add_note, list_notes, and search_notes by specifying the destructive operation.
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 implies usage when a note needs to be deleted, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesB
List all saved notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description lacks behavioral details such as whether the operation is read-only, the scope of notes returned, or any pagination/limits.
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, efficient sentence with no wasted words. It is front-loaded and to the point.
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 no output schema, the description should clarify what is returned (e.g., list of note IDs/titles). It does not, leaving the agent without key response expectations.
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 no parameters; schema coverage is 100% by default. The description adds no param-specific details, 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?
The description clearly states the verb 'list' and resource 'notes', distinguishing it from sibling tools like add_note, search_notes, and delete_note.
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 list_notes versus alternatives like search_notes. The agent has no context for choosing this tool over similar ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesA
Find saved notes containing the given text (case-insensitive).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Substring to search for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds case-insensitivity as a behavioral trait not in the schema. However, it does not disclose search scope (title/body), ordering, pagination, or return format. With no annotations, the burden is higher.
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?
Single sentence, no wasted words. Efficiently conveys the essential action and a key behavioral detail.
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 search tool, the description is adequate but lacks output format details (e.g., returns note IDs, full notes) and does not mention ordering or pagination. Could be more 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 has 100% coverage with parameter description 'Substring to search for.' The description adds 'case-insensitive,' which provides important search behavior not in the schema.
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 finds saved notes containing given text, with case-insensitive matching. It distinguishes from siblings: list_notes lists all, add_note adds, delete_note deletes.
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?
Usage is implied by the tool name and description: use when you need to search notes by text. No explicit when-to-use or when-not-to-use guidance, nor mention of alternatives.
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.
4 tool updates
v0.1.0- First observed
add_note - First observed
delete_note - First observed
list_notes - First observed
search_notes
TDQS
Each tool has a clearly distinct purpose (add, list, search, delete) with no overlap.
All tool names follow a consistent verb_noun pattern (add_note, list_notes, search_notes, delete_note).
4 tools is well-scoped for a simple notes application, covering core operations without excess.
Basic CRUD is covered except update; search provides an alternative to get-by-id. Minor gap.
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
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
An MCP server that used to create notes
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA simple MCP server for creating and managing notes with support for summarization functionality.1-
- FlicenseNot gradedqualityNot gradedmaintenanceA simple MCP server that implements a note storage system allowing users to add and summarize notes with customizable detail levels.3-
- FlicenseNot gradedqualityDmaintenanceA minimal MCP server for persistent note-taking, enabling create, update, delete, and search of notes with tags, plus resource-based retrieval of all notes or by title.-
- FlicenseNot gradedqualityDmaintenanceLightweight MCP server for adding, reading, and summarizing sticky notes persisted in a local file.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/hanoak/sample-notes-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server