Skip to main content
Glama
prem2230
by prem2230

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 install

Related MCP server: tavily-server

Run the server

npm start

Connect to Claude Desktop

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %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

add_note

Save a new note with a title and content

list_notes

List all saved notes

search_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

  • MCP SDK @modelcontextprotocol/sdk

  • Zod for input validation

  • Node.js ESM ("type": "module")

Available Tools

3 tools
add_noteC

Save a new note

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
contentYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv1.0.0
    • First observedadd_note
    • First observedlist_notes
    • First observedsearch_notes

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct action: adding, listing, and searching notes. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (add_note, list_notes, search_notes).

Tool Count3/5

Three tools is on the low side for a note-taking server, but it covers basic operations. Could be considered minimal but not extreme.

Completeness2/5

Missing update and delete operations, which are standard for notes. The tool surface is incomplete for full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for managing text notes, with resources (note:// URIs), tools (create_note), and prompts (summarize_notes).
    -
  • F
    license
    Not graded
    quality
    F
    maintenance
    A 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.
    -