Simplenote Mcp Server

by docdyhr

17 411 downloads Not rated yet MIT
GitHub

About

A server to connect and manage your Simplenote notes within Claude Desktop.

Details

License
MIT

Explore

- πŸ“ Full Note Management: Read, create, update, and delete Simplenote notes
- πŸ” Advanced Search: Boolean operators, phrase matching, tag and date filters
- ⚑ High Performance: In-memory caching with background synchronization
- πŸ” Secure Authentication: Token-based authentication via environment variables
- 🧩 MCP Compatible: Works with Claude Desktop and other MCP clients
- 🐳 Docker Ready: Full containerization with multi-stage builds and security hardening
- πŸ“Š Monitoring: Optional HTTP endpoints for health, readiness, and metrics
- πŸ§ͺ Robust Testing: Comprehensive test suite with 1135+ tests and continuous integration
- πŸ”’ Security Hardened: Regular security scanning with Bandit, pip-audit, and dependency checks

---

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Simplenote Mcp Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

- Simplenote account (create one at simplenote.com)
- Python 3.10+ (for non-Docker installs) or Docker

export [email protected]
export SIMPLENOTE_PASSWORD=your-password

Install automatically via Smithery:

npx -y @smithery/cli install @docdyhr/simplenote-mcp-server --client claude

This method automatically configures Claude Desktop with the MCP server.

git clone https://github.com/docdyhr/simplenote-mcp-server.git
cd simplenote-mcp-server
pip install -e .
simplenote-mcp-server

---


helm install my-simplenote ./helm/simplenote-mcp-server \
  --set simplenote.email="[email protected]" \
  --set simplenote.password="your-password"

yaml

| Variable | Required | Default | Description |
| ----------------------- | -------- | ------- | -------------------------------------------------------- |
| SIMPLENOTE_EMAIL | Yes | - | Your Simplenote account email |
| SIMPLENOTE_PASSWORD | Yes | - | Your Simplenote account password |
| SYNC_INTERVAL_SECONDS | No | 120 | Cache synchronization interval in seconds |
| CACHE_MAX_SIZE | No | 10000 | Max notes held in memory β€” set β‰₯ your total note count |
| LOG_LEVEL | No | INFO | Logging level (DEBUG, INFO, WARNING, ERROR) |
| SIMPLENOTE_OFFLINE_MODE | No | false | Skip API calls; used for testing without credentials |

npm install
npm run validate:evals


./setup-dev-env-with-evals.sh

git clone https://github.com/docdyhr/simplenote-mcp-server.git
cd simplenote-mcp-server
pip install -e ".[dev,test]"
npm install # For mcp-evals

The setup script creates:

- Python development environment with all dependencies
- Node.js environment for mcp-evals
- Example configuration files
- Pre-commit hooks
- Validation for all evaluation files

create_note

Create a new note

update_note

Replace full note content (destructive)

delete_note

Soft-delete: move note to Trash

restore_note

Untrash a note β€” move it back from Trash

permanent_delete_note

Irreversibly destroy a single note (requires `confirm=true`)

empty_trash

Permanently delete all trashed notes (dry-run by default)

get_note

Get a note by ID with full content and metadata

add_text

Append or prepend text without overwriting

search_notes

Full-text search with filters and pagination

add_tags

Add tags to a note

remove_tags

Remove specific tags from a note

replace_tags

Replace all tags on a note

list_tags

List all tags with note counts

rename_tag

Rename a tag across all notes atomically

get_note_versions

List version history for a note

restore_version

Roll back a note to a previous version

get_or_create_note

Atomic find-or-create by title

append_to_daily_note

Append a timestamped entry to today's note

replace_section

Replace one Markdown section without touching others

find_untagged_notes

Find notes with no tags

bulk_tag

Apply tags to multiple notes in one call

export_notes

Export notes to Markdown or JSON

find_and_merge_duplicates

Detect and merge duplicate notes

get_server_info

Server version, author, and runtime debug info

| Tool | Description | Parameters |
| ------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| create_note | Create a new note | content, tags (optional) |
| update_note | Replace full note content (destructive) | note_id, content, tags (optional) |
| delete_note | Soft-delete: move note to Trash | note_id |
| restore_note | Untrash a note β€” move it back from Trash | note_id |
| permanent_delete_note | Irreversibly destroy a single note (requires confirm=true) | note_id, confirm |
| empty_trash | Permanently delete all trashed notes (dry-run by default) | dry_run (default true), confirm (default false) |
| get_note | Get a note by ID with full content and metadata | note_id |
| add_text | Append or prepend text without overwriting | note_id, text, position ("end" \| "beginning") |
| search_notes | Full-text search with filters and pagination | query, limit, offset, tags, from_date, to_date, created_after, modified_after, pinned, fuzzy, sort_by |
| add_tags | Add tags to a note | note_id, tags |
| remove_tags | Remove specific tags from a note | note_id, tags |
| replace_tags | Replace all tags on a note | note_id, tags |
| list_tags | List all tags with note counts | sort_by ("alpha" \| "count") |
| rename_tag | Rename a tag across all notes atomically | old_tag, new_tag, dry_run (optional) |
| get_note_versions | List version history for a note | note_id |
| restore_version | Roll back a note to a previous version | note_id, version_number |
| get_or_create_note | Atomic find-or-create by title | title, tags (optional), default_content (optional) |
| append_to_daily_note | Append a timestamped entry to today's note | text, tags (optional) |
| replace_section | Replace one Markdown section without touching others | note_id, header, content |
| find_untagged_notes | Find notes with no tags | limit (optional) |
| bulk_tag | Apply tags to multiple notes in one call | note_ids, tags |
| export_notes | Export notes to Markdown or JSON | format, tags (optional), query (optional) |
| find_and_merge_duplicates | Detect and merge duplicate notes | dry_run (optional), similarity_threshold (optional) |
| get_server_info | Server version, author, and runtime debug info | (no parameters) |

---

./simplenote_mcp/scripts/verify_tools.sh

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "simplenote mcp server": {
            "simplenote": {
                "description": "Access and manage your Simplenote notes",
                "command": "simplenote-mcp-server",
                "env": {
                    "SIMPLENOTE_EMAIL": "[email protected]",
                    "SIMPLENOTE_PASSWORD": "your-password"
                }
            }
        }
    }
}

McpServers

{
    "simplenote": {
        "description": "Access and manage your Simplenote notes",
        "command": "simplenote-mcp-server",
        "env": {
            "SIMPLENOTE_EMAIL": "[email protected]",
            "SIMPLENOTE_PASSWORD": "your-password"
        }
    }
}

Simplenote MCP Server Logo

A lightweight MCP server that integrates Simplenote with Claude Desktop using the MCP Python SDK.

This allows Claude Desktop to interact with your Simplenote notes as a memory backend or content source.

<!-- Status & Build Badges -->
CI/CD Pipeline
Security

<!-- Project Info Badges -->
Python Version
Version
Test Coverage
License: MIT

<!-- Download & Stats Badges -->
PyPI Downloads
Docker Pulls
GitHub Stars

<!-- Development & Quality Badges -->
MCP Server
Code style: black
Ruff
Smithery

Verified on MseeP
---

What's New (Unreleased)

26 Tools β€” Full Bear Parity + Simplenote Differentiators + Claude Companion Tools

Two new irreversible-deletion tools with mandatory safety guards:

- permanent_delete_note: Permanently destroy a single note; requires confirm=true; dry-run preview by default
- empty_trash: Permanently delete all trashed notes; defaults to dry_run=true (preview); requires dry_run=false AND confirm=true
- 1188 tests passing, 77% coverage, zero linting/type errors

v1.17.0

- search_notes async fix: Boolean AND queries no longer hang the server; search now runs in a thread-pool executor with a 30 s timeout
- Substring pre-filter: searching "test" now correctly returns notes containing "testing", "tested", etc.
- Real-engine integration test suite added; import error in test helpers fixed

v1.16.0

- publish_note: Publish a note to a public URL β€” unique to Simplenote MCP; returns public_url
- unpublish_note: Remove a note from public access; no-op if already unpublished

See the CHANGELOG for complete details.

See the CHANGELOG for complete details.

---

πŸ”§ Features

- πŸ“ Full Note Management: Read, create, update, and delete Simplenote notes
- πŸ” Advanced Search: Boolean operators, phrase matching, tag and date filters
- ⚑ High Performance: In-memory caching with background synchronization
- πŸ” Secure Authentication: Token-based authentication via environment variables
- 🧩 MCP Compatible: Works with Claude Desktop and other MCP clients
- 🐳 Docker Ready: Full containerization with multi-stage builds and security hardening
- πŸ“Š Monitoring: Optional HTTP endpoints for health, readiness, and metrics
- πŸ§ͺ Robust Testing: Comprehensive test suite with 1135+ tests and continuous integration
- πŸ”’ Security Hardened: Regular security scanning with Bandit, pip-audit, and dependency checks

---

πŸš€ Quick Start

Prerequisites

- Simplenote account (create one at simplenote.com)
- Python 3.10+ (for non-Docker installs) or Docker

Option 1: Docker (Recommended)

The fastest way to get started is using our pre-built Docker image:

```bash

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.