Markdown to any text
Convierte markdown a cualquier formato de texto que desees
Documentación
AI Answer Copier — Exportador Multi-Formato Impulsado por MCP
Convierte el "Ruido de IA" en "Material Listo para el Aula" en 5 Segundos.
Un servidor de Protocolo de Contexto de Modelo (MCP) que le da a tu asistente de IA el poder de convertir Markdown en 22 formatos de documentos profesionales, convertir por lotes múltiples documentos en 22 formatos en una sola llamada, analizar documentos, reparar Markdown dañado y convertir entre plataformas, todo sin salir de tu chat de IA.
npm: https://www.npmjs.com/package/@xjtlumedia/markdown-mcp-server
Por Qué Existe Esto
Le pediste a una IA que escribiera 20 preguntas. Lo hizo. Pero ahora estás atascado:
| Punto de Dolor | Flujo de Trabajo Manual | Con AI Answer Copier |
|---|---|---|
| Extraer preguntas y respuestas | 10–15 min copiando cada línea | 2 segundos (detección automática) |
| Formatear matemáticas | 20 min arreglando símbolos rotos | Instantáneo (soporte KaTeX) |
| Subida al LMS | 15 min de entrada manual en CSV | Exportación en 1 clic |
| Tiempo total de preparación | ~45–60 minutos | < 1 minuto |
Generar contenido toma segundos. Formatearlo para el mundo real toma una hora. Este servidor MCP elimina esa brecha por completo.
Demostración en Vivo
Versión web en línea (sin necesidad de instalación): ai-answer-copier.vercel.app
Prueba la herramienta MCP en el inspector:
Usa una instancia MCP real:
Las 34 Herramientas MCP
Herramientas de Conversión de Documentos (15)
| # | Herramienta | Salida | Descripción |
|---|---|---|---|
| 1 | harmonize_markdown | .md | Estandariza y normaliza la sintaxis de Markdown (encabezados ATX, marcadores de lista -, bloques de código delimitados) sin cambiar el significado |
| 2 | convert_to_txt | .txt | Elimina todo el formato para producir texto plano |
| 3 | convert_to_html | .html | Documento HTML completo con estilo, tablas GFM, matemáticas KaTeX y hoja de estilos incrustada |
| 4 | generate_html | Cadena HTML | Genera HTML autocontenido con todos los estilos en línea (solo lectura, sin E/S de archivos) |
| 5 | convert_to_pdf | .pdf | PDF listo para imprimir mediante Chromium sin interfaz gráfica con matemáticas KaTeX completas y resaltado de sintaxis |
| 6 | convert_to_docx | .docx | Documento de Microsoft Word con encabezados, listas y formato de código con estilo |
| 7 | convert_to_latex | .tex | Código fuente de LaTeX con \section, entornos de lista y paso directo de matemáticas nativas |
| 8 | convert_to_rtf | .rtf | Formato de Texto Enriquecido para procesadores de texto y clientes de correo heredados |
| 9 | convert_to_csv | .csv | Extrae tablas de tuberías GFM a valores separados por comas |
| 10 | convert_to_json | .json | Representación JSON estructurada con secciones, encabezados, listas, bloques de código y tablas |
| 11 | convert_to_xml | .xml | XML bien formado con declaración <?xml?> y elementos estructurados |
| 12 | convert_to_xlsx | .xlsx | Hoja de cálculo de Excel: cada tabla de Markdown se convierte en una hoja |
| 13 | convert_to_image | .png | Captura de pantalla PNG a página completa mediante Chromium sin interfaz gráfica |
| 14 | convert_to_md | .md | Exporta Markdown a un archivo, opcionalmente armonizando el formato primero (harmonize=true) |
| 15 | convert_to_email_html | .html | HTML optimizado para correo con todos los estilos en línea, compatible con Outlook, Gmail y Apple Mail |
Herramientas de Conversión de Plataforma (10)
| # | Herramienta | Plataforma Destino | Descripción |
|---|---|---|---|
| 16 | convert_to_slack | Slack | Formato mrkdwn: negrita como *, enlaces como <url|text>, encabezados como texto en negrita |
| 17 | convert_to_discord | Discord | Encabezados en negrita/subrayado con estilo, bloques de código conservados |
| 18 | convert_to_jira | JIRA | Marcado Wiki: h1./h2., bloques {code}, enlaces [text|url] |
| 19 | convert_to_confluence | Confluence | Marcado Wiki con paneles {info}, {note} y sintaxis {code:language=x} |
| 20 | convert_to_asciidoc | AsciiDoc | Encabezados =, bloques de código ----, enlaces url[text], directivas image:: |
| 21 | convert_to_rst | reStructuredText | Encabezados subrayados, directivas .. code-block::, sintaxis de referencia RST |
| 22 | convert_to_mediawiki | MediaWiki | Encabezados ==, '''bold''', etiquetas <syntaxhighlight>, {\ wikitable |
| 23 | convert_to_bbcode | BBCode | Etiquetas [b], [i], [code], [url], [img] para foros phpBB/vBulletin |
| 24 | convert_to_textile | Textile | Marcado para Redmine, Basecamp y plataformas CMS |
| 25 | convert_to_orgmode | Modo Org de Emacs | Encabezados *, código #+BEGIN_SRC/#+END_SRC, enlaces [[url][text]] |
Herramientas de Importación (1)
| # | Herramienta | Descripción |
|---|---|---|
| 26 | html_to_markdown | Convierte contenido HTML (documento completo o fragmento) de vuelta a Markdown |
Herramientas de Reparación y Lint (2)
| # | Herramienta | Descripción |
|---|---|---|
| 27 | repair_markdown | Repara Markdown dañado de salidas de LLM o copiar y pegar: delimitadores de código sin cerrar, tablas rotas, marcadores de énfasis sueltos, espacios faltantes en encabezados, enlaces rotos |
| 28 | lint_markdown | Ejecuta lint e informa problemas como un arreglo JSON con número de línea, severidad, nombre de regla, mensaje y bandera de corrección |
Herramientas de Análisis de Documentos (5)
| # | Herramienta | Descripción |
|---|---|---|
| 29 | extract_code_blocks | Extrae todos los bloques de código con lenguaje, contenido y números de línea de inicio/fin |
| 30 | extract_links | Extrae todos los enlaces e imágenes con texto, URL, número de línea y tipo (en línea, referencia, imagen, enlace automático) |
| 31 | generate_toc | Genera una Tabla de Contenidos en Markdown a partir de encabezados con max_depth configurable (1–6) |
| 32 | analyze_document | Estadísticas completas: recuentos de líneas/palabras/caracteres/párrafos/oraciones, recuentos de encabezados/código/tablas/enlaces/imágenes, tiempo de lectura estimado |
| 33 | extract_structure | Arquitectura del documento a vista de pájaro: estadísticas, esquema de encabezados, resumen de bloques de código, resumen de enlaces |
Conversión por Lotes (1)
| # | Herramienta | Entrada | Descripción |
|---|---|---|---|
| 34 | batch_convert | items[] × formats[] | Convierte por lotes múltiples documentos Markdown a 22 formatos en una sola llamada. Errores aislados por elemento+formato. output_dir opcional para salida de archivos. Formatos: txt, csv, json, xml, xlsx, latex, rtf, docx, pdf, html, md, email, slack, discord, jira, confluence, asciidoc, rst, mediawiki, bbcode, textile, orgmode |
6 Prompts Integrados
Plantillas de prompts preconfiguradas que orquestan múltiples herramientas:
| Prompt | Descripción |
|---|---|
convert-document | Convierte Markdown a cualquier formato compatible (PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, MD) |
extract-tables | Extrae todas las tablas de Markdown y las exporta como CSV o XLSX |
format-for-sharing | Armoniza el formato y luego convierte a PDF y HTML para distribución |
analyze-and-repair | Lint → Reparar → Re-lint para confirmar que todos los problemas están resueltos |
convert-for-platform | Convierte Markdown a cualquier formato de plataforma (Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Modo Org) |
document-overview | Vista general completa: estadísticas, TOC, bloques de código y enlaces en un solo informe |
2 Recursos
| URI del Recurso | Descripción |
|---|---|
markdown-formatter://supported-formats | Lista JSON completa de los 23+ formatos de salida con nombres y tipos de herramientas |
markdown-formatter://conversion-guide | Guía para elegir el formato de salida correcto según tu caso de uso |
Inicio Rápido
Instalación mediante npx (Recomendado)
No se necesita instalación: solo configura tu cliente MCP:
{
"mcpServers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Instalación Global
npm install -g @xjtlumedia/markdown-mcp-server
Luego configura:
{
"mcpServers": {
"ai-answer-copier": {
"command": "markdown-mcp-server"
}
}
}
Configuración por Cliente de IA
🔌 Claude Desktop
Edita %APPDATA%\Claude\claude_desktop_config.json (Windows) o ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Reinicia Claude Desktop. Verás un ícono 🔌: las 34 herramientas ahora están disponibles.
VS Code (GitHub Copilot)
Agrega a .vscode/mcp.json o a la configuración de VS Code:
{
"servers": {
"ai-answer-copier": {
"command": "npx",
"args": ["-y", "@xjtlumedia/markdown-mcp-server"]
}
}
}
Cursor / Windsurf / Cualquier Cliente MCP
Usa el mismo patrón de comando npx de arriba en la configuración MCP de tu cliente.
Versión DIY (compilación local)
{
"mcpServers": {
"markdown-formatter": {
"command": "node",
"args": [
"YOUR_PATH_TO_PROJECT/mcp-server/dist/mcp-server/src/index.js"
]
}
}
}
Reemplaza YOUR_PATH_TO_PROJECT con la ruta absoluta a esta carpeta.
Modo HTTP (Vercel)
Un endpoint HTTP alojado está disponible para integraciones basadas en navegador y remotas:
https://ai-answer-copier.vercel.app/api/mcp
Prueba con MCP Inspector:
npx @modelcontextprotocol/inspector https://ai-answer-copier.vercel.app/api/mcp
Ejemplos de Uso
Una vez conectado, solo habla con tu IA de forma natural:
"Convierte por lotes 5 documentos markdown a DOCX, PDF y HTML simultáneamente y guárdalos en mi carpeta de Descargas." → La IA usa
batch_convertcon items[] y formats[]
"Genera 10 preguntas de física sobre las Leyes de Newton y expórtalas como un CSV de Kahoot." → La IA usa
convert_to_csv
"Convierte este markdown en un documento de Word y guárdalo en mi Escritorio." → La IA llama a
convert_to_docxconoutput_path
"Toma estas notas de clase y produce un PDF listo para imprimir." → La IA llama a
convert_to_pdfcon renderizado Puppeteer, matemáticas KaTeX y resaltado de sintaxis
"Convierte esto en un banco de preguntas XML compatible con Moodle." → La IA llama a
convert_to_xml
"Formatea esto para Slack y envíalo al canal del equipo." → La IA llama a
convert_to_slack
"Revisa este Markdown en busca de problemas y arréglalos." → La IA llama a
lint_markdowny luego arepair_markdown
"Dame una vista general de este documento: recuento de palabras, estructura, todos los enlaces." → La IA encadena
analyze_document+generate_toc+extract_links
Características
22 Formatos de Salida
Exporta a PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, Markdown — además de Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Modo Org y HTML de correo.
Conversión por Lotes
Convierte múltiples documentos Markdown a múltiples formatos en una sola llamada a batch_convert. Los errores se aíslan por elemento+formato, por lo que una falla nunca bloquea el resto.
Matemáticas y Código como Ciudadanos de Primera Clase
Soporte completo para expresiones matemáticas KaTeX y bloques de código con resaltado de sintaxis. Tus fragmentos de $\sqrt{x^2 + y^2}$ y Python sobreviven perfectamente a cada conversión.
Manejo Inteligente de Binarios
Los formatos binarios (PDF, DOCX, XLSX, PNG) no vuelcan base64 sin procesar en el chat. El servidor devuelve orientación práctica para que la IA sepa que debe guardar en una ruta de archivo.
Análisis y Reparación de Documentos
Ejecuta lint en Markdown, repara automáticamente el formato dañado, extrae bloques de código y enlaces, genera una Tabla de Contenidos y obtén estadísticas completas del documento, todo sin salir del chat.
GFM (GitHub Flavored Markdown)
Tablas, listas de tareas, tachado, enlaces automáticos: todo se analiza correctamente mediante remark-gfm.
PDF y PNG Impulsados por Puppeteer
Las exportaciones de PDF e imágenes usan Chromium sin interfaz gráfica para un renderizado perfecto en píxeles con estilo CSS completo, matemáticas KaTeX, resaltado de sintaxis y diseños optimizados para impresión.
Autocontenido
Cero dependencias de tiempo de ejecución en APIs externas. Todo se ejecuta localmente. Tus datos nunca salen de tu computadora.
Arquitectura
┌─────────────────────────┐
│ AI Client │
│ (Claude, Copilot, │
│ Cursor, Windsurf) │
└──────────┬──────────────┘
│ MCP Protocol (stdio / HTTP)
▼
┌─────────────────────────┐
│ AI Answer Copier │
│ MCP Server (34 tools) │
│ │
│ ┌── Conversion ────────┐│
│ │ remark/rehype, docx, ││
│ │ puppeteer, xlsx, ││
│ │ CSV/JSON/XML/RTF/ ││
│ │ LaTeX/TXT parsers ││
│ └──────────────────────┘│
│ ┌── Platform ──────────┐│
│ │ Slack, Discord, JIRA,││
│ │ Confluence, AsciiDoc,││
│ │ RST, MediaWiki, ││
│ │ BBCode, Textile, Org ││
│ └──────────────────────┘│
│ ┌── Batch ─────────────┐│
│ │ items[] × formats[] ││
│ │ 22 formats, isolated ││
│ └──────────────────────┘│
│ ┌── Analysis ──────────┐│
│ │ Code blocks, links, ││
│ │ TOC, stats, structure││
│ └──────────────────────┘│
│ ┌── Repair ────────────┐│
│ │ Lint, auto-repair ││
│ └──────────────────────┘│
│ ┌── Import ────────────┐│
│ │ HTML → Markdown ││
│ └──────────────────────┘│
└─────────────────────────┘
Novedades en v2.1.0
Esta versión refuerza tanto el transporte MCP local (npx) como el remoto de Vercel con 8 correcciones de lógica:
| # | Corrección | Área |
|---|---|---|
| 1 | Navegador no cerrado en error — try/finally alrededor de browser.close() para que Chromium nunca tenga fugas en fallos de PDF/PNG | Ambos transportes |
| 2 | generate_html sin CSS de KaTeX — se restauró la metaetiqueta viewport, la hoja de estilos de KaTeX (hash SRI) y los estilos en línea completos para que las matemáticas se rendericen correctamente | Vercel /api/mcp |
| 3 | convert_to_html estilos incompletos — se añadió el hash de integridad SRI, bordes de tabla y estilo de citas en bloque para coincidir con la salida local | Vercel /api/mcp |
| 4 | Fuga de memoria en el mapa de sesiones — instances Map ahora expulsa sesiones obsoletas después de 30 minutos (SESSION_TTL_MS); McpInstance rastrea lastUsed | Vercel /api/mcp |
| 5 | keepAlive intervalo no limpiado al final normal del flujo SSE — se añadió un try/finally interno que siempre llama a clearInterval(keepAlive) | Vercel /api/mcp |
| 6 | _initialized acceso interno del SDK — se reemplazó @ts-ignore desnudo por una protección typeof para que el servidor falle correctamente después de actualizaciones del SDK | Vercel /api/mcp |
| 7 | Sin validación del tamaño de entrada — se añadió un límite estricto de 1 GB (MAX_INPUT_BYTES) a todas las llamadas de herramientas para evitar CPU/memoria descontroladas en cargas sobredimensionadas | Ambos transportes |
| 8 | El método DELETE crea una nueva sesión — el manejador ahora devuelve 200 inmediatamente en DELETE, evitando la creación de sesiones fantasma | Vercel /api/mcp |
Limitaciones conocidas
- PDF / PNG requieren Chromium local —
convert_to_pdfyconvert_to_imagelanzan un navegador sin interfaz gráfica. Esto funciona bien connpxpero no está disponible en el plan gratuito de Vercel (sin Chromium incluido). Establece la variable de entornoPUPPETEER_EXECUTABLE_PATHpara apuntar a tu Chrome local si la detección automática falla. - Versión de Chromium en Vercel — el endpoint remoto usa
@sparticuz/chromium-mincon un tar fijado en v131.0.1. Si Vercel actualiza el runtime de Lambda, es posible que debas actualizar la variable de entornoCHROMIUM_TAR_URL. - Límite de entrada de 1 MB — todas las llamadas de herramientas rechazan entradas mayores de 1 MB. Divide documentos grandes en secciones antes de convertir.
- TTL de sesión (solo remoto) — las sesiones en el endpoint de Vercel expiran después de 30 minutos de inactividad. Los flujos de trabajo con estado de larga duración deben emitir llamadas de mantenimiento periódicas.
Desarrollo
# Clone the repository
git clone https://github.com/XJTLUmedia/AI_answer_copier.git
# Web app
npm install
npm run dev
# MCP server
cd mcp-server
npm install
npm run dev # hot reload
npm run build # production build
npm run inspector # test with MCP Inspector
Pila tecnológica
| Componente | Tecnología |
|---|---|
| SDK de MCP | @modelcontextprotocol/sdk |
| Analizador de Markdown | unified + remark + rehype |
| Renderizado matemático | remark-math + rehype-katex |
| Exportación a Word | docx |
| Exportación a Excel | xlsx |
| Exportación a PDF/PNG | puppeteer |
| Validación de esquemas | zod |
| Runtime | Node.js (ESM) |
Contribuciones
¡Agradecemos las contribuciones! Ya sea un nuevo formato de exportación, una corrección de errores o una mejora de documentación — considera hacer una solicitud de extracción.
- Haz un fork del repositorio
- Crea una rama de características
- Envía una solicitud de extracción
Licencia
Creado por educadores, para educadores.
Recupera 5 horas de tu semana. Deja que la IA maneje el formato.