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

Idioma: English | 繁體中文

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 IAOpenAPI 3.x/Swagger 2.0Cálculo de tiempo de lecturaDetección de contenido principal
Eliminación automática de anunciosValidación profesionalEstadísticas de recuento de palabrasDetección de idioma
Resumen de contenidoAnálisis estructurado de APIMecanismo de reintento inteligenteSoporte multi-formato

🆕 Novedades en v1.2.0

🚀 Mejoras Principales

CaracterísticaEstadoDescripció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 🔄

  1. Reinicia Cursor
  2. Abre el Chat y usa el modo Agente
  3. 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ísticaOpenAPI 3.xSwagger 2.0Descripció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
  1. Crear Archivo de Configuración

    # Can be placed anywhere
    touch my-api-configs.json
    
  2. Editar el Contenido de Configuración

    {
      "websites": [
        {
          "name": "my_docs",
          "url": "https://docs.example.com",
          "description": "📚 My Documentation Website"
        }
      ]
    }
    
  3. 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 HerramientaFunciónParámetrosEjemplo
fetch_websiteObtener cualquier sitio weburl: URL del sitio webObtener archivos de especificación OpenAPI
list_configured_websitesListar sitios web configuradosNingunoVer 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 Petstore
  • fetch_petstore_swagger - Obtener especificación Swagger 2.0 de Petstore
  • fetch_github_api - Obtener especificación de GitHub API
  • fetch_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

🌐 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

PaqueteVersiónPropósito
@modelcontextprotocol/sdk^1.0.0Marco Principal MCP
@readme/openapi-parser^4.1.0Análisis Profesional de OpenAPI
axios^1.6.0Manejo de Solicitudes HTTP
cheerio^1.0.0Motor de Análisis HTML
turndown^7.1.2HTML a Markdown
yaml^2.8.0Soporte de Formato YAML
zod^3.22.0Marco de Validación de Datos
playwright^1.40.0Automatizació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

  1. 🍴 Haz un Fork de este proyecto
  2. 🌟 Crea una rama de características (git checkout -b feature/AmazingFeature)
  3. 📝 Haz Commit de los cambios (git commit -m 'Add some AmazingFeature')
  4. 📤 Haz Push a la rama (git push origin feature/AmazingFeature)
  5. 🔄 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