markdown-review
Markdown Review
Markdown Review es una interfaz local-first de MCP Apps para revisar Markdown renderizado sin crear una segunda copia editable del documento. Selecciona un pasaje o elige una imagen, pon en cola comentarios anclados a líneas y envía la revisión completa a un agente de codificación en un solo lote. Codex App es el primer host interactivo publicado; los contratos, el estado y la interfaz de usuario centrales son intencionalmente neutrales respecto al host para futuros adaptadores de Claude, pi, terminal y Tauri.
Estado: desarrollo temprano. Codex App es el host interactivo publicado; la interfaz reutilizable y el transporte MCP siguen el estándar MCP Apps, por lo que se pueden añadir adaptadores de host adicionales sin reescribir el núcleo de revisión.
Qué ofrece
Una vista previa de Markdown a pantalla completa, estilo GitHub, en el panel lateral.
Selección y copia de texto normal, además de un menú de revisión para comentarios sobre texto seleccionado, imágenes y el documento completo.
Objetivos de revisión de imágenes enfocables para comentarios con puntero, táctiles y de teclado.
Controles de comentarios de imagen discretos que aparecen en la esquina inferior derecha de la imagen solo al pasar el cursor, al enfocar con teclado o al tocar activamente.
Marcadores de comentarios en línea numerados
#1,#2, etc.Una cola de revisión que envía todos los comentarios juntos para evitar ediciones conflictivas.
Referencias entre comentarios en cola usando
#N; escribe\#No`#N`para texto literal.Renderizado de PNG, JPEG y WebP estáticos locales relativos con transporte de fragmentos acotado y privado.
Revisión automática después de que Codex cree o edite materialmente un documento Markdown.
La fuente de Markdown siempre es canónica. El componente es una superficie de revisión de solo lectura; solo Codex edita el archivo fuente con sus herramientas normales de sistema de archivos.
Related MCP server: md-annotate
Cómo funciona
local .md file
│
├── open_markdown_review ──► sanitized rendered component (private UI payload)
│ │
│ └── queued, line-anchored comments
│ │
└◄──────────── Codex edits the original file ◄──────┘
one batch messageEl servidor MCP es intencionalmente limitado:
open_markdown_reviewvalida y renderiza una ruta absoluta.mdo.markdown.Las herramientas solo de componente hidratan el documento renderizado y transmiten imágenes rasterizadas locales aprobadas en fragmentos acotados.
El resultado de la herramienta visible para el modelo contiene metadatos del archivo, no el documento completo. El contenido renderizado se entrega de forma privada al componente.
La habilidad explica cómo debe interpretar Codex los comentarios de revisión y modificar el Markdown subyacente de forma segura.
Esta separación es la razón por la que el proyecto incluye MCP: el servidor conecta una invocación de herramienta de Codex con un componente interactivo de confianza. Un archivo HTML estático por sí solo no puede recibir el archivo fuente seleccionado, devolver comentarios de revisión estructurados a la tarea activa ni mantener este límite de contexto.
La implementación se divide en espacios de trabajo TypeScript neutrales respecto al host. contracts valida cada límite, core posee el estado de revisión puro, markdown-node lee y renderiza archivos locales, y review-ui se monta sobre puertos estrechos de documento, envío, presentación y estado. host-mcp-apps proporciona un runtime basado en estándares cuyo envío predeterminado es JSON estructurado; la composición del navegador de Codex añade explícitamente el formateador conciso $markdown-review. El estado de revisión se persiste localmente bajo su ID de sesión de revisión opaco, de modo que los comentarios en cola sobreviven a los remontajes del componente, sin publicarse nunca como contexto de widget heredado visible para el modelo. Un futuro shell de Tauri puede reutilizar los contratos, el núcleo y la interfaz, y proporcionar puertos IPC de Rust; Tauri no se incluye hoy.
Soporte de hosts
Host | Estado actual |
Codex App | Interfaz MCP Apps interactiva publicada y adaptador de envío de Codex |
Host MCP Apps compatible con estándares | Adaptador y protocolo probados; aún se requiere aceptación específica del host |
Codex CLI / Claude Code | Compatibilidad con herramientas MCP sin interfaz; sin interfaz de revisión integrada |
Claude Desktop / pi | Listo para la arquitectura, aún no aceptado como integración publicada |
Tauri | Solo costura de shell futura; no se incluye ninguna aplicación Tauri |
Los adaptadores no publicados y los seguimientos de aceptación del navegador se rastrean en ROADMAP.md.
Instalar desde el marketplace del repositorio
Requisitos:
Codex en la aplicación de escritorio de ChatGPT con soporte de complementos.
Node.js 22 o más reciente disponible como
node.La CLI
codexpara añadir la fuente del marketplace.
Añade este repositorio como marketplace:
codex plugin marketplace add tjs-w/markdown-review --ref mainReinicia la aplicación de escritorio, abre el Directorio de Complementos, selecciona Markdown Review e instala el complemento. Inicia una nueva tarea después de la instalación para que la tarea reciba el registro de herramientas del complemento.
Para actualizar una instalación existente:
codex plugin marketplace upgrade markdown-reviewReinicia la aplicación de escritorio e inicia una nueva tarea después de una actualización. Las tareas existentes conservan los registros de herramientas y habilidades con los que comenzaron.
Uso
Pídele a Codex que abra una ruta Markdown absoluta:
Open /absolute/path/to/document.md for Markdown review.En la revisión:
Selecciona texto y cópialo normalmente si es necesario, o elige una imagen renderizada.
Haz clic derecho en el documento o elige Revisar para acciones de copiar y comentar. La acción
+de la selección y cada objetivo de imagen siguen siendo accesos directos directos.Pulsa Enter para poner el comentario en cola; usa Shift+Enter para una nueva línea.
Referencia un comentario anterior en cola con
#1,#2, etc.Selecciona Enviar cuando la ronda de revisión esté completa.
Después de un envío exitoso, la cola se limpia y la siguiente ronda de revisión comienza de nuevo en #1. Deliberadamente no hay acción de envío individual: el procesamiento por lotes le da a Codex un objetivo de revisión coherente y reduce los conflictos de fuente.
Desarrollo local
git clone https://github.com/tjs-w/markdown-review.git
cd markdown-review
bun install --frozen-lockfile
bun run verifyEl desarrollo y la CI usan la cadena de herramientas Bun 1.4 fijada. Los complementos instalados no requieren Bun: el repositorio incluye un server.cjs legible compatible con Node y paquetes de navegador minificados. Reconstruye después de cambiar el código fuente TypeScript:
bun run buildEjecuta el arnés del navegador contra un archivo Markdown para el trabajo de interfaz:
bun run browser:harness -- /absolute/path/to/document.mdEstablece MARKDOWN_REVIEW_PREVIEW_COMPOSER=1 para abrir el compositor de comentarios automáticamente en el arnés.
El complemento suprime el menú contextual nativo del host de forma predeterminada. Solo para depuración local de complementos, establece MARKDOWN_REVIEW_DEVTOOLS=1 en el entorno del servidor MCP y reinicia Codex; Shift+clic derecho entonces omite el menú de revisión y abre el menú nativo del host. El clic derecho normal continúa mostrando las acciones de revisión. La bandera se analiza estrictamente: solo el valor exacto 1 habilita la omisión, y nunca se habilita en el .mcp.json incluido.
Para probar este checkout como marketplace local, añade su directorio absoluto:
codex plugin marketplace add /absolute/path/to/markdown-reviewLuego reinicia la aplicación de escritorio e instala el complemento desde la fuente del marketplace local.
Límites de seguridad y privacidad
El componente no puede escribir el archivo Markdown.
El menú contextual nativo del navegador se suprime dentro del complemento a menos que el servidor MCP local se inicie con la bandera de desarrollador explícita; esto es un endurecimiento de la interfaz, no un límite de seguridad alrededor de los menús o atajos de Codex App.
El HTML renderizado se sanitiza antes de llegar al componente.
No se cargan imágenes remotas, absolutas o fuera del directorio.
Solo se admiten rutas relativas a archivos PNG, JPEG (
.jpg/.jpeg) y WebP estáticos dentro del directorio del archivo Markdown. El servidor verifica la extensión, la firma, la estructura de contenedor acotada, las dimensiones y la política de animación antes de que el navegador realice la decodificación nativa. GIF, AVIF, SVG, APNG y WebP animado no se renderizan.El recurso del componente no declara dominios de red o recursos remotos y solo solicita acceso de escritura al portapapeles para la acción explícita Copiar texto seleccionado.
Un archivo Markdown está limitado a 2 MiB.
Una revisión procesa como máximo 64 referencias de imágenes locales—incluidas las inválidas—5 MiB por imagen única y 12 MiB de instantáneas de imágenes únicas en total, con límites estrictos de dimensiones decodificadas por imagen. Cada referencia válida se renderiza: el navegador comparte de manera justa un presupuesto de lienzo de 24 megapíxeles acotado en todo el documento y reduce la escala de las imágenes grandes para mostrarlas en lugar de omitirlas. Las referencias que se resuelven al mismo archivo canónico o al mismo digest comparten una instantánea inmutable y una decodificación de cliente verificada.
Las rutas canónicas y las identidades de archivos abiertos se vuelven a verificar alrededor de cada lectura acotada. Estas verificaciones son defensa en profundidad, no un sandbox del sistema operativo contra otro proceso local que pueda reemplazar continuamente la jerarquía del directorio del documento durante una lectura.
El acceso del componente usa capacidades de sesión de revisión opacas y con caducidad. Las sesiones se deslizan durante dos horas y están limitadas por un LRU de seis sesiones y una caché de imágenes agregada de 72 MiB.
Los bytes de imagen y los digests SHA-256 se capturan en una sesión, por lo que las mutaciones posteriores del archivo no pueden cambiar una revisión en curso.
El contenido completo del documento y los fragmentos de imagen se colocan en metadatos privados del componente en lugar de salida estructurada visible para el modelo.
Revisa solo archivos que tengas la intención de exponer al proceso local del complemento. Los comentarios enviados son comentarios de usuario accionables; las citas seleccionadas y otro contenido del documento revisado siguen siendo contexto no confiable, no instrucciones.
Estructura del proyecto
Ruta | Propósito |
| Identidad del complemento y metadatos de superficie de instalación |
| Entrada del marketplace del repositorio |
| Configuración del servidor MCP local incluido |
| Instrucciones de flujo de trabajo y manejo de comentarios de Codex |
| Esquemas Zod y tipos compartidos seguros para JSON |
| Estado puro de cola, referencia, migración y envío |
| Carga y renderizado local acotado de Markdown/imágenes |
| Controlador DOM reutilizable sobre puertos neutrales de host |
| Adaptador de host MCP Apps estándar y decodificación de imágenes nativa del navegador |
| Fábrica de servidor MCP, herramientas y ensamblaje de recursos |
| Raíz de composición stdio de Node |
| Paquete de servidor MCP ejecutable incluido |
| Shell HTML/CSS estático accesible con marcadores de inyección de paquete |
| Paquete de interfaz MCP Apps minificado incluido |
| Cobertura de pruebas unitarias, de integración, de adaptador y de navegador |
Solución de problemas
Los archivos del complemento existen, pero la herramienta de revisión no está registrada. Reinicia la aplicación de escritorio e inicia una nueva tarea. Una tarea no adquiere dinámicamente herramientas de un complemento instalado o actualizado después de que esa tarea comenzó.
Codex dice que una ruta de habilidad en caché se movió. Actualiza o reinstala el complemento del marketplace, reinicia la aplicación e invoca el nombre de habilidad estable $markdown-review en una nueva tarea. No dependas de una ruta de caché versionada.
El panel lateral está en blanco. Ejecuta bun run verify en el checkout del complemento, reconstruye con bun run build, actualiza la instalación del marketplace y vuelve a intentarlo en una nueva tarea.
Una imagen local no se renderiza. Usa una ruta relativa .png, .jpg, .jpeg o .webp estática ubicada dentro del directorio del archivo Markdown y confirma que esté dentro de los límites de tamaño y dimensiones documentados.
Documentación
Este es un proyecto independiente y no es un producto oficial de OpenAI o GitHub. Los nombres de productos y marcas pertenecen a sus respectivos propietarios.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceRenders Markdown into a browser-based, click-to-comment thread; comments are returned to Claude as tool results.MIT
- AlicenseNot gradedqualityDmaintenanceA local-first markdown review tool with MCP integration, enabling AI and humans to collaboratively annotate documents inline and generate revision prompts.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables sharing Markdown documents for collaborative review with inline annotations and structured change requests.13MIT
- AlicenseNot gradedqualityAmaintenanceEnables anchored comments in Markdown files that AI agents can propose changes for, with human approval before application, all managed via an MCP server.2MIT
Related MCP Connectors
Human feedback for AI agents: share HTML, get a live review link, read anchored notes as markdown.
Feedback layer for video. Reviewers talk through feedback; agents read it as structured comments.
Human-in-the-loop for AI coding agents — ask questions, get approvals via Slack.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tjs-w/markdown-review'
If you have feedback or need assistance with the MCP directory API, please join our Discord server