Automates the creation and management of blog posts in Astro-based blogs, including frontmatter generation and content formatting
Creates and updates blog post files directly in GitHub repositories, with automatic commit and push capabilities
Integrates with n8n automation workflows to enable programmatic blog post creation and content management through API endpoints
Triggers automatic deployments of Astro blogs hosted on Vercel through deploy hooks after content updates
Astro Blog MCP Server
MCP (Model Context Protocol) Server para automatizar la creación de posts en un blog Astro desplegado en Vercel.
🚀 Características
✅ Creación automática de posts vía API REST
✅ Integración directa con GitHub
✅ Validación y sanitización de inputs
✅ Seguridad con API Keys
✅ Rate limiting
✅ Trigger automático de deployments en Vercel
✅ Compatible con n8n y otras herramientas de automatización
📦 Instalación
1. Clona el repositorio
2. Instala dependencias
3. Configura variables de entorno
Copia .env.example a .env y completa los valores:
Variables requeridas:
GITHUB_TOKEN: Personal Access Token de GitHub con permisos derepoGITHUB_OWNER: Tu usuario de GitHubGITHUB_REPO: Nombre del repositorio de tu blogGITHUB_BRANCH: Branch a usar (default:main)API_SECRET_KEY: Una clave secreta aleatoria de al menos 32 caracteresMCP_PORT: Puerto del servidor (default:3000)DEPLOY_HOOK: (Opcional) Deploy Hook de Vercel
4. Compila el proyecto
🎯 Uso
Iniciar el servidor
Modo desarrollo:
Modo producción:
Probar la API
🔑 Configuración de GitHub Token
Ve a GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
Genera un nuevo token con estos permisos:
repo(acceso completo)
Copia el token y agrégalo a tu
.env
🔗 Configuración de Vercel Deploy Hook
En tu proyecto de Vercel, ve a Settings → Git
En la sección "Deploy Hooks", crea un nuevo hook
Copia la URL y agrégala a
DEPLOY_HOOKen tu.env
📡 API Endpoints
Health Check
Validar configuración
Crear un post
Actualizar un post
🔌 Integración con n8n
Paso 1: Añadir Credentials
En n8n:
Ve a Credentials → New
Selecciona Header Auth
Configura:
Name:
Astro Blog MCPHeader Name:
x-api-keyValue: Tu
API_SECRET_KEY
Paso 2: Crear Workflow
Añade un nodo HTTP Request
Configura:
Method:
POSTURL:
http://tu-servidor:3000/api/postsAuthentication: Selecciona las credentials creadas
Body Content Type:
JSONBody:
{ "title": "{{ $json.title }}", "description": "{{ $json.description }}", "tags": {{ $json.tags }}, "category": "{{ $json.category }}", "content": "{{ $json.content }}" }
Ejemplo de Workflow n8n
🐳 Deploy con Docker
🔒 Seguridad
✅ Autenticación con API Key
✅ Rate limiting (20 req/min)
✅ Validación de nombres de archivo (previene path traversal)
✅ Sanitización de inputs con Zod
✅ Timing-safe comparison para API keys
✅ CORS configurado
🧪 Testing
El proyecto incluye un script de prueba completo:
Esto probará:
Health check
Validación de acceso a GitHub
Creación de un post de prueba
📝 Formato de Posts
Los posts se crean con este front-matter:
🛠️ Troubleshooting
Error: "Failed to validate GitHub access"
Verifica que tu
GITHUB_TOKENsea válidoConfirma que el token tenga permisos de
repoVerifica que
GITHUB_OWNERyGITHUB_REPOsean correctos
Error: "File already exists"
El archivo ya existe en el repositorio
Usa un nombre diferente o el endpoint PUT para actualizar
Error: "API key is required"
Asegúrate de incluir el header
x-api-keyen tus requestsVerifica que la API key coincida con
API_SECRET_KEY
📚 Recursos
📄 Licencia
MIT
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables automated blog post creation and management for Astro blogs deployed on Vercel through GitHub integration. Supports secure API-based operations with automatic deployment triggers and integration with automation tools like n8n.