Website to Markdown MCP Server
Obtiene y convierte contenido de sitios web a Markdown con limpieza impulsada por IA, soporte para OpenAPI y navegación sigilosa.
Documentación
🌐 Website to Markdown MCP Server
Un potente servidor de Model Context Protocol (MCP) diseñado para obtener contenido de sitios web y convertirlo a formato Markdown, facilitando que la IA comprenda y procese la información de los sitios web.
✨ Características Principales
| 🌟 Procesamiento Mejorado | 📊 Soporte OpenAPI | ⚙️ Análisis Inteligente | 🎯 Extracción Avanzada |
|---|---|---|---|
| Limpieza de contenido con IA | OpenAPI 3.x/Swagger 2.0 | Cálculo de tiempo de lectura | Detección de contenido principal |
| Eliminación automática de anuncios | Validación profesional | Estadísticas de recuento de palabras | Detección de idioma |
| Resumen de contenido | Análisis estructurado de API | Mecanismo de reintento inteligente | Soporte multi-formato |
🆕 Novedades en v1.2.0
🚀 Mejoras Principales
| Característica | Estado | Descripción |
|---|---|---|
| 🧠 Procesador de Contenido Mejorado | ✅ | Limpieza y extracción de contenido con IA |
| 📊 Analíticas Inteligentes | ✅ | Recuento de palabras, tiempo de lectura, resumen de contenido |
| 🌍 Detección de Idioma | ✅ | Identificación automática de idioma |
| 🎯 Reintento Inteligente | ✅ | Mecanismo de reintento inteligente con retroceso exponencial |
| 🔍 Navegador Sigiloso | ✅ | Capacidades de navegación anti-detección |
| ⚡ Limitación de Velocidad | ✅ | Limitación de velocidad y control de concurrencia integrados |
| 🧹 Limpieza de Contenido | ✅ | Elimina anuncios, navegación y contenido irrelevante |
| 📝 Markdown Mejorado | ✅ | Soporte para tachado, subrayado, resaltados |
🚀 Inicio Rápido
🎯 Método 1: Instalación NPX (🌟 Recomendado)
💡 Forma más fácil: ¡No se necesita instalación local!
Paso 1: Crear Archivo de Configuración 📄
Crea un archivo my-websites.json:
{
"websites": [
{
"name": "your_website",
"url": "https://your-website.com",
"description": "Your Project Website"
},
{
"name": "api_docs",
"url": "https://api.example.com/openapi.json",
"description": "Your API Specification"
}
]
}
Paso 2: Configurar el Servidor MCP ⚙️
Añade a .cursor/mcp.json:
{
"mcpServers": {
"website-to-markdown": {
"command": "npx",
"args": ["-y", "website-to-markdown-mcp"],
"disabled": false,
"env": {
"WEBSITES_CONFIG_PATH": "./my-websites.json"
}
}
}
}
Paso 3: Reiniciar y Probar 🔄
- Reinicia Cursor
- Abre el Chat y usa el modo Agente
- Comando de prueba:
Please list all configured websites
🎉 ¡Listo! ¡No se requiere instalación!
🎯 Método 2: Instalación Local
💡 Mejor Práctica: ¡Usa este método para desarrollo o personalización!
Paso 1: Clonar y Compilar
git clone https://github.com/your-username/website-to-markdown-mcp.git
cd website-to-markdown-mcp
npm install
npm run build
Paso 2: Configurar el Servidor MCP
Añade a .cursor/mcp.json:
{
"mcpServers": {
"website-to-markdown": {
"command": "cmd",
"args": ["/c", "node", "./website-to-markdown-mcp/dist/index.js"],
"disabled": false,
"env": {
"WEBSITES_CONFIG_PATH": "./my-websites.json"
}
}
}
}
🔥 Características de Salida Mejoradas
📊 Análisis de Contenido Enriquecido
Cada contenido obtenido ahora incluye:
- 📝 Resumen de Contenido: Resumen generado por IA del contenido principal
- ⏱️ Tiempo de Lectura: Tiempo de lectura estimado según la longitud del contenido
- 🔢 Recuento de Palabras: Recuento preciso de palabras tanto en inglés como en chino
- 🌍 Detección de Idioma: Identificación automática de idioma
- 🎯 Puntuación de Calidad del Contenido: Evaluación de la relevancia del contenido
📋 Salida Markdown Mejorada
# 🚀 Example Website
**Source**: https://example.com
**Website**: example_site - Example Website
**📊 Reading Time**: 5 minutes
**🔢 Word Count**: 1,250 words
**🌍 Language**: English
**📝 Summary**: This article discusses the latest developments in web technology...
---
[Enhanced Markdown content with better formatting...]
🆕 Soporte Completo de OpenAPI/Swagger
🔥 Documentación Profesional de API
| Característica | OpenAPI 3.x | Swagger 2.0 | Descripción |
|---|---|---|---|
| 🔍 Detección Automática | ✅ | ✅ | Soporta formatos JSON/YAML |
| ✅ Validación Profesional | ✅ | ✅ | Usando @readme/openapi-parser |
| 📋 Análisis Estructurado | ✅ | ✅ | Endpoints, parámetros, respuestas |
| 🔗 Resolución de Referencias | ✅ | ✅ | Maneja automáticamente referencias $ref |
| 📊 Resumen Inteligente | ✅ | ✅ | Genera una visión general de la API |
| 📝 Salida Formateada | ✅ | ✅ | Markdown legible |
🌟 Sitios Web de Ejemplo Preconfigurados
{
"websites": [
{
"name": "petstore_openapi",
"url": "https://petstore3.swagger.io/api/v3/openapi.json",
"description": "🐕 Swagger Petstore OpenAPI 3.0 Spec (Demo)"
},
{
"name": "petstore_swagger",
"url": "https://petstore.swagger.io/v2/swagger.json",
"description": "🐱 Swagger Petstore Swagger 2.0 Spec (Demo)"
},
{
"name": "github_api",
"url": "https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json",
"description": "🐙 GitHub REST API OpenAPI Spec"
}
]
}
📦 Instalación y Configuración
🛠️ Requisitos del Sistema
- Node.js 20.18.1+ (Recomendado: v22.15.0 LTS)
- npm 10.0.0+ o yarn
- Cursor Editor
⚠️ Importante: Algunas dependencias requieren Node.js v20.18.1 o superior. Actualiza tu versión de Node.js si encuentras advertencias de compatibilidad del motor.
⚡ Instalación del Paquete NPM
# Global installation
npm install -g website-to-markdown-mcp
# Or use directly with npx (recommended)
npx website-to-markdown-mcp
🔧 Configuración de Desarrollo
# 1. Clone repository
git clone https://github.com/your-username/website-to-markdown-mcp.git
cd website-to-markdown-mcp
# 2. Install dependencies
npm install
# 3. Build project
npm run build
🎛️ Opciones de Configuración Avanzadas
Orden de Prioridad de Configuración
graph TD
A[🔍 Check Environment Variable<br/>WEBSITES_CONFIG_PATH] --> B{File exists?}
B -->|Yes| C[✅ Load External Config File]
B -->|No| D[🔍 Check Environment Variable<br/>WEBSITES_CONFIG]
D --> E{Valid JSON?}
E -->|Yes| F[✅ Load Embedded Config]
E -->|No| G[🔍 Check config.json]
G --> H{File exists?}
H -->|Yes| I[✅ Load Local Config]
H -->|No| J[🔧 Use Default Config]
🎨 Detalles de los Métodos de Configuración
📋 Método 1: Archivo de Configuración Externo (🌟 Recomendado)
💡 Ventajas: Fácil de editar, resaltado de sintaxis, compatible con control de versiones
🔧 Pasos de Configuración Detallados
-
Crear Archivo de Configuración
# Can be placed anywhere touch my-api-configs.json -
Editar el Contenido de Configuración
{ "websites": [ { "name": "my_docs", "url": "https://docs.example.com", "description": "📚 My Documentation Website" } ] } -
Establecer Variable de Entorno
{ "env": { "WEBSITES_CONFIG_PATH": "./my-api-configs.json" } }
📋 Método 2: JSON Incrustado (Compatible con Versiones Anteriores)
🔧 Ejemplo de Configuración
{
"mcpServers": {
"website-to-markdown": {
"command": "cmd",
"args": ["/c", "node", "./website-to-markdown-mcp/dist/index.js"],
"disabled": false,
"env": {
"WEBSITES_CONFIG": "{\"websites\":[{\"name\":\"example\",\"url\":\"https://example.com\",\"description\":\"Example Website\"}]}"
}
}
}
}
📋 Método 3: config.json Local
🔧 Configuración Local
Edita directamente config.json en el directorio raíz del proyecto:
{
"websites": [
{
"name": "local_site",
"url": "https://local.example.com",
"description": "🏠 Local Test Website"
}
]
}
🔧 Herramientas Disponibles
🌐 Herramientas Generales
| Nombre de la Herramienta | Función | Parámetros | Ejemplo |
|---|---|---|---|
fetch_website | Obtener cualquier sitio web | url: URL del sitio web | Obtener archivos de especificación OpenAPI |
list_configured_websites | Listar sitios web configurados | Ninguno | Ver todos los sitios web disponibles |
🎯 Herramientas Dedicadas
Cada sitio web configurado genera automáticamente herramientas dedicadas correspondientes:
fetch_petstore_openapi- Obtener especificación OpenAPI 3.0 de Petstorefetch_petstore_swagger- Obtener especificación Swagger 2.0 de Petstorefetch_github_api- Obtener especificación de GitHub APIfetch_tailwind_css- Obtener documentación de Tailwind CSS
📊 Ejemplos de Formatos de Salida Mejorados
🌐 Contenido de Sitio Web General con Analíticas
# Website Title
**Source**: https://example.com
**Website**: example_site - Example Website
**📊 Reading Time**: 3 minutes
**🔢 Word Count**: 650 words
**🌍 Language**: English
**📝 Summary**: This article provides a comprehensive overview of modern web development practices, covering frontend frameworks, backend technologies, and deployment strategies.
---
[Enhanced cleaned Markdown content with ads removed and main content extracted...]
📋 Archivo de Especificación OpenAPI 3.x
# 🚀 Example API (v2.1.0)
**Source**: https://api.example.com/openapi.json
**OpenAPI Version**: 3.0.3
**Validation Status**: ✅ Valid
**📊 Processing Time**: 1.2 seconds
**🔢 Endpoints**: 25 endpoints
**🌍 Server Locations**: 3 servers
---
## 📋 API Basic Information
- **API Name**: Example API
- **Version**: 2.1.0
- **OpenAPI Version**: 3.0.3
- **Description**: A powerful example API for modern applications
## 🌐 Servers
1. **https://api.example.com**
- 🏢 Production server
2. **https://staging-api.example.com**
- 🧪 Testing server
## 🛠️ API Endpoints
Total of **25** endpoints:
### 👥 `/users`
- **GET**: Get user list
- **POST**: Create new user
### 🔍 `/users/{id}`
- **GET**: Get specific user
- **PUT**: Update user information
- **DELETE**: Delete user
## 🧩 Components
- **Schemas**: 12 data models
- **Parameters**: 8 reusable parameters
- **Responses**: 15 reusable responses
- **Security Schemes**: 3 security mechanisms
🎯 Ejemplos de Uso
💻 Uso Básico
Please fetch the content from https://docs.example.com and convert to markdown
🔍 Obtención de Especificaciones OpenAPI
Please use the fetch_petstore_openapi tool to fetch Petstore OpenAPI specification
📚 Obtención de Sitios Web de Documentación
Please fetch React official documentation content
🚨 Solución de Problemas
📋 Guía Completa de Solución de Problemas: Consulta TROUBLESHOOTING.md para soluciones detalladas a problemas comunes.
❓ Soluciones Rápidas
🔧 Problemas de Versión de Node.js
Error: npm WARN EBADENGINE Unsupported engine
- Solución: Actualiza Node.js a v20.18.1 o superior
- Descarga: Sitio Web Oficial de Node.js
- Verificar:
node --version
🌐 Problemas de Módulo No Encontrado
Error: Cannot find module './db.json'
- Solución 1: Limpiar la caché de npm:
npm cache clean --force - Solución 2: Actualizar la versión de Node.js
- Solución 3: Usar instalación local en lugar de npx
⚙️ Problemas de Configuración
P: ¿Los cambios de configuración no surten efecto?
- ✅ Confirma que el formato JSON es correcto
- ✅ Reinicia Cursor
- ✅ Verifica los nombres de las variables de entorno
P: ¿Errores de formato JSON?
- 🛠️ Usa Validador JSON
- 🛠️ Confirma que se usan comillas dobles
- 🛠️ Verifica que no haya comas adicionales
🔍 Modo de Depuración
Los registros detallados se envían a stderr al inicio:
# View debug messages
npm run dev 2> debug.log
📈 Rendimiento y Optimización
⚡ Características de Rendimiento
- 🚀 Reintento Inteligente: Reintento inteligente con retroceso exponencial
- 💾 Limitación de Velocidad: Limitación de velocidad integrada para prevenir sobrecargas
- 🎯 Filtrado de Contenido: Elimina contenido irrelevante para un procesamiento más rápido
- 🧹 Eliminación de Anuncios: Eliminación automática de anuncios y ventanas emergentes
- 📊 Modo Sigiloso: Capacidades de navegación anti-detección
🛡️ Consideraciones de Seguridad
- 🔒 Solo sitios web HTTPS (recomendado)
- 🛠️ Filtrado automático de scripts maliciosos
- 📝 Limitar la longitud del contenido de salida
- 🔐 Navegación sigilosa para evitar la detección
📦 Dependencias
| Paquete | Versión | Propósito |
|---|---|---|
@modelcontextprotocol/sdk | ^1.0.0 | Marco Principal MCP |
@readme/openapi-parser | ^4.1.0 | Análisis Profesional de OpenAPI |
axios | ^1.6.0 | Manejo de Solicitudes HTTP |
cheerio | ^1.0.0 | Motor de Análisis HTML |
turndown | ^7.1.2 | HTML a Markdown |
yaml | ^2.8.0 | Soporte de Formato YAML |
zod | ^3.22.0 | Marco de Validación de Datos |
playwright | ^1.40.0 | Automatización de navegador |
📝 Registro de Cambios
🎉 v1.2.0 (Última)
🚀 Actualizaciones Principales de Características
- ✨ Añadido Procesamiento de contenido mejorado con limpieza impulsada por IA
- ✨ Añadido Analíticas inteligentes: recuento de palabras, tiempo de lectura, resumen de contenido
- ✨ Añadido Detección de idioma y soporte multi-idioma
- ✨ Añadido Capacidades de navegador sigiloso para anti-detección
- ✨ Añadido Mecanismos integrados de limitación de velocidad y reintento
- ✨ Añadido Filtrado avanzado de contenido y eliminación de anuncios
- 🔧 Mejorado Procesamiento de Markdown con soporte de más elementos HTML
- 📊 Mejorado Formato de salida con metadatos enriquecidos
- 🎯 Corregido Varios problemas técnicos y dependencias
🎯 v1.1.0 (Anterior)
🚀 Actualizaciones Principales de Características
- ✨ Añadido Soporte completo de OpenAPI 3.x/Swagger 2.0
- ✨ Añadido Detección automática de formato JSON/YAML
- ✨ Añadido Validación de especificaciones de nivel profesional y resolución de referencias
- ✨ Añadido Mecanismo de auto-adaptación de versión
- ✨ Añadido Resumen estructurado de documentación de API
- 🔧 Preconfigurados Múltiples ejemplos de OpenAPI/Swagger
- 📦 Añadido Distribución de paquete NPM con soporte npx
- 🎯 Mejorados Métodos de instalación para una mejor experiencia de usuario
🎯 v1.0.0 (Estable)
- 🎉 Lanzamiento Inicial
- 🌐 Funciones Básicas Obtención de contenido de sitios web
- 📝 Funciones Principales Conversión a Markdown
- ⚙️ Soporte de Configuración Gestión de múltiples sitios web
🤝 Contribuciones
💡 Cómo Contribuir
- 🍴 Haz un Fork de este proyecto
- 🌟 Crea una rama de características (
git checkout -b feature/AmazingFeature) - 📝 Haz Commit de los cambios (
git commit -m 'Add some AmazingFeature') - 📤 Haz Push a la rama (
git push origin feature/AmazingFeature) - 🔄 Abre un Pull Request
🐛 Reporte de Problemas
Reporta problemas en la página de Issues, incluye:
- 🔍 Descripción del Problema
- 🔄 Pasos de Reproducción
- 💻 Información del Entorno
- 📸 Capturas de Pantalla o Registros
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
🌟 Si este proyecto te ayuda, ¡dale una Estrella!
💬 ¿Tienes preguntas o sugerencias? ¡No dudes en abrir un Issue!
Hecho por Sun ❤️ para la Comunidad de Desarrolladores