tymewear-mcp
Servidor MCP de Tyme Wear
Un servidor Model Context Protocol que conecta Claude a la plataforma de sensores de respiración Tyme Wear. Analiza tus datos ventilatorios, actividades, umbrales y zonas de entrenamiento directamente a través de Claude.
Construido sobre la misma arquitectura que trainingpeaks-mcp.
¿Qué es Tyme Wear?
Tyme Wear fabrica la banda torácica VitalPro, un sensor de respiración portátil que mide métricas ventilatorias (frecuencia respiratoria, volumen corriente, ventilación minuto) junto con la frecuencia cardíaca. Utiliza umbrales ventilatorios (VT1, VT2) para definir zonas de entrenamiento personalizadas. Utilizado por el Team Visma | Lease a Bike.
Related MCP server: Strava MCP Server
Características
40 herramientas MCP para perfil, actividades, datos de respiración, umbrales VE, análisis compacto por actividad, archivos/detección de actividad, planes de entrenamiento, recomendaciones de ejercicios, integraciones, suscripción/cuenta, fisiología en reposo/máxima y exportaciones
Almacenamiento seguro de credenciales mediante llavero del sistema (macOS Keychain / Administrador de credenciales de Windows) con respaldo de archivo cifrado AES-256-GCM
Autenticación automática con almacenamiento en caché de tokens y reautenticación automática al expirar
Datos de respiración inteligentes con modos resumen, ventana y completo para evitar desbordamiento de contexto
Información por actividad (
tw_get_activity_insights): VT1/VT2/VO2max detectados con potencia medida en el umbral, puntuaciones de confianza, indicador de prueba truncada y tiempo/calorías por zona — en una sola llamada, sin análisis FITAnálisis compacto de actividad (
tw_get_activity_analysis): marcas de tiempo reconciliadas, resumen etiquetado y estados de capacidad, por canal procesado/nuevo procesado/respaldo FIT, fusión determinista por segundos transcurridos y paginaciónCargas de actividad ligeras:
tw_get_activityytw_get_activity_workout_zone_detectionomiten por defecto los arrays de varios MB por segundo (se pueden incluir de nuevo coninclude=[...])Modo HTTP Streamable público con autenticación de portador estático u OAuth (conector de un clic para claude.ai), de un solo inquilino para la cuenta de Tyme Wear del operador
Inicio rápido
1. Instalar
git clone https://github.com/tkelkermans/tymewear-mcp.git
cd tymewear-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e .2. Autenticarse
tymewear-mcp authIntroduce tu correo electrónico y contraseña de Tyme Wear. Las credenciales se almacenan de forma segura en el llavero del sistema con un respaldo de archivo cifrado.
3. Configurar Claude Desktop
Añade a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
{
"mcpServers": {
"tymewear": {
"command": "/path/to/tymewear-mcp/.venv/bin/tymewear-mcp",
"args": ["serve"]
}
}
}O ejecuta tymewear-mcp config para generar el fragmento con la ruta correcta.
4. Reiniciar Claude Desktop
Las herramientas de Tyme Wear aparecerán en la lista de herramientas de Claude.
Comandos CLI
Comando | Descripción |
| Almacenar credenciales de Tyme Wear (interactivo o con |
| Verificar si las credenciales almacenadas son válidas |
| Eliminar credenciales almacenadas |
| Generar fragmento de configuración para Claude Desktop |
| Iniciar el servidor MCP (transporte stdio) |
| Iniciar el servidor HTTP Streamable público |
Despliegue en Internet público
serve-public expone un endpoint MCP HTTP Streamable para despliegues alojados. Está autenticado y no tiene estado; no es una API pública anónima.
Servidor público
Establece la URL pública y uno o más tokens de portador MCP mediante variables de entorno. Cada token de portador debe tener al menos 32 caracteres; utiliza un secreto aleatorio generado.
export TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp"
export TYMEWEAR_PUBLIC_BEARER_TOKENS="replace-with-a-long-random-secret-of-32-plus-chars"
tymewear-mcp serve-public \
--host 0.0.0.0 \
--port 8000 \
--public-url "$TYMEWEAR_PUBLIC_URL"El endpoint MCP es /mcp por defecto. /healthz devuelve solo {"status":"ok"} y no expone datos de clientes.
Contenedor
El Dockerfile incluido ejecuta el servidor público como un usuario no root. Inyecta los secretos en tiempo de ejecución:
docker build -t tymewear-mcp-public .
docker run --rm -p 8000:8000 \
-e TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp" \
-e TYMEWEAR_PUBLIC_BEARER_TOKENS="replace-with-a-long-random-secret-of-32-plus-chars" \
tymewear-mcp-publicVercel
El repositorio también incluye un punto de entrada ASGI Python de Vercel raíz (main.py). El framework Python de Vercel enruta las solicitudes directamente a la aplicación ASGI, por lo que vercel.json no debe reescribir /mcp, /healthz o /.well-known/* a una ruta de función interna. Vincula el directorio local al proyecto de Vercel deseado, conecta ese proyecto al repositorio Git, luego configura al menos TYMEWEAR_PUBLIC_BEARER_TOKENS tanto para Producción como para Vista Previa. El punto de entrada falla de forma segura si la variable de entorno del token de portador público está ausente. Utiliza un token de portador de Vista Previa separado para limitar el alcance de las credenciales. Se recomienda TYMEWEAR_PUBLIC_URL para alias de producción, pero los despliegues de vista previa pueden derivarlo de la URL de despliegue de Vercel.
PRODUCTION_TOKEN_FILE=/path/to/generated-production-bearer-token
PREVIEW_TOKEN_FILE=/path/to/generated-preview-bearer-token
chmod 600 "$PRODUCTION_TOKEN_FILE" "$PREVIEW_TOKEN_FILE"
vercel link
vercel git connect
vercel env add TYMEWEAR_PUBLIC_BEARER_TOKENS production --sensitive --yes < "$PRODUCTION_TOKEN_FILE"
vercel env add TYMEWEAR_PUBLIC_BEARER_TOKENS preview --sensitive --yes < "$PREVIEW_TOKEN_FILE"Mantén los archivos de token legibles solo por su propietario; el envoltorio de despliegue rechaza los archivos de token accesibles por grupo u otros. Usa vercel env update TYMEWEAR_PUBLIC_BEARER_TOKENS production --sensitive --yes < "$PRODUCTION_TOKEN_FILE" al rotar un token existente. No pases tokens de portador a través de vercel deploy --env, echo de shell u otros argumentos de comando que puedan terminar en el historial del shell o en listados de procesos.
La misma ruta está envuelta por scripts/deploy_public_vercel.sh para despliegues de recuperación manual. Requiere un enlace de proyecto de Vercel existente, sube el token desde un archivo, despliega en producción y ejecuta scripts/verify_public_endpoint.py contra la URL MCP desplegada:
scripts/deploy_public_vercel.sh --token-file "$PRODUCTION_TOKEN_FILE"Establece PYTHON=/path/to/python cuando el verificador deba ejecutarse con un intérprete específico, como el entorno virtual del repositorio.
Despliegue automatizado (CI/CD)
.github/workflows/deploy.yml ejecuta el conjunto de pruebas bloqueado (ruff + mypy + pytest) en cada push y pull request. No contiene credenciales de Vercel ni despliega la aplicación.
La integración Git de Vercel vinculada crea despliegues de vista previa para ramas de características y pull requests, luego crea el despliegue de producción cuando se actualiza main. No se requiere un secreto de GitHub Actions VERCEL_TOKEN. Las variables de tiempo de ejecución como TYMEWEAR_PUBLIC_BEARER_TOKENS permanecen gestionadas en el proyecto de Vercel y persisten en los despliegues de Git.
Conector claude.ai (OAuth)
El token de portador estático funciona para clientes compatibles con cabeceras (Claude Code: claude mcp add --transport http <url> --header "Authorization: Bearer <token>"). El conector de claude.ai, en cambio, se autentica mediante OAuth, por lo que para añadir el MCP allí, el servidor funciona como un recurso protegido OAuth: valida tokens de acceso JWT de un proveedor gestionado (por ejemplo, WorkOS AuthKit o Stytch) y aplica una lista de permitidos de correos electrónicos. Sigue siendo de un solo inquilino: cada usuario autorizado lee los datos del operador mediante credenciales del lado del servidor.
Establece estas variables de entorno de Vercel (sensibles) para habilitarlo:
Var | Propósito |
| URL del emisor del proveedor (habilita el modo de recurso protegido OAuth) |
|
|
| URL JWKS explícita opcional (de lo contrario, se descubre desde el emisor) |
| Ámbitos opcionales para anunciar al cliente (por defecto |
| Lista de permitidos separada por comas de correos electrónicos autorizados a conectarse |
| Credenciales de Tyme Wear del operador utilizadas para todas las llamadas ascendentes |
Configuración del proveedor (ejemplo con WorkOS AuthKit): crea una aplicación, habilita el inicio de sesión con Google/correo electrónico, habilita el Registro Dinámico de Clientes para que claude.ai pueda autorregistrarse y copia la URL del emisor en TYMEWEAR_PUBLIC_ISSUER_URL. Luego añade el conector en claude.ai → descubre el proveedor a través de /.well-known/oauth-protected-resource del servidor, se registra y ejecuta el inicio de sesión alojado; solo se admiten los correos electrónicos de la lista de permitidos.
La ruta estática TYMEWEAR_PUBLIC_BEARER_TOKENS sigue funcionando junto con OAuth (modo dual). Sin TYMEWEAR_PUBLIC_ISSUER_URL, OAuth está desactivado y solo la ruta del portador está activa.
Verificación posterior al despliegue
Después del despliegue, verifica el endpoint público sin imprimir secretos:
TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp" \
python scripts/verify_public_endpoint.py --bearer-token-file "$TOKEN_FILE"El verificador comprueba /healthz, el rechazo de /mcp no autenticado, initialize MCP autenticado, tools/list autenticado, las herramientas de perfil/análisis compacto requeridas y las cabeceras públicas de seguridad/sin caché.
También confirma que los despliegues públicos no anuncian lecturas de actividad sin procesar ni exportaciones de disco, y que los despliegues por defecto no anuncian herramientas de mutación.
Autenticación del cliente público
El modo público es de un solo inquilino: se autentica ascendentemente con Tyme Wear utilizando las propias credenciales del operador desde TYMEWEAR_EMAIL / TYMEWEAR_PASSWORD (env del lado del servidor), por lo que cada llamante autorizado lee los datos del operador. Los clientes solo necesitan demostrar que están autorizados a conectarse; no hay un token de Tyme Wear por solicitud.
Los clientes compatibles con cabeceras (por ejemplo, Claude Code) envían el token de portador de puerta de enlace estático:
Authorization: Bearer <TYMEWEAR_PUBLIC_BEARER_TOKENS entry>Cuando OAuth está habilitado (TYMEWEAR_PUBLIC_ISSUER_URL establecido), los clientes como el conector de claude.ai envían en su lugar un JWT emitido por el proveedor obtenido a través del inicio de sesión alojado; el servidor lo valida (firma mediante JWKS, emisor, audiencia opcional) y admite solo los correos electrónicos de la lista de permitidos. Ambas rutas funcionan a la vez (modo dual).
Las revisiones anteriores requerían un
X-Tymewear-Tokenpor solicitud. El modo de un solo inquilino lo eliminó: las credenciales ahora están en el lado del servidor.
Política de datos públicos
En modo público:
El acceso está controlado por el token de portador estático y/o la lista de permitidos de correos electrónicos OAuth; solo se conectan las identidades de la lista de permitidos.
Las credenciales de Tyme Wear del operador residen únicamente en el entorno del lado del servidor (mantenlas en un gestor de secretos). Se leen directamente del entorno — el modo público no toca el llavero local ni el archivo de credenciales cifrado (esos escriben en
$HOME, que es de solo lectura en serverless).Cada resultado de herramienta y error público estable pasa a través de una proyección de privacidad recursiva no mutante antes de la serialización JSON. Elimina valores no JSON, números no finitos, correos electrónicos, UUIDs de usuario/cuenta/perfil, identificadores de dispositivo/números de serie, tokens, URL firmadas/de devolución de llamada/de descarga, rutas S3 o temporales, campos sin procesar pesados y coordenadas fuera del contrato de ubicación de análisis explícito.
tw_get_activity_analysises la interfaz pública compacta de muestras sin procesar. Mantiene disponibilidad etiquetada, capacidad, canal, procedencia, resumen y datos de muestra paginados.include_locationdebe ser el booleano literaltrue; solo entonces pueden sobrevivirraw_samples.data[*].position_lat/position_longy sus metadatos de canal coincidentes. Las coordenadas de inicio, genéricas y no relacionadas siempre se eliminan.Las respuestas públicas incluyen
Cache-Control: no-store,Pragma: no-cache,X-Robots-Tag: noindex, nofollow, HSTS para URL públicas HTTPS y cabeceras de seguridad de referencia para reducir el almacenamiento en caché accidental por intermediarios, la indexación y la filtración de datos del cliente en el navegador.Las herramientas de mutación de perfil/actividad están ocultas y devuelven
PUBLIC_MUTATIONS_DISABLEDpor defecto. Solo actívalas con--allow-mutationsoTYMEWEAR_PUBLIC_ALLOW_MUTATIONS=truepara despliegues de confianza.Las herramientas de exportación de archivos CSV, FIT y de correa devuelven
PUBLIC_EXPORTS_DISABLEDporque la implementación local escribe archivos en disco.tw_get_processed_data,tw_get_new_processed_data,tw_get_activity_logsytw_get_activity_strap_filesestán ocultas y devuelvenPUBLIC_RAW_DATA_DISABLED, incluso cuando las mutaciones están habilitadas. El modo stdio local conserva estas herramientas. La detección compacta de zonas de entrenamiento sigue siendo pública.
Los errores de herramientas públicas son estables y no reflejan el texto de excepción ascendente:
Código | Significado |
| La solicitud no coincide con el esquema estricto de herramienta publicado |
| La herramienta solicitada no está registrada |
| Las credenciales de Tyme Wear del servidor no están disponibles |
| Falló una operación de cliente público, manejador, cierre o proyección |
| Una herramienta de lectura de datos brutos/registros/archivos no está disponible en modo público |
| Una exportación que escribe en disco no está disponible en modo público |
| Una mutación no está disponible sin la aceptación explícita de implementación de confianza |
Endurecimiento de Producción
Termine TLS en el borde y configure
TYMEWEAR_PUBLIC_URLen la URL HTTPS MCP canónica.Mantenga la ruta de
TYMEWEAR_PUBLIC_URLalineada con la ruta MCP montada (/mcppor defecto). El modo público rechaza cadenas de consulta, fragmentos y discrepancias de ruta/trayecto en el inicio.Inyecte
TYMEWEAR_PUBLIC_BEARER_TOKENSdesde un gestor de secretos, no del historial del shell ni del control de código fuente. Los tokens de menos de 32 caracteres se rechazan al inicio.Mantenga las implementaciones públicas como solo lectura a menos que tenga un requisito específico de cliente de confianza para mutaciones de perfil/actividad.
Prefiera un proxy OAuth o consciente de identidad delante de
serve-publicpara clientes no confiables; rote los tokens bearer estáticos regularmente.Al usar un proxy con capacidad OAuth o servidor de autorización, establezca
TYMEWEAR_PUBLIC_ISSUER_URLo--issuer-urlpara que los clientes MCP puedan descubrir metadatos de recursos protegidos.Los cuerpos de solicitudes HTTP públicas tienen un límite de 1 MiB por defecto, incluidos los cuerpos fragmentados/transmitidos. Anule con
TYMEWEAR_PUBLIC_MAX_BODY_BYTESo--max-body-bytessolo si una implementación de confianza necesita solicitudes JSON-RPC más grandes.Mantenga deshabilitado el registro del encabezado de autorización, el cuerpo de la solicitud y el cuerpo de la respuesta en el proxy inverso y la plataforma de aplicación.
Restrinja el tráfico de salida de red a los hosts de la API de Tyme Wear donde su plataforma lo admita.
Establezca valores explícitos de
--allowed-hosty--allowed-origincuando el host de la URL pública no sea el único host/origen válido. El modo público rechaza los encabezadosHostno confiables en todas las rutas, rechaza la configuración de host/origen con comodín*, requiere que los orígenes permitidos sean orígenes http(s) exactos sin rutas, y requiere que los orígenes que no sean localhost usen HTTPS.
Herramientas Disponibles
Autenticación y Perfil
Herramienta | Descripción |
| Verificar estado de autenticación y validez del token |
| Obtener perfil del atleta: peso, altura, objetivos de VE (VT1, BP, VT2, VO2max) por deporte, estado de suscripción, cuentas externas |
| Actualizar campos del perfil (peso, altura, unidades) |
Actividades
Herramienta | Descripción |
| Listar actividades con paginación por cursor y filtros de sitio web para deportes, tipos de actividad, búsqueda, ID de usuario y equipo profesional |
| Detalle completo de la actividad: duración, umbrales, zonas, TSS, firmware, enlaces de terceros. Los arrays pesados se resumen por defecto. Los llamadores stdio locales pueden usar |
| Análisis compacto de solo lectura con marcas de tiempo conciliadas, resumen, puntos de ruptura, capacidades explícitas, fuente/unidad/cobertura/procedencia por canal, y muestras fusionadas antes de la paginación. |
| Informe compacto por actividad: VE+FC+confianza de VT1/VT2/Resistencia, potencia medida en el umbral, tiempos de puntos de ruptura detectados, tiempo/calorías por zona, banderas de calidad, una bandera de prueba truncada, y objetivos de VE — funciona para pruebas y recorridos |
| Estado de procesamiento de algoritmo para una actividad |
| Fijar/desfijar una actividad para detección de umbrales |
| Obtener la actividad actualmente fijada |
| Eliminar una actividad (irreversible) |
Datos de Respiración
Herramienta | Descripción |
| Serie temporal de respiración por segundo solo local con modos resumen, ventana y completo; el modo público usa |
| Datos procesados en nuevo formato solo local cuando están disponibles; el modo público usa |
Archivos de Actividad y Detección
Herramienta | Descripción |
| Obtener registros/eventos de actividad de solo lectura solo local |
| Obtener metadatos de archivos de correa solo local cuando están disponibles |
| Exportar archivos de correa brutos cuando están disponibles |
| Detección de zonas de entrenamiento (tiempo/calorías por zona, VE+FC+confianza de VT1/VT2, potencia estimada). Las nubes de puntos se resumen por defecto. Los llamadores stdio locales pueden usar |
Planes de Entrenamiento y Entrenamientos
Herramienta | Descripción |
| Obtener plan de entrenamiento actual |
| Obtener datos del plan de entrenamiento para una fecha |
| Obtener datos del plan de entrenamiento para una semana |
| Obtener historial del plan de entrenamiento |
| Obtener configuración del plan de entrenamiento |
| Obtener vista previa del plan de entrenamiento |
| Obtener recomendación de entrenamiento |
Integraciones y Cuenta
Herramienta | Descripción |
| Listar integraciones |
| Obtener detalles de integración |
| Obtener salud/estado de integración |
| Obtener estado de suscripción |
| Obtener planes de suscripción disponibles |
| Obtener valores fisiológicos en reposo/máximos |
Umbrales y Zonas
Herramienta | Descripción |
| Objetivos de VE actuales (VT1, BP, VT2, VO2max) por deporte |
| Unir una serie de potencia externa ( |
| Distribución de tiempo en zonas entre actividades |
| Etiquetar un umbral ventilatorio (vt1, vt2, bp, vo2max) de una actividad específica |
| Etiquetar un valor de zona de nuevo modelo (fatmax, vt1, vt2, vo2max) de una actividad específica |
Valores Máximos
Herramienta | Descripción |
| Listar notificaciones de detección de valor máximo pendientes |
| Aceptar o descartar un valor máximo detectado |
Exportaciones
Herramienta | Descripción |
| Exportar actividad como CSV |
| Exportar CSV completo con todos los canales de datos |
| Exportar actividad como archivo FIT |
Ejemplos de Prompts
Una vez configurado, puedes pedirle a Claude cosas como:
"Muéstrame mis últimas 10 actividades en bicicleta"
"Analiza los datos de respiración de mi salida de ayer: ¿cuáles fueron mi VE promedio y el tiempo en cada zona?"
"¿Cuáles son mis umbrales actuales de VT1 y VT2 para ciclismo?"
"Extrae la información de mi última prueba de umbral: ¿cuál es mi potencia en VT2 y alcanzó el VO2max?"
"Exporta mi última actividad como archivo FIT"
"Compara mis objetivos de VE entre correr y ciclismo"
"Muéstrame mi plan de entrenamiento actual y la recomendación de entrenamiento"
"Verifica si mi última salida tiene archivos de correa, registros o resultados de detección de zonas de entrenamiento"
"Enumera mis integraciones conectadas y el estado de la suscripción"
Seguridad
Las credenciales se almacenan en el llavero del sistema (recomendado) o en un archivo cifrado AES-256-GCM con derivación de clave PBKDF2 (600K iteraciones, sal específica de la máquina)
Los tokens y credenciales nunca se devuelven en los resultados de la herramienta MCP (se sanitizan antes de llegar a Claude)
Autenticación por variable de entorno disponible para CI/contenedores:
TYMEWEAR_EMAIL+TYMEWEAR_PASSWORDLos permisos de archivo se establecen en 600 (solo lectura/escritura del propietario) en los archivos de credenciales cifrados
El modo público requiere autenticación bearer u OAuth y es de un solo inquilino: la autenticación upstream de Tyme Wear usa las variables de entorno del servidor
TYMEWEAR_EMAIL/TYMEWEAR_PASSWORD(nunca el llavero local ni el archivo cifrado, que son de solo lectura en serverless), cada resultado tiene privacidad protegida, y las herramientas de exportación/archivo/raw están deshabilitadas
Arquitectura
tymewear-mcp/
├── src/tymewear_mcp/
│ ├── cli.py # CLI entry point
│ ├── server.py # MCP server + 40 tool registrations
│ ├── public.py # Public Streamable HTTP server + bearer/OAuth auth
│ ├── auth/ # Credential storage (keyring → encrypted → env) + OIDC verifier (oidc.py)
│ ├── client/ # Async HTTP client + Pydantic models
│ └── tools/ # Tool implementations (incl. threshold_analysis.py, _slimming.py)
└── tests/ # 340 testsStack tecnológico: Python 3.10+, MCP SDK, httpx, Pydantic, keyring, cryptography, PyJWT
Desarrollo
pip install -e ".[dev]"
pytest tests/ -v # Run tests
ruff check src tests # Lint
mypy src/ # Type checkLicencia
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceConnects Claude Desktop to Garmin Connect, enabling natural language queries of fitness activity data, health metrics, sleep analysis, workout management, and device information with 94 available tools.1101MIT
- AlicenseAqualityDmaintenanceConnects Claude to your Strava account for analyzing training, predicting race times, and generating periodized training plans via natural language.1361ISC
- FlicenseNot gradedqualityBmaintenanceConnects Claude to Garmin Connect data for personalized running coaching, including morning readiness checks, post-run analysis, weekly reviews, and goal tracking.
- AlicenseAqualityDmaintenanceConnects Strava training data to Claude, enabling personalized coaching through analysis of training load, workout planning, gear maintenance, and power metrics.10MIT
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tkelkermans/tymewear-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server