Simplenote MCP Server
A server to connect and manage your Simplenote notes within Claude Desktop.
Simplenote MCP Server
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.
π§ 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 700+ 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:
# Pull and run the latest image
docker run -d \
--name simplenote-mcp \
-e SIMPLENOTE_EMAIL=your.email@example.com \
-e SIMPLENOTE_PASSWORD=your-password \
-p 8000:8000 \
docdyhr/simplenote-mcp-server:latest
Docker Health Checks: The container includes built-in health monitoring endpoints:
- Health:
http://localhost:8000/health
- Readiness:
http://localhost:8000/ready
- Metrics:
http://localhost:8000/metrics
(Prometheus format)
Or use Docker Compose:
# Clone the repository for docker-compose.yml
git clone https://github.com/docdyhr/simplenote-mcp-server.git
cd simplenote-mcp-server
# Set environment variables
export SIMPLENOTE_EMAIL=your.email@example.com
export SIMPLENOTE_PASSWORD=your-password
# Run with Docker Compose
docker-compose up -d
Option 2: Smithery (One-click install)
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.
Option 3: Traditional Python Install
git clone https://github.com/docdyhr/simplenote-mcp-server.git
cd simplenote-mcp-server
pip install -e .
simplenote-mcp-server
π³ Docker Deployment
Container Features
- Multi-stage builds for optimized image size
- Security hardening with non-root user and minimal attack surface
- Health monitoring endpoints built-in
- Resource limits and proper signal handling
- Volume support for persistent data
Using Pre-built Images
The easiest way to use the server is with our pre-built Docker images:
# Pull the latest image
docker pull docdyhr/simplenote-mcp-server:latest
# Run with Docker
docker run -d \
-e SIMPLENOTE_EMAIL=your.email@example.com \
-e SIMPLENOTE_PASSWORD=your-password \
-p 8000:8000 \
docdyhr/simplenote-mcp-server:latest
# Or use Docker Compose
docker-compose up -d
Available tags:
latest
- Latest stable releasev1.6.0
- Specific versionmain
- Latest development build
Production Deployment
# Build and run the production container
docker-compose up -d
# Or build manually
docker build -t simplenote-mcp-server .
docker run -d \
-e SIMPLENOTE_EMAIL=your.email@example.com \
-e SIMPLENOTE_PASSWORD=your-password \
-p 8000:8000 \
simplenote-mcp-server
Development with Docker
# Use the development compose file for live code mounting
docker-compose -f docker-compose.dev.yml up
Docker Features
- Multi-stage build for optimized image size (346MB)
- Multi-platform support:
linux/amd64
andlinux/arm64
- Security hardening: Non-root user, read-only filesystem, no new privileges
- Health checks and automatic restart policies
- Resource limits: 1 CPU, 512MB memory
- Logging: Persistent log volumes
- Environment-based configuration
- CI/CD Pipeline: Automated builds and publishing to Docker Hub
- Security scanning: Trivy vulnerability scanning on all images
- Container signing: Sigstore cosign signatures for supply chain security
- Kubernetes ready: Production-grade Helm chart with security hardening
- Automated updates: Dependabot for dependencies, auto-versioning workflows
- Health monitoring: Continuous health checks and alerting
- Enterprise notifications: Slack and email integration for CI/CD status
βΈοΈ Kubernetes Deployment
Using Helm (Recommended)
Deploy to Kubernetes with our production-ready Helm chart:
# Install from local chart
helm install my-simplenote ./helm/simplenote-mcp-server \
--set simplenote.email="your-email@example.com" \
--set simplenote.password="your-password"
# Or with external secrets (recommended for production)
helm install my-simplenote ./helm/simplenote-mcp-server \
--set externalSecrets.enabled=true \
--set externalSecrets.secretStore.name="vault-backend"
Kubernetes Features
- Security hardening: Non-root user, read-only filesystem, dropped capabilities
- Resource management: CPU/memory limits and requests configured
- Auto-scaling: Horizontal Pod Autoscaler support
- Health checks: Liveness and readiness probes
- External secrets: Integration with external secret management
- Service mesh ready: Compatible with Istio and other service meshes
Production Configuration
# values.yaml for production
replicaCount: 3
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
βοΈ Configuration
Environment Variables
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 |
LOG_LEVEL | No | INFO | Logging level (DEBUG, INFO, WARNING, ERROR) |
Claude Desktop Integration
Add to your claude_desktop_config.json
:
{
"mcpServers": {
"simplenote": {
"description": "Access and manage your Simplenote notes",
"command": "simplenote-mcp-server",
"env": {
"SIMPLENOTE_EMAIL": "your.email@example.com",
"SIMPLENOTE_PASSWORD": "your-password"
}
}
}
}
π Advanced Search
Powerful search with boolean logic and filters:
# Boolean operators
project AND meeting AND NOT cancelled
# Phrase matching
"action items" AND project
# Tag filtering
meeting tag:work tag:important
# Date ranges
project from:2023-01-01 to:2023-12-31
# Combined query
"status update" AND project tag:work from:2023-01-01 NOT cancelled
π οΈ Available Tools
Tool | Description | Parameters |
---|---|---|
create_note | Create a new note | content , tags (optional) |
update_note | Update an existing note | note_id , content , tags (optional) |
delete_note | Move a note to trash | note_id |
get_note | Get a note by ID | note_id |
search_notes | Advanced search with filters | query , limit , offset , tags , from_date , to_date |
add_tags | Add tags to a note | note_id , tags |
remove_tags | Remove tags from a note | note_id , tags |
replace_tags | Replace all tags on a note | note_id , tags |
π Performance & Caching
- In-memory caching with background synchronization
- Pagination support for large note collections
- Indexed lookups for tags and content
- Query result caching for repeated searches
- Optimized API usage with minimal Simplenote calls
π― Recent Improvements (September 2025)
β Quality & Reliability Enhancements
Test Suite Stabilization:
- Fixed test isolation issues that caused intermittent failures
- Improved test cleanup with proper timeout handling
- Enhanced fixture management for better test reliability
- Achieved consistent test results across individual and suite runs
CI/CD Pipeline Optimization:
- Consolidated 28 workflows down to 16 active workflows
- Implemented unified monitoring workflow combining security, health, and badge checks
- Improved test coverage reporting with realistic 15.6% baseline
- Enhanced Docker build validation and security scanning
Code Quality Improvements:
- All linting (Ruff), formatting, and type checking (MyPy) now pass consistently
- Zero high-severity security vulnerabilities (verified with Bandit, pip-audit, safety)
- Standardized code formatting and pre-commit hooks configuration
- Enhanced error handling and user-facing error messages
π§ Developer Experience
Improved Testing:
- 724 comprehensive tests covering core functionality
- Function-scoped fixtures for better test isolation
- Realistic coverage baseline established (15.6%)
- Streamlined test execution with proper cleanup
Enhanced Documentation:
- Updated deployment guides with current Docker setup
- Improved health monitoring endpoint documentation
- Added troubleshooting guides for common issues
- Current status and roadmap documentation
Container Improvements:
- Multi-stage Docker builds for optimized image size
- Built-in health monitoring endpoints (
/health
,/ready
,/metrics
) - Enhanced security hardening with non-root user
- Improved signal handling and graceful shutdown
π§ͺ Testing & Evaluation
MCP Evaluations β
Status: β WORKING - Complete mcp-evals integration with TypeScript wrapper!
This project includes comprehensive evaluations using mcp-evals to ensure reliability and performance:
# Setup evaluation environment
npm install
npm run validate:evals
# Run evaluation suites
npm run eval:smoke # Quick smoke tests (2-3 minutes) β
VERIFIED
npm run eval:basic # Standard evaluations (5-10 minutes)
npm run eval:comprehensive # Full evaluation suite (15-30 minutes)
Latest Test Results: 4/5 tests passing excellently (avg 4.1/5):
- Server Startup: 4.6/5 β (Excellent)
- Authentication: 4.0/5 β (Good)
- Note Operations: 3.8/5 β (Good)
- Search: 5.0/5 β (Perfect)
- Error Handling: 1.4/5 β οΈ (Needs improvement)
Evaluation Types
- Smoke Tests: Basic functionality validation
- CRUD Operations: Note creation, reading, updating, deletion
- Search & Filtering: Boolean search, tag filtering, date ranges
- Error Handling: Authentication, network issues, edge cases
- Performance: Large datasets, concurrent operations
- Security: Input validation, authentication enforcement
Automated Testing
Evaluations run automatically on:
- Pull Requests: Smoke + basic tests
- Releases: Comprehensive evaluation suite
- Manual Trigger: Full test matrix with detailed reporting
The evaluations use OpenAI's GPT models to assess:
- Accuracy: Correctness of responses
- Completeness: Thoroughness of results
- Relevance: Response appropriateness
- Clarity: Response readability
- Performance: Operation efficiency
π See evals/README.md
for detailed evaluation documentation.
Traditional Testing
# Python unit tests
pytest
# Code quality checks
ruff check .
mypy simplenote_mcp
π‘οΈ Security
- Token-based authentication via environment variables
- No hardcoded credentials in Docker images
- Security-hardened containers with non-root users
- Read-only filesystem in production containers
- Resource limits to prevent abuse
π¨ Troubleshooting
Common Issues
Authentication Problems:
- Verify
SIMPLENOTE_EMAIL
andSIMPLENOTE_PASSWORD
are set correctly - Check for typos in credentials
Docker Issues:
# Check container logs
docker-compose logs
# Restart services
docker-compose restart
# Rebuild if needed
docker-compose up --build
Claude Desktop Connection:
# Verify tools are available
./simplenote_mcp/scripts/verify_tools.sh
# Monitor logs
./simplenote_mcp/scripts/watch_logs.sh
Diagnostic Commands
# Test connectivity
python simplenote_mcp/tests/test_mcp_client.py
# Check server status
./simplenote_mcp/scripts/check_server_pid.sh
# Clean up and restart
./simplenote_mcp/scripts/cleanup_servers.sh
π Development
Quick Setup with mcp-evals
# One-command setup including evaluations
./setup-dev-env-with-evals.sh
# Or manual setup
git clone https://github.com/docdyhr/simplenote-mcp-server.git
cd simplenote-mcp-server
pip install -e ".[dev,test]"
npm install # For mcp-evals
Local Development
# Run the server
python simplenote_mcp_server.py
# Run Python tests
pytest
# Run mcp-evals
npm run eval:smoke # Quick validation
npm run eval:basic # Standard tests
npm run eval:all # Full test suite
# Code quality
ruff check .
ruff format .
mypy simplenote_mcp
Development Environment
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
Testing Strategy
- Unit Tests: Traditional Python pytest for core logic
- Integration Tests: MCP protocol compliance testing
- Smoke Tests: Quick validation of basic functionality
- Evaluation Tests: LLM-based assessment of real-world usage
- Performance Tests: Load and stress testing
Running MCP Evaluations
Docker Method (Recommended)
Due to potential permission issues with tsx, we recommend running MCP evaluations in Docker:
# Run smoke tests
./scripts/run-evals-docker.sh smoke
# Run basic evaluations
./scripts/run-evals-docker.sh basic
# Run comprehensive evaluations
./scripts/run-evals-docker.sh comprehensive
# Run all evaluations
./scripts/run-evals-docker.sh all
Direct Method (if permissions allow)
npm run eval:smoke
npm run eval:basic
npm run eval:comprehensive
npm run eval:all
Docker Development
# Development with live code reload
docker-compose -f docker-compose.dev.yml up
# Build and test
docker build -t simplenote-mcp-server:test .
docker run --rm simplenote-mcp-server:test --help
π€ Contributing
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Related Projects
β Support the Project
If you find this project helpful, please consider giving it a star on GitHub! Your support helps:
- π Increase visibility for other developers who might benefit from this tool
- πͺ Motivate continued development and maintenance
- π Build community around the Model Context Protocol ecosystem
- π‘οΈ Validate trust through community engagement
β Star this repository β it takes just one click and means a lot!
Related Servers
Umbraco MCP
Interact with the Umbraco CMS Management API for administrative tasks.
X CRM MCP
Give AI the context of your X followers with CRM functionality
UnifAI
Dynamically search and call tools using UnifAI Network
Job Tracker AI
An AI-powered chat server for tracking job interview processes, integrated with Supabase.
Linear
Interact with the Linear API to manage issues, projects, and teams.
Backup
Add smart Backup ability to coding agents like Windsurf, Cursor, Cluade Coder, etc
Portfolio Manager MCP Server
A server providing tools and resources for managing and analyzing investment portfolios.
Browser Use
An AI-driven server for browser automation using natural language commands, implementing the Model Context Protocol (MCP).
LimeSurvey
Manage surveys and responses in your LimeSurvey instance.
Audiense Insights
Marketing insights and audience analysis from Audiense reports, covering demographic, cultural, influencer, and content engagement analysis.