Simplenote MCP Server
Un servidor para conectar y gestionar tus notas de Simplenote dentro de Claude Desktop.
Documentación
Simplenote MCP Server

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.
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_resourceestaban 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_metade 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_textcon un formatoStatus:/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; requiereconfirm=true; vista previa de simulación por defectoempty_trash: elimina permanentemente todas las notas en la papelera; por defectodry_run=true(vista previa); requieredry_run=falseYconfirm=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; devuelvepublic_urlunpublish_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.mdpara 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 adocs/index.mdpara 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 establev1.18.0- Versión específicamain- Ú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/amd64ylinux/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
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
SIMPLENOTE_EMAIL | Sí | - | Tu correo electrónico de cuenta de Simplenote |
SIMPLENOTE_PASSWORD | Sí | - | Tu contraseña de cuenta de Simplenote |
SYNC_INTERVAL_SECONDS | No | 120 | Intervalo de sincronización de caché en segundos |
CACHE_MAX_SIZE | No | 10000 | Máximo de notas en memoria: establece ≥ tu número total de notas |
LOG_LEVEL | No | INFO | Nivel de registro (DEBUG, INFO, WARNING, ERROR) |
SIMPLENOTE_OFFLINE_MODE | No | false | Omite las llamadas a la API; se usa para pruebas sin credenciales |
MCP_TRANSPORT | No | stdio | stdio o http: el transporte del protocolo MCP |
MCP_HTTP_HOST | No | 127.0.0.1 | Host de enlace cuando MCP_TRANSPORT=http |
MCP_HTTP_AUTH_TOKEN | Condicional | - | Token de portador; obligatorio si MCP_HTTP_HOST no es loopback |
MCP_HTTP_ALLOWED_HOSTS | No | - | Lista de permitidos separada por comas para la protección contra reenlace de DNS |
MCP_HTTP_ALLOWED_ORIGINS | No | - | Lista de permitidos de Origin separada por comas (se usa con la anterior) |
ENABLE_HTTP_ENDPOINT | No | false | Habilita el servidor separado /health, /ready, /metrics |
HTTP_HOST | No | 127.0.0.1 | Host de enlace para el endpoint de monitoreo anterior |
HTTP_PORT | No | 8080 | Puerto para el endpoint de monitoreo anterior |
HTTP_ENDPOINT_AUTH_TOKEN | Condicional | - | 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
| Herramienta | Descripción | Parámetros |
|---|---|---|
create_note | Crear una nueva nota | content, tags (opcional) |
update_note | Reemplazar el contenido completo de la nota (destructivo) | note_id, content, tags (opcional) |
delete_note | Eliminación suave: mover la nota a la Papelera | note_id |
restore_note | Restaurar una nota: moverla de vuelta desde la Papelera | note_id |
permanent_delete_note | Destruir irreversiblemente una sola nota (requiere confirm=true) | note_id, confirm |
empty_trash | Eliminar permanentemente todas las notas en la papelera (simulación por defecto) | dry_run (por defecto true), confirm (por defecto false) |
get_note | Obtener una nota por ID con contenido completo y metadatos | note_id |
add_text | Añadir o anteponer texto sin sobrescribir | note_id, text, position ("end" | "beginning") |
search_notes | Búsqueda de texto completo con filtros y paginación | query, limit, offset, tags, from_date, to_date, created_after, modified_after, pinned, fuzzy, sort_by |
add_tags | Añadir etiquetas a una nota | note_id, tags |
remove_tags | Eliminar etiquetas específicas de una nota | note_id, tags |
replace_tags | Reemplazar todas las etiquetas de una nota | note_id, tags |
list_tags | Listar todas las etiquetas con recuentos de notas | sort_by ("alpha" | "count") |
rename_tag | Renombrar una etiqueta en todas las notas atómicamente | old_tag, new_tag, dry_run (opcional) |
get_note_versions | Listar el historial de versiones de una nota | note_id |
restore_version | Revertir una nota a una versión anterior | note_id, version_number |
get_or_create_note | Buscar o crear atómicamente por título | title, tags (opcional), default_content (opcional) |
append_to_daily_note | Añadir una entrada con marca de tiempo a la nota de hoy | text, tags (opcional) |
replace_section | Reemplazar una sección de Markdown sin tocar las demás | note_id, header, content |
find_untagged_notes | Encontrar notas sin etiquetas | limit (opcional) |
bulk_tag | Aplicar etiquetas a múltiples notas en una sola llamada | note_ids, tags |
export_notes | Exportar notas a Markdown o JSON | format, tags (opcional), query (opcional) |
find_and_merge_duplicates | Detectar y fusionar notas duplicadas | dry_run (opcional), similarity_threshold (opcional) |
get_server_info | Versió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.BrokenResourceErrordurante 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.mdpara más detalles
Mejoras de documentación:
- Añadida documentación completa
CHANGELOG.mdcon historial de versiones completo - Creado
TESTING_CLAUDE_DESKTOP.mdpara 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=httpse niega a iniciar en cualquierMCP_HTTP_HOSTque no sea de bucle local a menos queMCP_HTTP_AUTH_TOKENesté 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. ConfigureMCP_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_EMAILySIMPLENOTE_PASSWORDesté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
- Pruebas Unitarias: pytest tradicional de Python para la lógica central
- Pruebas de Integración: Pruebas de cumplimiento del protocolo MCP
- Pruebas de Humo: Validación rápida de la funcionalidad básica
- Pruebas de Evaluación: Evaluación basada en LLM del uso en el mundo real
- 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!
