mcp-server-sample
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., "@mcp-server-sample「会議の議事録をマークダウンで保存して」とメモして"
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.
mcp-server-sample — Minimal MCP Server for Saving and Searching Notes
A minimal MCP server that only saves and searches notes. It does not connect to any external systems.
The only storage is a single notes.json file in the same folder.
It includes one of each of the three MCP primitives.
Primitive | Decided by | Contents in this server |
Tools | Model decides |
|
Resources | AI app fetches and passes |
|
Prompts | User explicitly selects |
|
Requirements
Node.js 24 or higher (LTS. Check with
node --version)git
Related MCP server: Notes MCP Server
Setup
git clone https://github.com/utakatano/mcp-server-sample.git
cd mcp-server-sample
npm installOnce npm install completes successfully, you are ready. Do not start it at this point.
The MCP server is started by the AI app, so you do not need to run it manually from the terminal.
Connect to the AI App
Claude Code
claude mcp add notes -- node /絶対パス/mcp-server-sample/index.jsIf claude mcp list shows ✔ Connected, it is connected.
Claude Desktop
Go to Settings → Developer → "Edit Config" to open claude_desktop_config.json and add the following.
{
"mcpServers": {
"notes": {
"command": "node",
"args": ["/絶対パス/mcp-server-sample/index.js"]
}
}
}After saving, fully quit Claude Desktop and restart it (closing the window alone is not enough).
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Verification
「来週までにネットワーク構成を確認する」とメモして「ネットワーク」を含むメモを探してYou can confirm that notes.json is created and its contents increase.
Changing the Storage Location
Pass an absolute path to the environment variable NOTES_FILE to change the storage location.
{
"mcpServers": {
"notes": {
"command": "node",
"args": ["/絶対パス/mcp-server-sample/index.js"],
"env": { "NOTES_FILE": "/絶対パス/my-notes.json" }
}
}
}When It Does Not Connect
First, check the log. The cause is usually there.
tail -20 ~/Library/Logs/Claude/mcp-server-notes.log # macOS
# Windows: %APPDATA%\Claude\logs\mcp-server-notes.logLook to see if there are any errors after Server started and connected successfully.
What appears in the log | Cause | Remedy |
| The path in | Run |
| The AI app cannot find | Write the output of |
| Dependencies are not installed | Run |
Log is empty or not updating | The configuration is not loaded | Check JSON syntax (commas, brackets) and fully quit Claude Desktop (macOS: ⌘Q) before restarting |
To determine whether the issue is on the server side or the AI app side, it is fastest to run the server directly from your terminal.
printf '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}\n' \
| node /絶対パス/mcp-server-sample/index.jsIf a JSON containing add_note and search_notes is returned, the server is working correctly. In that case, suspect the AI app's configuration (path, JSON formatting, restart).
Supply Chain Countermeasures
Settings to guard against npm package hijacking are included in .npmrc. They take effect every time npm install / npm ci is run.
Setting | What it does |
| Does not execute lifecycle scripts (e.g., |
|
|
| Only installs versions published more than 7 days ago. npm converts this to |
Dependencies are fully pinned in package.json (@modelcontextprotocol/server is 2.0.0, zod is 4.4.3),
and recorded with integrity hashes in package-lock.json.
To install exactly as specified in the lock file, use npm ci instead of npm install.
When updating dependencies, upgrade them one at a time intentionally.
npm outdated
npm install @modelcontextprotocol/server@2.1.0 # save-exact により完全固定で書かれる
npm ls --all # 増えた依存を目で確認するLicense
MIT
Available Tools
2 toolsadd_noteメモを追加するA
メモを1件保存する。打ち合わせの決定事項や、あとで思い出したいことを記録するときに使う。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 分類用のタグ(任意) | |
| text | 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 '保存する' which implies mutation, but it does not disclose potential side effects, permissions, or behavior on duplicates. For a simple create operation, this is minimally adequate.
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, front-loaded with the essential action. No wasted 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 simple tool with 2 parameters, no output schema, and no annotations, the description is fairly complete. It explains the primary use case and differentiates from the sibling. It could mention the return value but is not required.
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 100% with both parameters described. The tool's description adds no new information about the parameters; it only restates the purpose. Baseline 3 is appropriate.
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 '保存する' (save) and resource 'メモ' (note), and it is distinct from the sibling tool 'search_notes' which is for retrieval.
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?
It provides explicit context for when to use: '打ち合わせの決定事項や、あとで思い出したいことを記録するときに使う' (use when recording meeting decisions or things you want to remember later). It does not explicitly exclude other scenarios, but the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesメモを検索するB
保存済みのメモをキーワードで検索する。本文とタグの両方を対象にする。
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | 検索キーワード |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states search targets both body text and tags, but lacks details on whether searches are case-sensitive, support partial matches, or have rate limits. It does not mention return format or pagination. The description adds modest value but is insufficient for a tool lacking annotations.
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 sentence with no wasted words. It is concise and front-loaded with the action and target, then expands on scope. Every phrase adds value.
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 is simple (1 parameter, no output schema, no nested objects), the description is minimally adequate. It covers the search target and scope. However, it omits any mention of results behavior (e.g., whether it returns full notes or summaries) and does not compensate for missing annotations, but the low complexity reduces the burden.
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% with one parameter 'keyword'. The description adds meaningful context by specifying that keyword searches both body and tags, which the schema description ('検索キーワード') does not convey. This enriches the semantic understanding beyond the schema alone.
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 specifies the action (検索する), the target (保存済みのメモ), and the search scope (本文とタグの両方). It distinguishes from add_note, which creates notes. However, it does not explicitly contrast the two, leaving a slight gap in sibling differentiation.
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 for keyword search but gives no guidance on when to use this vs. add_note, nor does it mention any context or prerequisites for searching. No exclusion criteria or alternative scenarios are provided.
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.
2 tool updates
v1.0.0- First observed
add_note - First observed
search_notes
TDQS
The two tools have completely distinct purposes: one creates/ stores a note, the other retrieves notes via search. There is no overlap or ambiguity between writing and searching.
Both tool names follow a consistent verb_noun pattern (add_note, search_notes) using lowercase with underscores. The naming is predictable and clear.
With only 2 tools, the set feels minimal. While the tools cover basic create and read/search operations, the server's purpose (saving and retrieving notes) could reasonably include more tools (e.g., update, delete, list tags) to avoid being overly thin.
The domain is a personal note-taking system, but only add and search operations are provided. Missing critical operations like update, delete, and get all notes (without search) create significant gaps that would frustrate or block a typical agent workflow.
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.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceA simple notes system that allows creating, storing, and accessing text notes through MCP resources and tools, with built-in prompt support for generating summaries of stored notes.-
- FlicenseBqualityDmaintenanceA simple server for saving, listing, and searching notes persisted to a local JSON file. It enables users to manage their personal notes using natural language via the Model Context Protocol.3-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for managing text notes, with resources (note:// URIs), tools (create_note), and prompts (summarize_notes).-
- FlicenseNot gradedqualityDmaintenanceA simple notes MCP server that enables creating, listing, and summarizing text notes via resources, tools, and prompts.-
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/utakatano/mcp-server-sample'
If you have feedback or need assistance with the MCP directory API, please join our Discord server