webmcpify (Agent Skill)
Haga que cualquier aplicación web esté lista para agentes con WebMCP: inventario de acciones de usuario, apruebe un manifiesto de herramientas, integre herramientas, verifíquelas en Chrome y corrija fallos.
Documentación
webmcpify — la habilidad de agente WebMCP
Sitio web · Documentación · Instalación · Demo · Registro de cambios
webmcpify es una habilidad de agente que hace que una aplicación web existente sea invocable por agentes de IA del navegador a través de WebMCP —
document.modelContext, el estándar propuesto incubado en el W3C Web Machine
Learning Community Group y en el origin trial de Chrome. Tu agente de codificación
inventaría la aplicación, propone un manifiesto de herramientas para tu aprobación, integra las herramientas con un
runtime mínimo incluido, y demuestra que cada una funciona en Chrome real. El código no relacionado
permanece intacto — desde una página de aterrizaje estática hasta un SaaS multiinquilino.
npx skills add TueJon/webmcpify # once
/webmcpify # in your app's repo, inside your coding agent
[!TIP] Nuevo en v0.6.0: reanudación consciente de evidencia — archivos de aplicación, contratos o navegadores cambiados invalidan la verificación que afectan — además de acceso al navegador con ámbito y comprobaciones independientes para cada mutación.
Cómo funciona
- Un punto de control humano. Apruebas el manifiesto de herramientas: nombres, esquemas, ejemplos, razones de cobertura y una clase de solo lectura o mutante por herramienta. Después de eso, el agente solo regresa por lo que genuinamente no puede resolver — una aplicación que no arranca, o una herramienta que aún falla después de sus intentos de reparación limitados.
- Bucles sobre estado persistente. Cada fase lee y escribe
.webmcpify/manifest.json, por lo que una ejecución se reanuda entre sesiones, ventanas de contexto e incluso diferentes agentes. La evidencia registrada le dice qué comprobaciones siguen siendo válidas. - Prueba, no promesas. Cada herramienta se enumera y ejecuta a través del
getTools()/executeTool()nativo de Chrome, afirmando sobre el resultado de la herramienta y el estado de la interfaz de usuario resultante.
Lo que tu agente añade a tu aplicación
Del fixture de prueba reproducible. Primero, la entrada del manifiesto que apruebas en la puerta (abreviado):
{
"id": "set_release_filter",
"mutating": "client", // browser state only — no server write
"inputSchema": {
"type": "object",
"properties": { "category": { "type": "string", "enum": ["all", "feature", "fix"] } },
"required": ["category"],
"additionalProperties": false
},
"source": ["proof/demo/app.js:applyFilter"], // the UI's existing code path
"examples": { "valid": { "category": "fix" }, "invalid": { "category": "private" } },
"expect": { "result": "2 release notes visible",
"ui": "only the two synthetic fix notes remain visible" },
"cleanup": "execute the same UI path with category=all"
}
Luego la integración: un registro que llama a la ruta de código que la interfaz de usuario ya usa, a través del runtime incluido.
import { createToolScope } from './webmcpify.js'; // vendored, MIT, ~290 lines
import { applyFilter } from './app.js'; // existing UI logic, unchanged
createToolScope('proof-release-notes', [{
name: 'set_release_filter',
description: 'Filters the visible synthetic release notes by category '
+ "using the page's existing filter path.",
inputSchema: schema, // the approved schema above
annotations: { readOnlyHint: false, untrustedContentHint: false, consequentialHint: false },
execute: ({ category }) => {
if (!schema.properties.category.enum.includes(category)) {
return 'ERROR: category must be one of all, feature, or fix.';
}
return `${applyFilter(category)} release notes visible for ${category}.`;
},
}]); // feature-detected: a safe no-op in browsers without WebMCP
Verlo en acción
Un fixture local preparado pasa un clic de aprobación real, registra una herramienta solo de cliente,
luego ejercita el document.modelContext.getTools() / executeTool() nativo, un
cambio visible en la interfaz de usuario, manejo de entrada inválida y limpieza. El registro del runtime y las afirmaciones
del navegador son reales; las etiquetas de fase son avanzadas por un script para legibilidad, por lo que la
grabación no ejecuta las fases de inventario, integración o auditoría de la habilidad. Reproduce
las comprobaciones nativas con npm run proof:verify; el paquete proof/ contiene
el fixture, manifiestos antes/después, un parche ilustrativo y sumas de verificación.
Instalación
| Dónde | Cómo |
|---|---|
| Cualquier agente — Claude Code, Codex, Cursor, opencode, Copilot y más de 70 | npx skills add TueJon/webmcpify |
| Plugin de Claude Code | /plugin marketplace add TueJon/webmcpify y luego /plugin install webmcpify@webmcpify |
| Manual | Copia skills/webmcpify/ en el directorio de habilidades de tu agente, o dile a tu agente que siga SKILL.md |
El directorio de habilidades es autónomo: pipeline, guías de fase, runtime incluible y la plantilla de verificación vienen incluidos dentro.
Uso
Abre tu agente en el repositorio objetivo y elige un alcance — o simplemente di "webmcpify esta aplicación".
| Comando | Qué sucede | Cambia tu código |
|---|---|---|
/webmcpify | Pipeline completo, reanudando donde el manifiesto indique | Después de tu aprobación |
/webmcpify inventory | Investigar y proponer el manifiesto de herramientas | Nunca |
/webmcpify integrate | Integrar el manifiesto aprobado en lotes pequeños | Sí |
/webmcpify workbench | El agente lanza un inspector visual temporal de herramientas | No — solo ayuda de desarrollo |
/webmcpify verify | Verificar y reparar lo integrado | Solo para corregir una herramienta que falla |
/webmcpify status | Dónde estamos, qué sigue | Nunca (solo lectura) |
/webmcpify full parity | Censo de cada elemento interactivo en cada ruta autenticada | Después de tu aprobación |
Núcleo curado o paridad ruta por ruta
| Curado | Paridad | |
|---|---|---|
| Objetivo | Un conjunto de herramientas utilizable para las acciones que importan | Completitud auditable |
| Resultado | Mapa revisado de ruta → herramienta para acciones principales | Censo de elementos por ruta: cada interacción se asigna a una herramienta o una razón escrita |
| Lo mantiene utilizable por | Olas de prioridad, una regla de superposición (no dos herramientas coinciden con la misma solicitud), cobertura de rol/inquilino | Registro con ámbito de ruta; las brechas de capacidad del cliente se informan, nunca se adivinan |
El agente te pide elegir antes del inventario — no hay un valor predeterminado silencioso — y un recuento de herramientas solo nunca se llama 100%.
Garantías
| Garantía | Cómo se aplica | |
|---|---|---|
| 🧩 | El código no relacionado permanece intacto | Cada fragmento de diff se rastrea a una entrada del manifiesto; una auditoría final verifica contra el commit de referencia registrado; los archivos ya sucios al inicio nunca se modifican ni revierten |
| 🔒 | Solo lectura primero | Las mutaciones del servidor necesitan tu aprobación explícita por herramienta; la autenticación, el registro, la facturación, los pagos y las herramientas que devuelven credenciales permanecen excluidas; las eliminaciones irreversibles solo pueden abrir la interfaz de confirmación propia de la aplicación |
| 🛡️ | Tu servidor sigue siendo el límite de confianza | Las herramientas solo llaman rutas de código que tu interfaz de usuario ya usa — sin nuevos endpoints, sin omisiones |
| 📦 | Cero dependencias | Un runtime MIT pequeño se incluye y se detecta por características; la aplicación se comporta igual en navegadores sin WebMCP |
| 🚦 | Sin resultados imperativos ambiguos | El runtime rechaza null / undefined desnudos accidentales; las herramientas que cambian de ruta devuelven un resultado estructurado antes de la navegación y la eliminación del ámbito de ruta |
| 🧪 | Ejercitado, no asumido | Cada herramienta se ejecuta en Chrome real contra el resultado y el estado de la interfaz de usuario; las mutaciones se confirman a través de una ruta de lectura independiente con un vecino sin cambios; los formularios declarativos reciben el clic de envío real |
| 📝 | Comprobaciones de mutación a prueba de fallos | Un helper de host sin dependencias registra despachos y limpiezas, resuelve resultados verificados atómicamente y serializa ejecutores a través de un archivo lateral de bloqueo de asesoramiento en Linux y macOS/FreeBSD |
| ♻️ | Reanudación honesta | Archivos, contratos, runtimes o navegadores cambiados invalidan la evidencia que afectan, las dependencias desconocidas significan una re-verificación completa y las mutaciones interrumpidas se reconcilian antes de cualquier reintento (re-verificación) |
| 🔐 | Acceso con ámbito | Un contexto de prueba dedicado con orígenes, cuentas y fixtures aprobados; la guía oficial se lee directamente, nunca se ejecuta como un paquete no revisado |
| 🧭 | Especificación sobre marcador | Los hallazgos del verificador se clasifican, no se persiguen; la capa de descubrimiento público (/.well-known/webmcp) es una aprobación separada |
Construido para escalar a grandes bases de código
- Inventario mapea la base de código en áreas (rutas, vistas, módulos) primero, luego lee en profundidad un área por iteración — un SaaS de 500 archivos se procesa área por área, nunca en un barrido que rompa el contexto. El fan-out de sub-agentes escribe archivos de fragmentos por área; un coordinador único los fusiona.
- Integrar funciona en lotes de un área o como máximo cinco herramientas, cada una construida y verificada por tipos — confirmada por lote solo si optaste por ello.
- Verificar / Reparar itera por herramienta con límites de intentos y escalada honesta; las herramientas mutantes obtienen pasos de limpieza entre reintentos.
- Interrumpir en cualquier lugar. La próxima ejecución se reanuda desde el manifiesto;
statuspermanece de solo lectura.
Estado de la plataforma y compatibilidad
WebMCP es un origin trial (Chrome 149 en adelante; el hito estable es una
estimación, no un compromiso). La exposición en producción necesita un
token de origin trial; el desarrollo local
necesita chrome://flags/#enable-webmcp-testing. La API ya ha cambiado durante
el trial (API de pruebas eliminada 2026-07; navigator → document) — webmcpify
aísla ese cambio en un archivo incluido, y su verificación sondea si el
navegador acepta entrada de objeto actual o la entrada de cadena JSON heredada de Chrome 150 sin
reintentar herramientas reales. La integración lee las guías oficiales de Chrome y el borrador del CG
directamente.
La superficie de cliente separada de ChatGPT, limitada por modelo y cuenta, se documenta como Site tools, con hechos de disponibilidad fechados y un orden de solución de problemas. Las adaptaciones de especificación por versión están en el registro de cambios.
Qué hay en este repositorio
| Ruta | Propósito |
|---|---|
skills/webmcpify/SKILL.md | El pipeline que tu agente sigue |
skills/webmcpify/references/ | Guías de fase: inventario, integración, Workbench, runtime, verificación, re-verificación, reparación, seguridad, descubrimiento, superficies de cliente |
skills/webmcpify/templates/ | Runtime incluible (TS + JS), diario de mutaciones duradero, Workbench visual temporal, tipos ambientales, plantilla de verificación de Playwright, manifiesto de descubrimiento |
proof/ | Prueba reproducible en Chrome nativo: fixture, manifiestos, grabación, sumas de verificación |
Proyectos relacionados
- webmcpify.at — el sitio web del proyecto, en sí mismo listo para agentes en las tres capas: herramientas imperativas a través del runtime incluido, un formulario de instalación declarativo y un manifiesto
/.well-known/webmcppublicado - webmachinelearning/webmcp — el borrador de especificación (W3C WebML CG)
- GoogleChromeLabs/webmcp-tools — las demos, tipos y CLI de evaluaciones de Google (webmcpify sigue estos patrones)
- GoogleChrome/modern-web-guidance — guías oficiales de mejores prácticas (CLI opcional; se requiere aprobación de versión y ejecución exacta)
- Puppeteer WebMCP — API experimental de automatización WebMCP de primera clase (Chrome 151+ según documentado 2026-08-29; arnés de verificación alternativo)
- MCP-B / WebMCP-org — polyfill, extensión, transportes y herramientas de desarrollo (webmcpify incluye un runtime mínimo en lugar de añadir dependencias)
Licencia
MIT — © Jonas Tüchler
