Simplenote Mcp Server
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:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Simplenote Mcp ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- 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"
}
}
}

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 -->
<!-- Download & Stats Badges -->
<!-- Development & Quality Badges -->
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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



