Simplenote MCP Server

Un servidor para conectar y gestionar tus notas de Simplenote dentro de Claude Desktop.

Documentación

Simplenote MCP Server

Simplenote MCP Server Logo

Un servidor MCP ligero que integra Simplenote con Claude Desktop mediante el MCP Python SDK.

Esto permite que Claude Desktop interactúe con tus notas de Simplenote como backend de memoria o fuente de contenido.

CI/CD Pipeline Security

Python Version Version Test Coverage License: MIT

PyPI Downloads Docker Pulls GitHub Stars

MCP Server Code style: black Ruff Smithery

Verified on MseeP

Novedades

30 herramientas: paridad total con Bear + diferenciadores de Simplenote + herramientas complementarias de Claude + cifrado de bóveda

Bóveda: cifrado de notas opcional en el cliente: Simplenote no tiene cifrado en reposo. create_note/update_note ahora aceptan encrypt: true, y encrypt_note/decrypt_note convierten las notas existentes: los cuerpos se convierten en texto cifrado AES-256-GCM antes de llegar a la API de Simplenote. Consulta docs/security/encryption-design.md.

Recursos y prompts de MCP reforzados para el caso de uso de memoria de trabajo:

  • Corregido: list_resources/read_resource estaban descartando silenciosamente los metadatos de etiqueta/fecha/paginación mediante campos no incluidos en el esquema; ahora se adjuntan mediante el campo de extensión _meta de la especificación MCP, el mecanismo correcto.
  • Prompt MCP session-handoff: estructura el flujo de trabajo de Continuidad de sesión (get_or_create_note + add_text con un formato Status:/Next:/Blockers:) para la transferencia de contexto entre sesiones.

Herramientas de borrado irreversible con protecciones de seguridad obligatorias:

  • permanent_delete_note: destruye permanentemente una sola nota; requiere confirm=true; vista previa de simulación por defecto
  • empty_trash: elimina permanentemente todas las notas en la papelera; por defecto dry_run=true (vista previa); requiere dry_run=false Y confirm=true
  • 1334 pruebas superadas, cobertura del 79 % o más, cero errores de linting/tipos

Consulta el CHANGELOG y ROADMAP.md para obtener todos los detalles.

v1.17.0

  • Corrección asíncrona de search_notes: las consultas booleanas AND ya no bloquean el servidor; la búsqueda ahora se ejecuta en un ejecutor de grupo de subprocesos con un tiempo de espera de 30 s
  • Prefiltro de subcadenas: buscar "test" ahora devuelve correctamente notas que contienen "testing", "tested", etc.
  • Se añadió la suite de pruebas de integración con el motor real; se corrigió un error de importación en los ayudantes de prueba

v1.16.0

  • publish_note: publica una nota en una URL pública, exclusivo de Simplenote MCP; devuelve public_url
  • unpublish_note: retira una nota del acceso público; no hace nada si ya no está publicada

Consulta el CHANGELOG para obtener todos los detalles.


🔧 Características

  • 📝 Gestión completa de notas: lee, crea, actualiza y elimina notas de Simplenote
  • 🔍 Búsqueda avanzada: operadores booleanos, coincidencia de frases, filtros por etiqueta y fecha
  • Alto rendimiento: caché en memoria con sincronización en segundo plano
  • 🔐 Autenticación segura: autenticación basada en tokens mediante variables de entorno
  • 🔑 Cifrado de bóveda: cifrado AES-256-GCM opcional en el cliente para notas sensibles; Simplenote en sí no tiene cifrado en reposo
  • 🧩 Compatible con MCP: funciona con Claude Desktop y otros clientes MCP
  • 🐳 Listo para Docker: contenedorización completa con compilaciones de varias etapas y refuerzo de seguridad
  • 📊 Monitoreo: endpoints HTTP opcionales para salud, disponibilidad y métricas
  • 🧪 Pruebas sólidas: suite de pruebas completa con 1334 pruebas e integración continua
  • 🔒 Seguridad reforzada: análisis de seguridad periódico con Bandit, pip-audit y comprobaciones de dependencias

🚀 Inicio rápido

Requisitos previos

  • Cuenta de Simplenote (crea una en simplenote.com)
  • Python 3.10+ (para instalaciones sin Docker) o Docker

Opción 1: Docker (recomendado)

La forma más rápida de empezar es usar nuestra imagen Docker precompilada:

# Pull and run the latest image
docker run -d \
  --name simplenote-mcp \
  -e SIMPLENOTE_EMAIL=your.email@example.com \
  -e SIMPLENOTE_PASSWORD=your-password \
  -e MCP_TRANSPORT=http \
  -e MCP_HTTP_HOST=0.0.0.0 \
  -e MCP_HTTP_AUTH_TOKEN=your-random-secret-token \
  -p 8000:8000 \
  docdyhr/simplenote-mcp-server:latest

MCP_HTTP_AUTH_TOKEN es obligatorio siempre que MCP_HTTP_HOST sea algo distinto de 127.0.0.1/localhost; el servidor se niega a iniciarse en caso contrario (consulta la sección de Seguridad más abajo). Sin MCP_TRANSPORT=http, el servidor se ejecuta por stdio de forma predeterminada y nada escucha en el puerto publicado.

Comprobaciones de salud de Docker: el monitoreo de salud es un endpoint HTTP separado del puerto del protocolo MCP anterior; está desactivado por defecto y debe habilitarse explícitamente con -e ENABLE_HTTP_ENDPOINT=true -e HTTP_HOST=0.0.0.0 -p 8080:8080 (el mapeo -p de Docker reenvía a la interfaz de red del contenedor, no a su loopback, por lo que HTTP_HOST debe ser 0.0.0.0 para que el puerto publicado realmente lo alcance; el valor predeterminado 127.0.0.1 solo funciona si llamas a estos endpoints desde otro proceso dentro del mismo contenedor):

  • Salud: http://localhost:8080/health
  • Disponibilidad: http://localhost:8080/ready
  • Métricas: http://localhost:8080/metrics (formato Prometheus)

El servidor se niega a iniciarse si HTTP_HOST no es loopback y no se ha establecido HTTP_ENDPOINT_AUTH_TOKEN, ya que de lo contrario estos endpoints serían accesibles para cualquiera que pueda alcanzar el puerto. Establece un token de portador (verificado mediante Authorization: Bearer <token>, mismo mecanismo que MCP_HTTP_AUTH_TOKEN anterior) si necesitas un enlace no loopback; los llamadores de loopback siempre son de confianza, por lo que esto nunca rompe una comprobación de salud local. Prefiere mantenerlo solo en loopback y publicar con -p 127.0.0.1:8080:8080 en lugar de -p 8080:8080 cuando sea posible.

O usa 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

Opción 2: Smithery (instalación con un clic)

Instala automáticamente mediante Smithery:

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

Este método configura automáticamente Claude Desktop con el servidor MCP.

Opción 3: instalación tradicional con Python

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

🗂 Mapa de documentación y archivos

  • Comienza con docs/DOCUMENTATION_GUIDE.md para un recorrido seleccionado de la documentación de usuario, desarrollador y operaciones, además de listas de verificación de mantenimiento.
  • Los resúmenes históricos del proyecto ahora se encuentran en docs/archive/2025/, manteniendo la raíz del repositorio centrada en hojas de ruta y guías activas.
  • ¿Necesitas algo rápido? Ejecuta rg "<topic>" docs/ o salta a docs/index.md para el índice de contenido estilo MkDocs.

🐳 Implementación con Docker

Características del contenedor

  • Compilaciones de varias etapas para un tamaño de imagen optimizado
  • Refuerzo de seguridad con usuario no root y superficie de ataque mínima
  • Monitoreo de salud integrado
  • Límites de recursos y manejo adecuado de señales
  • Soporte de volúmenes para datos persistentes

Uso de imágenes precompiladas

La forma más fácil de usar el servidor es con nuestras imágenes Docker precompiladas:

# Pull the latest image
docker pull docdyhr/simplenote-mcp-server:latest

# Run with Docker (see Quick Start above for the required MCP_HTTP_* env vars)
docker run -d \
  -e SIMPLENOTE_EMAIL=your.email@example.com \
  -e SIMPLENOTE_PASSWORD=your-password \
  -e MCP_TRANSPORT=http \
  -e MCP_HTTP_HOST=0.0.0.0 \
  -e MCP_HTTP_AUTH_TOKEN=your-random-secret-token \
  -p 8000:8000 \
  docdyhr/simplenote-mcp-server:latest

# Or use Docker Compose (set MCP_HTTP_AUTH_TOKEN in your environment/.env first)
docker-compose up -d

Etiquetas disponibles:

  • latest - Última versión estable
  • v1.18.0 - Versión específica
  • main - Última compilación de desarrollo

Implementación en producción

# 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 \
  -e MCP_TRANSPORT=http \
  -e MCP_HTTP_HOST=0.0.0.0 \
  -e MCP_HTTP_AUTH_TOKEN=your-random-secret-token \
  -p 8000:8000 \
  simplenote-mcp-server

Desarrollo con Docker

# Use the development compose file for live code mounting
docker-compose -f docker-compose.dev.yml up

Características de Docker

  • Compilación de varias etapas para un tamaño de imagen optimizado (346 MB)
  • Soporte multiplataforma: linux/amd64 y linux/arm64
  • Refuerzo de seguridad: usuario no root, sistema de archivos de solo lectura, sin privilegios nuevos
  • Comprobaciones de salud y políticas de reinicio automático
  • Límites de recursos: 1 CPU, 512 MB de memoria
  • Registro: volúmenes de registro persistentes
  • Configuración basada en variables de entorno
  • Canalización CI/CD: compilaciones automatizadas y publicación en Docker Hub
  • Análisis de seguridad: análisis de vulnerabilidades Trivy en todas las imágenes
  • Firma de contenedores: firmas Sigstore cosign para la seguridad de la cadena de suministro
  • Listo para Kubernetes: gráfico Helm de grado de producción con refuerzo de seguridad
  • Actualizaciones automatizadas: Dependabot para dependencias, flujos de trabajo de versionado automático
  • Monitoreo de salud: comprobaciones de salud continuas y alertas
  • Notificaciones empresariales: integración de Slack y correo electrónico para el estado de CI/CD

☸️ Implementación en Kubernetes

Uso de Helm (recomendado)

Implementa en Kubernetes con nuestro gráfico Helm listo para producción:

# 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"

Características de Kubernetes

  • Refuerzo de seguridad: usuario no root, sistema de archivos de solo lectura, capacidades eliminadas
  • Gestión de recursos: límites y solicitudes de CPU/memoria configurados
  • Autoescalado: soporte de Horizontal Pod Autoscaler
  • Comprobaciones de salud: sondas de liveness y readiness
  • Secretos externos: integración con gestión de secretos externa
  • Listo para service mesh: compatible con Istio y otros service meshes

Configuración de producción

# values.yaml for production
replicaCount: 3
autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
resources:
  limits:
    cpu: 1000m
    memory: 512Mi
  requests:
    cpu: 500m
    memory: 256Mi

⚙️ Configuración

Variables de entorno

VariableRequeridaPredeterminadoDescripción
SIMPLENOTE_EMAIL-Tu correo electrónico de cuenta de Simplenote
SIMPLENOTE_PASSWORD-Tu contraseña de cuenta de Simplenote
SYNC_INTERVAL_SECONDSNo120Intervalo de sincronización de caché en segundos
CACHE_MAX_SIZENo10000Máximo de notas en memoria: establece ≥ tu número total de notas
LOG_LEVELNoINFONivel de registro (DEBUG, INFO, WARNING, ERROR)
SIMPLENOTE_OFFLINE_MODENofalseOmite las llamadas a la API; se usa para pruebas sin credenciales
MCP_TRANSPORTNostdiostdio o http: el transporte del protocolo MCP
MCP_HTTP_HOSTNo127.0.0.1Host de enlace cuando MCP_TRANSPORT=http
MCP_HTTP_AUTH_TOKENCondicional-Token de portador; obligatorio si MCP_HTTP_HOST no es loopback
MCP_HTTP_ALLOWED_HOSTSNo-Lista de permitidos separada por comas para la protección contra reenlace de DNS
MCP_HTTP_ALLOWED_ORIGINSNo-Lista de permitidos de Origin separada por comas (se usa con la anterior)
ENABLE_HTTP_ENDPOINTNofalseHabilita el servidor separado /health, /ready, /metrics
HTTP_HOSTNo127.0.0.1Host de enlace para el endpoint de monitoreo anterior
HTTP_PORTNo8080Puerto para el endpoint de monitoreo anterior
HTTP_ENDPOINT_AUTH_TOKENCondicional-Token de portador; obligatorio si HTTP_HOST no es loopback

Integración con Claude Desktop

Añade a tu 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",
        "CACHE_MAX_SIZE": "10000"
      }
    }
  }
}

🔍 Búsqueda avanzada

Búsqueda potente con lógica booleana y filtros:

# 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

🛠️ Herramientas disponibles

HerramientaDescripciónParámetros
create_noteCrear una nueva notacontent, tags (opcional)
update_noteReemplazar el contenido completo de la nota (destructivo)note_id, content, tags (opcional)
delete_noteEliminación suave: mover la nota a la Papeleranote_id
restore_noteRestaurar una nota: moverla de vuelta desde la Papeleranote_id
permanent_delete_noteDestruir irreversiblemente una sola nota (requiere confirm=true)note_id, confirm
empty_trashEliminar permanentemente todas las notas en la papelera (simulación por defecto)dry_run (por defecto true), confirm (por defecto false)
get_noteObtener una nota por ID con contenido completo y metadatosnote_id
add_textAñadir o anteponer texto sin sobrescribirnote_id, text, position ("end" | "beginning")
search_notesBúsqueda de texto completo con filtros y paginaciónquery, limit, offset, tags, from_date, to_date, created_after, modified_after, pinned, fuzzy, sort_by
add_tagsAñadir etiquetas a una notanote_id, tags
remove_tagsEliminar etiquetas específicas de una notanote_id, tags
replace_tagsReemplazar todas las etiquetas de una notanote_id, tags
list_tagsListar todas las etiquetas con recuentos de notassort_by ("alpha" | "count")
rename_tagRenombrar una etiqueta en todas las notas atómicamenteold_tag, new_tag, dry_run (opcional)
get_note_versionsListar el historial de versiones de una notanote_id
restore_versionRevertir una nota a una versión anteriornote_id, version_number
get_or_create_noteBuscar o crear atómicamente por títulotitle, tags (opcional), default_content (opcional)
append_to_daily_noteAñadir una entrada con marca de tiempo a la nota de hoytext, tags (opcional)
replace_sectionReemplazar una sección de Markdown sin tocar las demásnote_id, header, content
find_untagged_notesEncontrar notas sin etiquetaslimit (opcional)
bulk_tagAplicar etiquetas a múltiples notas en una sola llamadanote_ids, tags
export_notesExportar notas a Markdown o JSONformat, tags (opcional), query (opcional)
find_and_merge_duplicatesDetectar y fusionar notas duplicadasdry_run (opcional), similarity_threshold (opcional)
get_server_infoVersión del servidor, autor e información de depuración en tiempo de ejecución(sin parámetros)

📊 Rendimiento y Caché

  • Caché en memoria con sincronización en segundo plano
  • Soporte de paginación para colecciones grandes de notas
  • Búsquedas indexadas para etiquetas y contenido
  • Caché de resultados de consultas para búsquedas repetidas
  • Uso optimizado de la API con llamadas mínimas a Simplenote

🎯 Mejoras Recientes

✅ Enero 2025 - Rendimiento y Calidad de Código

Corrección de error crítico:

  • Corregido el tiempo de espera de Claude Desktop - Reducido el tiempo de inicio de más de 55 segundos a menos de 1 segundo (mejora del 98%)
  • Implementada la ejecución de grupo de subprocesos para llamadas bloqueantes a la API de Simplenote
  • Hecha la inicialización de caché verdaderamente no bloqueante con carga en segundo plano
  • Resuelto anyio.BrokenResourceError durante el apagado

Refactorización de código - Fase 1 completada:

  • Complejidad del módulo de caché reducida: 5 funciones de alta complejidad (CC >= 15) → 0 (reducción del 100%)
  • Mantenibilidad mejorada: MI de caché de 12.7 → 16.2 (+28%)
  • Extraídos 23 métodos auxiliares para una mejor organización del código
  • Todas las 670 pruebas pasando con un 67% de cobertura de caché mantenida
  • Ver REFACTORING_PHASE1_COMPLETE.md para más detalles

Mejoras de documentación:

  • Añadida documentación completa CHANGELOG.md con historial de versiones completo
  • Creado TESTING_CLAUDE_DESKTOP.md para la guía de pruebas de usuario
  • Añadidas herramientas de análisis de complejidad de código (check_complexity.py)
  • Documentado el plan de refactorización y los informes de finalización

Herramientas de calidad:

  • Integrado Radon para análisis de complejidad automatizado
  • Métricas base: 22 funciones CC >= 15 (bajando de 28)
  • Índice de mantenibilidad promedio: 57.9 (mantenido)
  • Cero errores de diagnóstico, todas las compuertas de calidad pasando

✅ Septiembre 2025 - Mejoras de Calidad y Fiabilidad

✅ Mejoras de Calidad y Fiabilidad

Estabilización del conjunto de pruebas:

  • Corregidos problemas de aislamiento de pruebas que causaban fallos intermitentes
  • Mejorada la limpieza de pruebas con manejo adecuado de tiempos de espera
  • Mejorada la gestión de fixtures para una mayor fiabilidad de las pruebas
  • Logrados resultados de prueba consistentes en ejecuciones individuales y de conjunto

Optimización del pipeline CI/CD:

  • Consolidados 28 flujos de trabajo a 16 flujos de trabajo activos
  • Implementado un flujo de trabajo de monitoreo unificado que combina seguridad, salud y comprobaciones de insignias
  • Mejorado el informe de cobertura de pruebas con una línea base realista del 15.6%
  • Mejorada la validación de compilación de Docker y el escaneo de seguridad

Mejoras de calidad de código:

  • Todo el linting (Ruff), formato y verificación de tipos (MyPy) ahora pasan de manera consistente
  • Cero vulnerabilidades de seguridad de alta gravedad (verificado con Bandit, pip-audit, safety)
  • Estandarizado el formato de código y la configuración de ganchos pre-commit
  • Mejorado el manejo de errores y los mensajes de error para el usuario

🔧 Experiencia del Desarrollador

Pruebas mejoradas:

  • 724 pruebas exhaustivas que cubren la funcionalidad principal
  • Fixtures con ámbito de función para un mejor aislamiento de pruebas
  • Línea base de cobertura realista establecida (15.6%)
  • Ejecución de pruebas optimizada con limpieza adecuada

Documentación mejorada:

  • Actualizadas las guías de despliegue con la configuración actual de Docker
  • Mejorada la documentación del endpoint de monitoreo de salud
  • Añadidas guías de solución de problemas para problemas comunes
  • Documentación del estado actual y la hoja de ruta

Mejoras de contenedores:

  • Compilaciones Docker de múltiples etapas para un tamaño de imagen optimizado
  • Endpoints de monitoreo de salud integrados (/health, /ready, /metrics)
  • Endurecimiento de seguridad mejorado con usuario no root
  • Mejorado el manejo de señales y el apagado elegante

🧪 Pruebas y Evaluación

Evaluaciones MCP ✅

Estado: ✅ FUNCIONANDO - ¡Integración completa de mcp-evals con envoltorio TypeScript!

Este proyecto incluye evaluaciones exhaustivas utilizando mcp-evals para garantizar fiabilidad y rendimiento:

# 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)

Últimos resultados de pruebas: 4/5 pruebas pasando excelentemente (promedio 4.1/5):

  • Inicio del servidor: 4.6/5 ⭐ (Excelente)
  • Autenticación: 4.0/5 ⭐ (Buena)
  • Operaciones de notas: 3.8/5 ⭐ (Buenas)
  • Búsqueda: 5.0/5 ⭐ (Perfecta)
  • Manejo de errores: 1.4/5 ⚠️ (Necesita mejoras)

Tipos de Evaluación

  • Pruebas de humo: Validación de funcionalidad básica
  • Operaciones CRUD: Creación, lectura, actualización y eliminación de notas
  • Búsqueda y filtrado: Búsqueda booleana, filtrado por etiquetas, rangos de fechas
  • Manejo de errores: Autenticación, problemas de red, casos límite
  • Rendimiento: Conjuntos de datos grandes, operaciones concurrentes
  • Seguridad: Validación de entrada, aplicación de autenticación

Pruebas Automatizadas

Las evaluaciones se ejecutan automáticamente en:

  • Solicitudes de extracción: Pruebas de humo + básicas
  • Lanzamientos: Suite de evaluación exhaustiva
  • Disparador manual: Matriz de pruebas completa con informes detallados

Las evaluaciones utilizan los modelos GPT de OpenAI para evaluar:

  • Precisión: Corrección de las respuestas
  • Completitud: Minuciosidad de los resultados
  • Relevancia: Adecuación de la respuesta
  • Claridad: Legibilidad de la respuesta
  • Rendimiento: Eficiencia de la operación

📁 Ver evals/README.md para documentación detallada de evaluación.

Pruebas Tradicionales

# Python unit tests
pytest

# Code quality checks
ruff check .
mypy simplenote_mcp

🛡️ Seguridad

  • Autenticación basada en tokens mediante variables de entorno
  • Sin credenciales codificadas en imágenes Docker
  • Contenedores endurecidos en seguridad con usuarios no root
  • Sistema de archivos de solo lectura en contenedores de producción
  • Límites de recursos para prevenir abusos
  • El transporte HTTP de MCP está cerrado por defecto: MCP_TRANSPORT=http se niega a iniciar en cualquier MCP_HTTP_HOST que no sea de bucle local a menos que MCP_HTTP_AUTH_TOKEN esté configurado (un secreto portador compartido, verificado mediante comparación de tiempo constante). Los enlaces de bucle local (127.0.0.1/localhost) funcionan sin token, coincidiendo con el nivel de confianza de procesos locales de stdio. Configure MCP_HTTP_ALLOWED_HOSTS/MCP_HTTP_ALLOWED_ORIGINS (separados por comas) para habilitar la protección contra el reenlace de DNS para enlaces que no sean de bucle local. Esto está destinado a redes privadas (detrás de un túnel VPN/Tailscale/SSH) — un token compartido estático no tiene ninguna de las propiedades de revocación/auditoría/expiración de OAuth, por lo que evite exponerlo directamente a Internet público incluso con un token configurado.

🚨 Solución de Problemas

Problemas Comunes

Problemas de autenticación:

  • Verifique que SIMPLENOTE_EMAIL y SIMPLENOTE_PASSWORD estén configurados correctamente
  • Compruebe si hay errores tipográficos en las credenciales

Problemas de Docker:

# Check container logs
docker-compose logs

# Restart services
docker-compose restart

# Rebuild if needed
docker-compose up --build

Conexión de Claude Desktop:

# Verify tools are available
./simplenote_mcp/scripts/verify_tools.sh

# Monitor logs
./simplenote_mcp/scripts/watch_logs.sh

Comandos de Diagnóstico

# 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

📚 Desarrollo

Configuración Rápida con 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

Desarrollo Local

# 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

Entorno de Desarrollo

El script de configuración crea:

  • Entorno de desarrollo de Python con todas las dependencias
  • Entorno de Node.js para mcp-evals
  • Archivos de configuración de ejemplo
  • Hooks de pre-commit
  • Validación para todos los archivos de evaluación

Estrategia de Pruebas

  1. Pruebas Unitarias: pytest tradicional de Python para la lógica central
  2. Pruebas de Integración: Pruebas de cumplimiento del protocolo MCP
  3. Pruebas de Humo: Validación rápida de la funcionalidad básica
  4. Pruebas de Evaluación: Evaluación basada en LLM del uso en el mundo real
  5. Pruebas de Rendimiento: Pruebas de carga y estrés

Ejecución de Evaluaciones MCP

Método Docker (Recomendado)

Debido a posibles problemas de permisos con tsx, recomendamos ejecutar las evaluaciones MCP en 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

Método Directo (si los permisos lo permiten)

npm run eval:smoke
npm run eval:basic
npm run eval:comprehensive
npm run eval:all

Desarrollo con Docker

# 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

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Por favor, lea CONTRIBUTING.md para conocer las pautas.

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.

🔗 Proyectos Relacionados


⭐ Apoya el Proyecto

Si encuentras útil este proyecto, ¡considera darle una estrella en GitHub! Tu apoyo ayuda a:

  • 🚀 Aumentar la visibilidad para otros desarrolladores que podrían beneficiarse de esta herramienta
  • 💪 Motivar el desarrollo continuo y el mantenimiento
  • 📈 Construir comunidad en torno al ecosistema del Model Context Protocol
  • 🛡️ Validar la confianza a través de la participación de la comunidad

⭐ Da una estrella a este repositorio — ¡solo toma un clic y significa mucho!


MseeP.ai Security Assessment Badge