MCP Notepad 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., "@MCP Notepad Servercreate a note titled 'Meeting Notes' with the content 'Discuss project timeline and assign tasks'"
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 메모장 서버 - 학습용 예제
MCP(Model Context Protocol)의 핵심 기능을 학습하기 위한 간단한 메모장 서버입니다.
📚 학습 목표
이 예제를 통해 다음을 배울 수 있습니다:
기능 | 설명 | 파일 |
Tools | AI가 실행할 수 있는 액션 정의 |
|
Resources | AI가 읽을 수 있는 데이터 제공 |
|
Prompts | 재사용 가능한 프롬프트 템플릿 |
|
Related MCP server: mcp-starter
🚀 빠른 시작
1. 의존성 설치
cd mcp-notes-server
npm install2. 빌드
npm run build3. Claude Desktop에 등록
~/Library/Application Support/Claude/claude_desktop_config.json 파일에 추가:
{
"mcpServers": {
"mcp-notes": {
"command": "node",
"args": ["/절대경로/mcp-notes-server/dist/index.js"]
}
}
}4. Claude Desktop 재시작
📦 제공 기능
Tools (도구)
도구명 | 설명 | 입력 |
| 새 메모 생성 | title, content, tags? |
| 메모 수정 | id, title?, content?, tags? |
| 메모 삭제 | id |
| 메모 검색 | keyword |
Resources (리소스)
URI | 설명 |
| 전체 메모 목록 |
| 특정 메모 조회 |
Prompts (프롬프트)
이름 | 설명 | 인자 |
| 메모 요약 | noteId, style? |
| 태그 추출 | noteId, maxTags? |
| 정리 제안 | - |
🗂 프로젝트 구조
mcp-notes-server/
├── src/
│ ├── index.ts # 진입점, 서버 설정
│ ├── store/
│ │ └── noteStore.ts # 인메모리 메모 저장소
│ ├── tools/
│ │ └── noteTools.ts # Tool 정의 및 핸들러
│ ├── resources/
│ │ └── noteResources.ts # Resource 정의 및 핸들러
│ └── prompts/
│ └── notePrompts.ts # Prompt 정의 및 핸들러
├── package.json
└── tsconfig.json💡 핵심 개념 정리
1. Tool
// 정의
{
name: "create_note",
description: "새 메모 생성",
inputSchema: {
type: "object",
properties: {
title: { type: "string" },
content: { type: "string" }
},
required: ["title", "content"]
}
}
// 핸들러
server.setRequestHandler(CallToolRequestSchema, async (request) => {
// 도구 실행 로직
});2. Resource
// 정의
{
uri: "notes://list",
name: "메모 목록",
mimeType: "application/json"
}
// 핸들러
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
// 리소스 읽기 로직
});3. Prompt
// 정의
{
name: "summarize_note",
description: "메모 요약",
arguments: [
{ name: "noteId", required: true }
]
}
// 핸들러
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
return {
messages: [
{ role: "user", content: { type: "text", text: "..." } }
]
};
});🔧 개발 팁
디버깅
stderr로 로그 출력 (stdout은 MCP 통신에 사용):
console.error("[Debug] 메시지");감시 모드 개발
npm run dev # tsc --watch📖 다음 단계
파일 영속화:
noteStore.ts를 수정하여 JSON 파일로 저장추가 리소스: 태그별, 날짜별 필터링 추가
SSE 전송: HTTP 기반 전송으로 변경해보기
📚 참고 자료
Available Tools
4 toolscreate_note메모 생성C
새로운 메모를 생성합니다. 제목과 내용을 입력받고, 선택적으로 태그를 추가할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | 메모 제목 | |
| content | Yes | 메모 내용 | |
| tags | No | 메모에 붙일 태그 목록 (선택) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| message | Yes | |
| success | 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 it creates a new note, implying a write operation, but doesn't disclose behavioral traits like permissions needed, whether creation is idempotent, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.
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 concise and front-loaded with the main purpose in the first sentence. It efficiently covers the core functionality without unnecessary details, though it could be slightly more structured to separate purpose from parameter hints.
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 has an output schema (which handles return values), 100% schema coverage, and no annotations, the description is minimally adequate. However, as a mutation tool, it lacks context on behavioral aspects like error handling or side effects, making it incomplete for safe agent use without additional assumptions.
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%, so the schema already documents all parameters (title, content, tags). The description adds minimal value by mentioning optional tags, but doesn't provide additional semantics beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
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's purpose: '새로운 메모를 생성합니다' (creates a new note) with specific resources (title, content, optional tags). It distinguishes from siblings like delete_note, search_notes, and update_note by focusing on creation, but doesn't explicitly differentiate beyond the basic verb.
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 update_note or search_notes. The description mentions optional tags but doesn't provide context about prerequisites, constraints, or typical use cases, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_note메모 삭제C
메모를 삭제합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 삭제할 메모의 ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| success | 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 the tool deletes a note, implying a destructive mutation, but doesn't disclose behavioral traits like whether deletion is permanent, requires specific permissions, has side effects (e.g., cascading deletions), or provides confirmation. For a destructive tool with zero annotation coverage, this is a significant gap in transparency.
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 in Korean with zero wasted words. It's appropriately sized for a simple tool and front-loaded with the core action. Every part of the sentence directly contributes to stating 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 the tool's destructive nature, lack of annotations, and presence of an output schema (which might cover return values), the description is incomplete. It doesn't address key contextual aspects like safety warnings, usage conditions, or behavioral details. For a delete operation with no annotation support, more information is needed to adequately guide an agent.
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 input schema has 100% description coverage, with the 'id' parameter clearly documented as '삭제할 메모의 ID' (ID of the note to delete). The description adds no additional meaning beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
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 '메모를 삭제합니다' (Deletes a note) is a tautology that restates the tool name 'delete_note' in Korean. It specifies the verb (delete) and resource (note) but doesn't differentiate from sibling tools like 'update_note' or 'create_note' beyond the obvious action. The purpose is clear but lacks any distinguishing detail beyond the name itself.
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. It doesn't mention prerequisites (e.g., needing an existing note ID), exclusions, or comparisons to siblings like 'update_note' for modifications. The description offers no context for usage decisions.
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 | 검색 키워드 |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| keyword | Yes | |
| results | Yes | |
| success | 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 of behavioral disclosure. It mentions the search scope (title, content, tags) but doesn't describe other behavioral traits like pagination, sorting, case sensitivity, error handling, or rate limits. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond basic functionality.
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 highly concise and front-loaded, consisting of two sentences that directly state the tool's purpose and search scope. Every sentence earns its place by adding value—the first defines the action, and the second clarifies the fields searched. There is no wasted verbiage or redundancy.
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 low complexity (single parameter, no nested objects), 100% schema coverage, and the presence of an output schema (which means return values needn't be explained in the description), the description is reasonably complete. It covers the basic purpose and search scope. However, it lacks details on behavioral aspects like pagination or error handling, which could be relevant for a search tool, preventing a score of 5.
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 description adds minimal semantic context beyond the input schema. It states that the keyword is used to search across title, content, and tags, which slightly elaborates on the schema's '검색 키워드' (search keyword) description. However, with 100% schema description coverage, the schema already documents the parameter adequately. The description doesn't provide additional syntax, format, or constraints, so it meets the baseline of 3.
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's purpose: '키워드로 메모를 검색합니다' (search notes by keyword), which is a specific verb+resource combination. It distinguishes from siblings like create_note, delete_note, and update_note by focusing on search rather than mutation operations. However, it doesn't explicitly differentiate from potential alternative search tools (none listed), so it's not a perfect 5.
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 context by stating '제목, 내용, 태그에서 검색합니다' (search in title, content, tags), which suggests when to use this tool—for keyword-based searches across multiple fields. However, it doesn't provide explicit guidance on when to use this vs. alternatives (no alternatives listed) or any exclusions. The usage is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_note메모 수정C
기존 메모를 수정합니다. 제목, 내용, 태그를 변경할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 수정할 메모의 ID | |
| title | No | 새로운 제목 (선택) | |
| content | No | 새로운 내용 (선택) | |
| tags | No | 새로운 태그 목록 (선택) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| message | No | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a modification tool but doesn't cover important aspects: whether it requires specific permissions, if changes are reversible, what happens to unspecified fields (partial vs. full updates), error handling, or response format. '수정합니다' implies mutation, but lacks safety or operational context.
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 that gets straight to the point. It's appropriately sized for a simple update tool, though it could be slightly more structured (e.g., separating purpose from capabilities). No wasted words or redundancy.
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 this is a mutation tool with no annotations but with a complete input schema (100% coverage) and an output schema (per context signals), the description is minimally adequate. It covers the basic purpose and modifiable fields, but lacks crucial behavioral context for a write operation. The output schema reduces the need to describe return values, but permission requirements, error cases, and update semantics remain undocumented.
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%, so the schema fully documents all 4 parameters (id, title, content, tags) with descriptions and optionality. The description adds minimal value by listing the modifiable fields ('제목, 내용, 태그' - title, content, tags), but doesn't provide additional syntax, constraints, or examples beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('수정합니다' - modifies/updates) and resource ('기존 메모' - existing note), making the purpose immediately understandable. It distinguishes from 'create_note' by specifying it works on existing notes, though it doesn't explicitly differentiate from 'delete_note' or 'search_notes' beyond the action verb.
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 provides no guidance on when to use this tool versus alternatives like 'create_note', 'delete_note', or 'search_notes'. It doesn't mention prerequisites (e.g., needing a note ID), error conditions, or typical use cases. The agent must infer usage from the tool name and sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: create_note for creation, delete_note for deletion, search_notes for searching, and update_note for modification. There is no overlap in functionality, making it easy for an agent to select the correct tool without confusion.
All tool names follow a consistent verb_noun pattern (e.g., create_note, delete_note, search_notes, update_note). The naming is uniform and predictable, with no deviations in style or convention.
With 4 tools, this server is well-scoped for a notepad application, covering essential CRUD operations (create, read via search, update, delete). Each tool earns its place without being excessive or insufficient for the domain.
The tool set provides complete CRUD coverage for the notepad domain: create_note for creation, search_notes for reading/retrieval, update_note for updates, and delete_note for deletion. There are no obvious gaps, ensuring agents can handle full note lifecycle management.
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.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
An MCP server that used to create notes
Related MCP Servers
- FlicenseBqualityDmaintenanceA TypeScript-based MCP server that enables AI assistants to create, search, list, and delete notes with tags. Serves as a starter template for building custom MCP servers with tools and resources.1
- FlicenseAqualityDmaintenanceA minimal MCP server demonstrating tools, resources, and prompts for managing notes, with a simple notes app that supports adding, listing, deleting notes and summarizing them.31
- FlicenseNot gradedqualityDmaintenanceA simple notes MCP server that enables creating, listing, and summarizing text notes via resources, tools, and prompts.
- AlicenseNot gradedqualityCmaintenanceA working MCP server template for notes management (add, get, search, delete) with in-memory store, demonstrating tools, resources, and prompts for easy forking and customization.MIT
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/znehraks/mcp-poc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server