MCP Notes
📝 MCP 노트

✨ 개요
MCP Notes Server는 MCP 프로토콜 기반으로 구축된 간단한 노트 작성 애플리케이션입니다. 이 애플리케이션의 목적은 사용자가 AI 모델을 활용하여 개인적인 생각, 메모, 영감, 통찰력 등을 기록하는 동시에 복잡한 노트와 작업을 기록하고 확인할 수 있도록 하는 것입니다. 프로젝트 파일을 생성할 필요가 없으므로, 사용자는 프로젝트 내에서 공개하지 않고도 모든 콘텐츠를 기록할 수 있습니다.
이 프로젝트에는 두 개의 서버가 포함됩니다. AI 기반 노트 관리를 위한 MCP(Model Context Protocol)를 사용하는 Node.js 서버와 노트와 수동으로 상호 작용할 수 있는 사용자 친화적인 인터페이스를 제공하는 웹 서버입니다.
참고: 이 프로젝트는 노트 저장을 위해 DynamoDB가 필요합니다. DynamoDB를 사용하려면 AWS 계정이 필요합니다. AWS는 DynamoDB에 대해 넉넉한 무료 티어를 제공하므로 개인이 무료로 자주 사용하는 데 적합합니다.
Related MCP server: Anki MCP Server
🎯 핵심 기능
🖥️ 듀얼 서버 아키텍처: AI 기반 노트 관리를 위한 MCP 서버와 사용자 인터페이스를 위한 웹 서버
🤖 AI 기반 노트 작성: AI 상호 작용을 통해 생각, 통찰력 및 작업을 기록합니다.
🗂️ 포괄적인 노트 관리: AI 또는 웹 인터페이스를 통해 노트를 생성, 나열, 검색, 업데이트 및 삭제합니다.
📋 안정적인 스토리지: AWS DynamoDB를 통한 안전하고 효율적인 노트 스토리지
🔐 유연한 인증: 연결 문자열 또는 환경 변수를 통한 AWS 자격 증명 지원
📝 프로젝트 독립성: 프로젝트 파일이나 구조에 영향을 주지 않고 개인 메모를 저장하세요
🤖 모델 지원
클라이언트가 MCP를 지원하는 한 함수 호출을 지원하는 모든 모델을 사용할 수 있습니다. 다음 모델들은 테스트를 거쳐 작동이 확인되었습니다.
클로드 3.5 시리즈
제미니 1.5 및 2.0 시리즈
GPT-4 시리즈
미스트랄 라지
그록-2
딥시크 채팅
🛠️ 설치
추천
npx 또는 bunx 로 직접 실행하세요. 아래 예를 참조하세요.
대안
시스템에 Node.js가 설치되어 있는지 확인하세요.
이 저장소를 복제하고
npm install사용하여 종속성을 설치합니다.아래에 표시된 대로 Claude Desktop 또는 기타 도구를 구성하세요.
⚙️ 자격 증명 구성
연결 문자열
지엑스피1
예:
dynamodb://AKIAXXXXXXXX:SKXXXXXXXX@us-east-1/mcp-notes
환경 변수
AWS_ACCESS_KEY_ID및AWS_SECRET_ACCESS_KEY내보냅니다.URI에 자격 증명 없이 연결 정보를 제공합니다:
dynamodb://us-east-1/mcp-notes
🤖 도구와의 통합
클로드 데스크탑
claude_desktop_config.json 에 이 스니펫을 추가하세요:
{
"mcpServers": {
"mcp-notes": {
"command": "npx",
"args": [
"-y",
"-p",
"mcp-notes",
"mcp-notes-server",
"--dynamodb",
"dynamodb://access_key:secret_key@region/table"
]
}
}
}또는 로컬 디스크의 파일:
{
"mcpServers": {
"mcp-notes": {
"command": "node",
"args": [
"file://path/to/notes-mcp-server.js",
"--dynamodb",
"dynamodb://access_key:secret_key@region/table"
]
}
}
}코디
참고: 현재 Cody는 MCP 서버 지원이 제한되어 있습니다.
하나의 서버 연결만 허용하며 도구 호출은 불가능합니다. 메모를 작성하고 관리한 후 AI 채팅 대화에서 참조하려면 웹 인터페이스를 사용해야 합니다.
VS Code 설정에 이 스니펫을 추가하세요.
{
"openctx.providers": {
"https://openctx.org/npm/@openctx/provider-modelcontextprotocol": {
"nodeCommand": "node",
"mcp.provider.uri": "file://path/to/notes-mcp-server.js",
"mcp.provider.args": [
"--dynamodb",
"dynamodb://access_key:secret_key@region/table"
]
}
}
}또는 npx 와 함께 사용하세요(작동이 보장되지는 않음):
{
"openctx.providers": {
"https://openctx.org/npm/@openctx/provider-modelcontextprotocol": {
"nodeCommand": "node",
"mcp.provider.uri": "file:///usr/local/bin/npx",
"mcp.provider.args": [
"-y",
"-p",
"mcp-notes",
"mcp-notes-server",
"--dynamodb",
"dynamodb://access_key:secret_key@region/table"
]
}
}
}클라인
cline_mcp_settings.json 에 이 스니펫을 추가합니다.
"새 작업" 버튼 옆에 "MCP 서버" 아이콘이 있으며, 이 파일을 열려면 "MCP 설정 편집" 버튼이 있습니다.
{
"mcpServers": {
"mcp-notes": {
"command": "npx",
"args": [
"-y",
"-p",
"mcp-notes",
"mcp-notes-server",
"--dynamodb",
"dynamodb://access_key:secret_key@region/table"
]
}
}
}🚀 웹 서버 실행
웹 서버는 메모 관리를 위한 사용자 친화적인 인터페이스를 제공합니다. 웹 인터페이스를 실행하여 메모를 관리하고, AI에 새 메모를 추가하고, AI가 생성한 메모의 일부를 수정할 수 있습니다.
npx -p mcp-notes mcp-notes-web-server --dynamodb "dynamodb://access_key:secret_key@region/table"bun src/notes-web-server.ts --dynamodb "dynamodb://access_key:secret_key@region/table"또는
npm run build로 컴파일하고node dist/notes-mcp-server.js또는node dist/notes-web-server.js실행합니다.
그런 다음 브라우저에서 http://localhost:3100 으로 이동하여 메모를 확인하세요.
🔧 사용 가능한 MCP 도구
목록노트
입력:
{ tags?: string[] }출력: 모든 노트의 배열이며, 선택적으로 태그로 필터링할 수 있습니다.
getNote
입력:
{ id: string }출력: 주어진 ID와 일치하는 단일 노트 객체 또는 일치하는 항목이 없으면 "찾을 수 없음" 메시지가 표시됩니다.
writeNote
입력:
{ id: string, title: string, summary: string, tags: string[], content: string }출력: 성공 확인 메시지.
삭제노트
입력:
{ id: string }출력: 삭제 확인 메시지 🚮.
📝 데이터 구조
메모는 다음 구조를 사용하여 저장됩니다.
id: 메모의 고유 식별자입니다. "meeting-notes-1362"처럼 난수 접미사가 포함된 설명적인 이름이어야 합니다.title: 메모의 제목입니다.summary: 메모 내용에 대한 간략한 요약입니다.tags: 메모와 관련된 태그 배열(예: ["meeting", "project-x"]).content: 노트의 주요 내용입니다.
📸 스크린샷
클로드 데스크탑
✅ 전체 기능


코디
✅ 리소스를 통해 메모 언급
❎ 도구 호출은 지원되지 않습니다.

클라인
✅ 도구 호출을 통한 전체 기능
❓ 리소스가 작동하지 않는 것 같습니다. 도움이 필요합니다.
Available Tools
4 toolsdeleteNoteC
Deletes a specific note by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 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 of behavioral disclosure. It states 'Deletes' which implies a destructive mutation, but lacks details on permissions needed, whether deletion is permanent or reversible, error handling (e.g., invalid ID), or side effects. This leaves significant gaps for a destructive operation.
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 zero wasted words. It is front-loaded with the core action ('Deletes'), making it easy to scan and understand quickly.
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 destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical information such as success/error responses, confirmation prompts, or behavioral nuances (e.g., cascading effects). The schema covers the parameter, but overall context for safe and effective use is insufficient.
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 schema description coverage is 100%, with the parameter 'id' documented as 'ID of the note to delete'. The description adds minimal value beyond this, only reiterating 'by its ID' without providing additional context like ID format or examples. Baseline 3 is appropriate given 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 verb ('Deletes') and resource ('a specific note'), making the purpose unambiguous. It specifies 'by its ID' which helps differentiate it from siblings like 'listNotes' or 'writeNote', though it doesn't explicitly contrast with them in the description text.
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 'writeNote' for updates or 'getNote' for retrieval. It mentions the 'ID' parameter but doesn't explain prerequisites (e.g., note must exist) or exclusions (e.g., cannot delete non-existent notes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNoteB
Retrieves a specific note by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the note to retrieve |
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 states the tool retrieves a note, implying a read-only operation, but doesn't cover aspects like error handling (e.g., what happens if the ID is invalid), authentication needs, rate limits, or return format. This leaves gaps in understanding how the tool behaves beyond the basic action.
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, clear sentence with zero waste—it directly states the tool's purpose without redundancy. It's appropriately sized for a simple retrieval tool and front-loaded with the essential information.
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 output schema, no annotations), the description is minimally adequate. It covers the basic action but lacks details on behavior, usage context, or output, which could be helpful for an agent. It meets the minimum viable standard but has clear gaps in completeness.
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 schema description coverage is 100%, with the parameter 'id' fully documented in the schema as 'ID of the note to retrieve'. The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema does the heavy lifting, the baseline score of 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 action ('Retrieves') and resource ('a specific note by its ID'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like listNotes (which likely lists multiple notes) or deleteNote (which deletes), but the specificity of 'by its ID' implies it's for fetching a single, known 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like listNotes for browsing notes or writeNote for creating/updating, nor does it specify prerequisites (e.g., needing a valid note ID). Usage is implied by the action but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listNotesB
Lists all notes, or search notes with tags you seen in previous list operation.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional tags to filter notes. do not specify this if you didn't certainly sure what tags you want. |
TDQS
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. It mentions the tool can list all notes or search with tags, but fails to describe critical behaviors: whether it's read-only (implied but not stated), how results are returned (e.g., pagination, format), error conditions, or any rate limits. This leaves significant gaps for an agent to understand operational traits.
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 with two clear clauses, front-loading the main purpose ('Lists all notes') and adding a secondary function ('or search notes with tags'). There's no wasted text, though the phrasing 'tags you seen in previous list operation' is slightly awkward but still functional.
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 moderate complexity (list/search functionality), lack of annotations, and no output schema, the description is insufficiently complete. It doesn't explain return values, error handling, or behavioral constraints, leaving the agent with incomplete operational context. This is a significant gap for a tool without structured support.
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 'tags' parameter well-documented in the schema itself. The description adds minimal value beyond the schema by mentioning tags are for filtering and should be used only if certain, but doesn't provide additional context like tag format examples or interaction details. This meets the baseline for high schema coverage.
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: 'Lists all notes, or search notes with tags'. It specifies the verb ('Lists'/'search') and resource ('notes'), making the function understandable. However, it doesn't explicitly differentiate from sibling tools like 'getNote' (which presumably retrieves a single note) or mention scope limitations, preventing a perfect score.
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 some implied guidance: it suggests using tags for filtering based on previous operations ('tags you seen in previous list operation'), which hints at a workflow. However, it lacks explicit instructions on when to use this tool versus alternatives like 'getNote' for single notes or 'writeNote' for creation, and doesn't specify prerequisites or exclusions, leaving usage context incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
writeNoteC
Creates or updates a note with a unique ID suffixed by a random number.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content of the note | |
| id | Yes | Unique identifier of the note, should be unique enough like "a-note-about-python-file-server-design-109". | |
| summary | Yes | Short summary of the note | |
| tags | Yes | Tags of the note | |
| title | Yes | Title of the note, describe what was inside the content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but provides minimal behavioral insight. It mentions the ID includes a random number suffix, hinting at uniqueness, but lacks details on permissions, error handling, or whether updates overwrite or merge. For a mutation tool, this is inadequate disclosure.
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 directly states the tool's function without redundancy. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.
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 mutation tool with 5 required parameters and no annotations or output schema, the description is insufficient. It doesn't explain return values, error conditions, or the implications of 'creates or updates' (e.g., idempotency), leaving significant gaps for agent usage.
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 parameters are well-documented in the schema. The description adds no additional meaning beyond implying ID uniqueness with a random suffix, which is partially covered in the schema. Baseline 3 is appropriate as the schema handles most semantics.
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 ('Creates or updates') and resource ('a note'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'getNote' or 'listNotes', which would require mentioning that this is the primary write operation versus read-only siblings.
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 ID), compare to siblings like 'deleteNote', or specify scenarios for creation versus updates, leaving the agent without contextual usage cues.
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.
4 tool updates
v1.0.0- First observed
deleteNote - First observed
getNote - First observed
listNotes - First observed
writeNote
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: deleteNote removes notes, getNote retrieves single notes, listNotes lists or searches notes, and writeNote creates or updates notes. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern in camelCase (e.g., deleteNote, getNote, listNotes, writeNote). This uniformity enhances readability and predictability across the toolset.
With 4 tools, this server is well-scoped for a notes management system. Each tool serves a distinct CRUD operation (create, read, update, delete), which is appropriate and efficient for the domain without being overly sparse or bloated.
The toolset provides complete CRUD coverage for notes: writeNote handles creation and updates, getNote and listNotes cover retrieval, and deleteNote handles deletion. There are no obvious gaps, enabling agents to perform full lifecycle operations on notes.
Maintenance
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
An MCP server that used to create notes
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA simple MCP server for creating and managing notes with support for summarization functionality.1-
- FlicenseBqualityDmaintenanceA simple note-taking MCP server that stores notes and can generate summaries of stored content.4-
- FlicenseCqualityDmaintenanceA simple note-taking MCP server that allows adding notes and summarizing them via a prompt.2-
- FlicenseBqualityDmaintenanceA simple note storage MCP server that allows adding notes and summarizing them through prompts.2-