Church Website Editor

Edita tu sitio web de la iglesia con ChatGPT o Claude

Documentación

Referencia para desarrolladores

Church Website Editor MCP server

Un servidor de Model Context Protocol que permite a un asistente de IA editar el sitio web de una iglesia operando directamente sobre su repositorio de GitHub. Escribe commits en la rama predeterminada y se despliega automáticamente a producción vía Vercel en unos 30 segundos. 25 herramientas, GitHub-OAuth limitado a los repositorios propios del llamador.

¿Buscas la versión en lenguaje sencillo? Consulta la guía del pastor.

Conexión

Endpointhttps://www.elijahdesent.com/api/mcp
TransporteStreamable HTTP (sin estado)
Servidorelijahdesent-crm v0.10.0
AutenticaciónOAuth 2.1 — identidad vía GitHub
Metadatos de autorización/.well-known/oauth-authorization-server
Metadatos de recurso protegido/.well-known/oauth-protected-resource

El endpoint anuncia OAuth 2.1 con registro dinámico de clientes; los documentos de descubrimiento anteriores permiten que un cliente MCP compatible negocie el flujo automáticamente. Los tokens están vinculados a la cuenta de GitHub que tiene acceso al repositorio de la iglesia, por lo que cada llamada se limita a los repositorios que el llamador ya posee.

Añadir como conector remoto

{
  "mcpServers": {
    "church-website-editor": {
      "url": "https://www.elijahdesent.com/api/mcp"
    }
  }
}

La mayoría de los clientes (Claude, modo desarrollador de ChatGPT, Perplexity) lo añaden a través de su interfaz de conectores — consulta el tutorial de configuración. En la primera conexión, el cliente abre un inicio de sesión de GitHub para autorizar.

Convenciones

  • repo acepta un name simple — el servidor completa el propietario de GitHub del llamador. Usa owner/name solo para otra organización.
  • Cada escritura exitosa es un commit en la rama predeterminada. Vercel se despliega automáticamente al hacer push; no hay paso de despliegue separado.
  • Prefiere replace_in_file para ediciones. edit_file reemplaza el archivo completo y está protegido contra borrados parciales de contenido (allow_shrink para anular).
  • Las herramientas de lectura nunca mutan; las herramientas de commit hacen push al repositorio; las herramientas de estado solo informan del estado.

Herramientas

Conexión y descubrimiento

Establece la identidad y encuentra los repositorios y sitios que el llamador puede tocar.

connection_statusstatus

Confirma que el llamador está autenticado y que el enlace de GitHub está activo. Úsalo para diagnosticar fallos de autenticación.

Sin parámetros.

Devuelve usuario autenticado, estado del enlace de GitHub y el/los sitio(s) de la iglesia vinculados a la cuenta.

list_my_sitesstatus

Lista la(s) iglesia(s) vinculadas al llamador en el CRM, con sus dominios en vivo.

Sin parámetros.

Devuelve array de { church, domain }.

list_reposread

Lista los repositorios de GitHub a los que el llamador puede acceder. Limitado al propietario por defecto.

ParamTypeDescription
filterstringSubcadena para filtrar nombres de repositorios (p. ej. 'baptist').

Devuelve array de { name, description, default_branch, private }.

search_reposread

Encuentra un repositorio buscando coincidencias tanto en su nombre COMO en su descripción. Más amplio que list_repos (solo nombre) — úsalo cuando sepas de qué trata un sitio pero no el nombre exacto del repositorio.

ParamTypeDescription
queryreqstringTexto para buscar coincidencias en el nombre o descripción del repositorio (p. ej. 'baptist', una ciudad, el nombre de un pastor).
limitintegerCuántas coincidencias devolver, 1–50. Por defecto 20.

Devuelve repositorios coincidentes, los más recientes primero, cada uno con descripción, visibilidad y última actualización.

get_repo_inforead

Informa de las versiones de frameworks de un repositorio para que las ediciones coincidan con sus convenciones. Llámalo antes de cualquier edición de código no trivial.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.

Devuelve versiones de Next.js / React / Tailwind, uso de TypeScript y router (app vs pages).

Lectura de contenido

Navega por el árbol, lee archivos, busca e inventaría imágenes en vivo. Todo de solo lectura.

list_pagesread

Lista el contenido de un directorio. Una ruta vacía lista la raíz del repositorio.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathstringRuta del directorio; cadena vacía para la raíz del repositorio (por defecto).
refstringRama, etiqueta o SHA. Por defecto, la rama predeterminada del repositorio.

Devuelve array de { name, type: 'file' | 'dir' }.

read_fileread

Lee el contenido UTF-8 completo de un archivo. Siempre lee antes de editar.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathreqstringRuta del archivo dentro del repositorio.
refstringRama, etiqueta o SHA. Por defecto, la rama predeterminada del repositorio.

Devuelve el contenido completo del archivo.

search_contentread

Búsqueda recursiva de contenido (obtiene el árbol y busca en cada archivo de texto) — funciona en repositorios nuevos y sin indexar.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
queryreqstringTexto a buscar sin distinguir mayúsculas/minúsculas.
refstringRama, etiqueta o SHA. Por defecto, la rama predeterminada del repositorio.
path_prefixstringSolo buscar rutas que comiencen con esto (p. ej. 'src/app/').

Devuelve hasta 30 archivos coincidentes, cada uno con los números de línea coincidentes.

list_photosread

Inventaría archivos de imagen con sus URLs en vivo exactas. Llámalo antes de apuntar una página a una foto para evitar errores tipográficos de imágenes rotas.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
folderstringCarpeta desde la que listar. Por defecto 'public' (imágenes servidas por el sitio).
refstringRama, etiqueta o SHA. Por defecto, la rama predeterminada del repositorio.

Devuelve array de imágenes con ruta del repositorio y URL en vivo.

Escritura de contenido

Cada escritura exitosa es un commit en la rama predeterminada, que se despliega automáticamente a producción vía Vercel (~30s).

replace_in_filecommit

Edición dirigida — reemplaza texto exacto. Preferida para cambios pequeños; solo toca lo que especifiques.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathreqstringRuta del archivo dentro del repositorio.
old_stringreqstringTexto exacto a buscar, incluidos los espacios en blanco. Añade contexto para hacerlo único.
new_stringreqstringTexto de reemplazo.
messagereqstringMensaje de commit en lenguaje sencillo.
branchstringRama a la que hacer commit. Por defecto, la rama predeterminada.
replace_allbooleanReemplazar cada aparición. Por defecto false (debe coincidir exactamente una vez).

Devuelve confirmación del commit.

edit_filecommit

Crea un archivo nuevo o reemplaza el contenido COMPLETO de un archivo. Tiene una protección contra borrados parciales de contenido.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathreqstringRuta del archivo dentro del repositorio.
contentreqstringContenido completo del archivo nuevo (UTF-8).
messagereqstringMensaje de commit en lenguaje sencillo.
branchstringRama a la que hacer commit. Por defecto, la rama predeterminada.
allow_shrinkbooleanAnula la protección que rechaza escrituras que eliminan >20 líneas Y <60% del tamaño anterior.

Devuelve confirmación del commit, o un rechazo si se activa la protección contra reducción.

upload_photocommit

Añade una foto/video. Llamado sin data\, devuelve un enlace de subida de un solo uso; las imágenes pequeñas se confirman en el repositorio, los videos y archivos grandes se enrutan automáticamente al almacenamiento alojado.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathreqstringUbicación de guardado. Usa 'public/.' para imágenes servidas por el sitio.
messagereqstringMensaje de commit en lenguaje sencillo.
datastringAvanzado — bytes de imagen en base64. Omítelo para obtener un enlace de subida en su lugar.
branchstringRama a la que hacer commit. Por defecto, la rama predeterminada.

Devuelve un enlace de subida de un solo uso (por defecto), o una confirmación de commit cuando se proporciona data\.

get_uploaded_photo_urlread

Resuelve dónde aterrizó una subida después de que el usuario haya usado el enlace de upload_photo.

ParamTypeDescription
tokenreqstringEl enlace de subida (https://.../u/) o el token simple.

Devuelve HOSTED (URL de almacenamiento permanente), COMMITTED (ruta del repositorio en vivo) o PENDING (aún no subido).

Historial y deshacer

Inspecciona commits y revierte cambios de forma no destructiva.

list_recent_changesread

Lista commits recientes, los más nuevos primero.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
pathstringLimitar a commits que toquen este archivo/directorio.
limitintegerCuántos devolver, 1–50. Por defecto 15.

Devuelve array de { short SHA, time, author, message }.

show_changeread

Obtén el mensaje, los archivos tocados y el diff de un commit.

ParamTypeDescription
reporeqstringRepositorio como 'owner/name', o 'name' simple para usar el propietario de GitHub del llamador.
shareqstringSHA del commit (completo o corto).

Devuelve parche por archivo con líneas añadidas/eliminadas.

revert_changecommit

Deshace un commit creando un commit nuevo que restaura el estado anterior. El commit original permanece en el historial.

ParámetroTipoDescripción
reporeqstringRepositorio como 'owner/name', o solo 'name' para usar el propietario de GitHub del llamante.
shareqstringSHA del commit a revertir.
branchstringRama sobre la que aplicar la reversión. Por defecto, la rama predeterminada.

Devuelve la confirmación de la reversión del commit.

Despliegue

Confirma que los cambios llegaron a producción.

check_deploy_statusstatus

Comprueba si los cambios recientes se desplegaron. Descubre automáticamente los sitios del llamante desde el acceso de GitHub.

ParámetroTipoDescripción
repostringLimitar a un repositorio. Omitir para comprobar todos los sitios del llamante.

Devuelve el estado de despliegue por sitio; en caso de fallo, las últimas líneas de la salida de compilación.

Dominios personalizados

Adjunta un dominio personalizado a un sitio en Vercel y confirma que apunta correctamente. Limitado a proyectos vinculados a repositorios a los que el llamante puede acceder. El pastor cambia sus servidores de nombres en su registrador; las herramientas nunca tocan el registrador directamente.

connect_domainvercel

Adjunta un dominio personalizado al proyecto de Vercel del llamante y devuelve instrucciones en lenguaje sencillo para apuntar los servidores de nombres del dominio a Vercel (con una alternativa A/CNAME para dominios que alojan correo). Un apex desnudo empareja automáticamente su 'www.'. Se activa una vez que los servidores de nombres se propagan.

ParámetroTipoDescripción
domainreqstringDominio a conectar, p. ej. 'gracebaptist.org' o 'www.gracebaptist.org'.
repostringQué sitio, como 'owner/name' o 'name'. Solo se necesita si el llamante tiene varios sitios.

Devuelve confirmación más los servidores de nombres de Vercel para configurar en el registrador (desde la API de Vercel, p. ej. ns1/ns2.vercel-dns.com), y un respaldo A/CNAME.

check_domainstatus

Comprueba si los servidores de nombres de un dominio conectado apuntan a Vercel y si el sitio está verificado y en vivo. Cuando está completamente en vivo y el llamante posee exactamente una iglesia, lo registra como live_domain de esa iglesia para que la analítica atribuya el tráfico.

ParámetroTipoDescripción
domainreqstringDominio a comprobar, p. ej. 'gracebaptist.org'.
repostringQué sitio, como 'owner/name' o 'name'. Solo se necesita si el llamante tiene varios sitios.

Devuelve el estado de los servidores de nombres (actual vs. esperado) + el estado de verificación del sitio; cuando está en vivo, confirmación de que se ha vinculado para la analítica.

redirect_domainvercel

Cambia a dónde apunta un dominio conectado: redirígelo a otro dominio (p. ej. un dominio antiguo o la versión sin www → el sitio principal), o pasa redirect_to 'none' para servir directamente. No se puede encadenar: el destino no debe ser a su vez una redirección.

ParámetroTipoDescripción
domainreqstringEl dominio conectado a cambiar, p. ej. 'www.gracebaptist.org'.
redirect_tostringDominio al que enviar a los visitantes, p. ej. 'gracebaptist.org'. Usa 'none' (u omítelo) para desactivar la redirección.
permanentbooleanPermanente (308) por defecto; false para un 307 temporal.
repostringQué sitio, como 'owner/name' o 'name'. Solo se necesita si el llamante tiene varios sitios.

Devuelve confirmación de la nueva redirección (o de que el dominio ahora sirve directamente). Informa del error de encadenamiento si el destino es a su vez una redirección.

Analítica

Datos de tráfico de solo lectura, con alcance automático a los sitios propios del llamante. Pasa church\ para desambiguar cuando poseen más de uno.

analytics_summaryread

Tráfico de alto nivel en una ventana reciente.

ParámetroTipoDescripción
churchstringNombre de la iglesia o dominio en vivo.
daysintegerVentana en días, 1–90. Por defecto 28.

Devuelve total de páginas vistas, visitantes únicos (dispositivos), desglose por país y dispositivo.

top_pagesread

Páginas más vistas en una ventana reciente.

ParámetroTipoDescripción
churchstringNombre de la iglesia o dominio en vivo.
daysintegerVentana en días, 1–90. Por defecto 28.
limitintegerCuántas páginas, 1–50. Por defecto 10.

Devuelve páginas clasificadas con recuentos de vistas.

top_referrersread

Principales referidores externos (tráfico directo excluido).

ParámetroTipoDescripción
churchstringNombre de la iglesia o dominio en vivo.
daysintegerVentana en días, 1–90. Por defecto 28.
limitintegerCuántos referidores, 1–50.

Devuelve referidores clasificados con recuentos.

traffic_by_dayread

Tendencia diaria de páginas vistas para detectar picos y semanas tranquilas.

ParámetroTipoDescripción
churchstringNombre de la iglesia o dominio en vivo.
daysintegerVentana en días, 1–90. Por defecto 14.

Devuelve páginas vistas por día.

Puntuación

Audita cualquier sitio web de iglesia según la rúbrica de Church Website Score.

score_websiteread

Obtiene la página de inicio y las subpáginas clave de un sitio y devuelve la rúbrica de calificación más el contenido de la página. El llamante (el modelo) hace la puntuación: la herramienta no llama a ninguna IA por sí misma.

ParámetroTipoDescripción
urlreqstringEl sitio a puntuar, p. ej. 'gracebaptist.org'.

Devuelve la rúbrica completa de 6 categorías / 100 puntos y el contenido de la página obtenido.

Construido y mantenido por Pastor Eli (Elijah Desent) · Pastor@elijahdesent.com