Skip to main content
Glama
znehraks

MCP Notepad Server

by znehraks

MCP 메모장 서버 - 학습용 예제

MCP(Model Context Protocol)의 핵심 기능을 학습하기 위한 간단한 메모장 서버입니다.

📚 학습 목표

이 예제를 통해 다음을 배울 수 있습니다:

기능

설명

파일

Tools

AI가 실행할 수 있는 액션 정의

src/tools/noteTools.ts

Resources

AI가 읽을 수 있는 데이터 제공

src/resources/noteResources.ts

Prompts

재사용 가능한 프롬프트 템플릿

src/prompts/notePrompts.ts

🚀 빠른 시작

1. 의존성 설치

cd mcp-notes-server
npm install

2. 빌드

npm run build

3. 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 (도구)

도구명

설명

입력

create_note

새 메모 생성

title, content, tags?

update_note

메모 수정

id, title?, content?, tags?

delete_note

메모 삭제

id

search_notes

메모 검색

keyword

Resources (리소스)

URI

설명

notes://list

전체 메모 목록

notes://note/{id}

특정 메모 조회

Prompts (프롬프트)

이름

설명

인자

summarize_note

메모 요약

noteId, style?

extract_tags

태그 추출

noteId, maxTags?

organize_notes

정리 제안

-

🗂 프로젝트 구조

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

📖 다음 단계

  1. 파일 영속화: noteStore.ts를 수정하여 JSON 파일로 저장

  2. 추가 리소스: 태그별, 날짜별 필터링 추가

  3. SSE 전송: HTTP 기반 전송으로 변경해보기

📚 참고 자료

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Latest Blog Posts

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