iflow-mcp_notes 0.1.0
Read and write notes.
Requires Python: >=3.10

# MCP Notes Server
[![smithery badge](https://smithery.ai/badge/notes)](https://smithery.ai/server/notes)

A Model Context Protocol (MCP) server implementation for managing notes with persistent storage.

<a href="https://glama.ai/mcp/servers/tg4ugmp8jr"><img width="380" height="200" src="https://glama.ai/mcp/servers/tg4ugmp8jr/badge" alt="Notes Server MCP server" /></a>

## Features

- Create, read, update, and delete notes
- Persistent storage using JSON
- Timestamp tracking for creation and modifications
- Note summarization via prompts
- Resource-based access using note:// URI scheme

## Installation

### Installing via Smithery

To install notes for Claude Desktop automatically via [Smithery](https://smithery.ai/server/notes):

```bash
npx -y @smithery/cli install notes --client claude
```

### Manual Installation
1. Ensure you have Python 3.10 or later installed
2. Create a virtual environment:
   ```bash
   python -m venv .venv
   
   # On Unix/MacOS:
   source .venv/bin/activate
   
   # On Windows:
   .venv\Scripts\activate
   ```
3. Install requirements:
   ```bash
   pip install MCP
   ```

## Project Structure

```
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
```

## Available Tools

- `add-note`: Create a new note
- `list-all-notes`: Display all stored notes
- `update-note`: Modify an existing note
- `delete-note`: Remove a note

## Usage

1. Start the server:
   ```bash
   mcp install src/notes
   mcp start Notes
   ```

2. Example operations:
   ```python
   # 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"
   })
   ```

## Storage

Notes are stored in `notes_storage.json` with the following structure:
```json
{
    "note_name": {
        "content": "Note content",
        "created_at": "2025-01-12T11:28:16.721704",
        "modified_at": "2025-01-12T11:28:16.721704"
    }
}
```

## Resource Access

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`

## Prompt Generation

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

## Development

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

## Testing

Tests should cover:
- Basic CRUD operations
- Multiple note handling
- Error cases
- Resource access
- Prompt generation

## License

[Add your license here]