mcp notes
An MCP server for managing and persisting notes, offering CRUD operations, note summarization, and resource-based access via a note:// URI scheme.
An MCP server for managing and persisting notes, offering CRUD operations, note summarization, and resource-based access via a note:// URI scheme.
A Model Context Protocol (MCP) server implementation for managing notes with persistent storage.
To install notes for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install notes --client claude
python -m venv .venv
# On Unix/MacOS:
source .venv/bin/activate
# On Windows:
.venvScriptsactivate
pip install MCP
notes/
├── __init__.py # Package initialization
├── server.py # Main server implementation
├── storage.py # Note persistence layer
├── resources.py # Resource handling (note:// URIs)
├── prompts.py # LLM prompt generation
└── tools/ # Server tools
├── __init__.py # Tools package initialization
├── list_tools.py # Tool listing functionality
└── handle_tools.py # Tool handling implementation
add-note
: Create a new notelist-all-notes
: Display all stored notesupdate-note
: Modify an existing notedelete-note
: Remove a noteStart the server:
mcp install src/notes
mcp start Notes
Example operations:
# Create a note
await client.call_tool("add-note", {
"name": "example",
"content": "This is a test note"
})
# List all notes
await client.call_tool("list-all-notes")
# Update a note
await client.call_tool("update-note", {
"name": "example",
"content": "Updated content"
})
# Delete a note
await client.call_tool("delete-note", {
"name": "example"
})
Notes are stored in notes_storage.json
with the following structure:
{
"note_name": {
"content": "Note content",
"created_at": "2025-01-12T11:28:16.721704",
"modified_at": "2025-01-12T11:28:16.721704"
}
}
Notes can be accessed as resources using the note://
URI scheme:
- List resources: Returns all available notes as resources
- Read resource: Access a specific note using note://internal/note_name
The server includes a prompt generation feature for note summarization: - Supports both brief and detailed summaries - Formats notes for language model input - Available via the "summarize-notes" prompt
To modify or extend the server: 1. Clone the repository 2. Install development dependencies 3. Make changes in the appropriate module 4. Test thoroughly before deploying
Tests should cover: - Basic CRUD operations - Multiple note handling - Error cases - Resource access - Prompt generation
[Add your license here]
[
{
"description": "Create a new note",
"inputSchema": {
"properties": {
"content": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"name": "add-note"
},
{
"description": "Read all stored notes",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list-all-notes"
},
{
"description": "Update an existing note",
"inputSchema": {
"properties": {
"content": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"name": "update-note"
},
{
"description": "Delete an existing note",
"inputSchema": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "delete-note"
}
]