Charming
Servidor MCP Charming: genera y aloja aplicaciones web interactivas a través de MCP.
Documentación
Servidor MCP de Charming
Charming es un servidor MCP alojado que genera, aloja y actualiza aplicaciones web interactivas. Conéctalo a cualquier cliente de IA compatible con MCP y pídele que cree una aplicación. Recibirás una URL en vivo en segundos.
Conectar
| Cliente | Endpoint |
|---|---|
| Claude, Claude Code, Cursor, Codex, Gemini CLI y la mayoría de clientes MCP | https://charm.ing/mcp |
| ChatGPT | https://charm.ing/mcp/chatgpt (un clic a través del listado de Charming en el directorio de aplicaciones de ChatGPT; esta cadena de pegado es la alternativa del Modo Desarrollador) |
La mayoría de clientes MCP pueden usar esta configuración remota:
{
"mcpServers": {
"charming": {
"url": "https://charm.ing/mcp",
"type": "streamableHttp"
}
}
}
Los endpoints MCP requieren un token de portador, y OAuth con Registro Dinámico de Clientes lo inicia automáticamente: los clientes que lo admiten muestran una pantalla de consentimiento única, sin necesidad de pegar una clave API. La creación anónima sin token está disponible solo en la ruta HTTP. Guía de autenticación: usecharming.com/auth.md.
Para cadenas de pegado por cliente y pasos de configuración, consulta usecharming.com/clients.txt.
Prompt inicial
Una vez que Charming esté conectado, pega esto para iniciar una sesión de construcción:
Help me figure out what to build. Look at what you know about me and suggest 2-3 apps that fit, or ask me up to 3 short questions to find an idea.
Read https://usecharming.com/start.md then help me create my first app.
Herramientas
Charming expone 37 herramientas. Los clientes conectados las descubren automáticamente mediante tools/list.
| Herramienta | Qué hace |
|---|---|
create_app | Almacena un módulo creado por un agente (un manifest más routes) con UI y CSS opcionales, y lo renderiza en línea. Requiere un description. Dale al usuario el shareUrl devuelto sin token, nunca el url solo para máquinas. |
update_app | Edita una aplicación existente reemplazando su módulo/UI/estilos/descripción o aplicando ediciones de cadena exacta, con versionado de concurrencia optimista. |
get_app | Renderiza una aplicación existente en línea (donde el cliente lo admita) y devuelve sus operaciones API invocables y metadatos. |
get_app_source | Devuelve el módulo, la UI y los estilos persistidos de una aplicación existente, además de su versión actual. |
list_apps | Lista las aplicaciones del llamador más las compartidas con él, de más reciente a más antigua, con el rol, la descripción y las capacidades de cada una. |
delete_app | Elimina permanentemente una aplicación que poseas. Es irreversible y requiere confirmación: falla de forma segura hasta que se vuelva a invocar con confirm: true. Pasa purge_storage: true para también borrar el estado almacenado. |
upload_asset | Almacena un recurso estático (imagen, PDF, conjunto de datos) para que el código de la aplicación siga siendo pequeño; se puede leer de vuelta desde el mismo origen. |
rename_app | Cambia el slug de URL de una aplicación. La URL anterior sigue funcionando mediante redirección. |
set_remixable | Marca una aplicación como remezclable para que los visitantes obtengan su propia copia editable. |
unset_remixable | Deja de permitir remezclas; las remezclas existentes sobreviven intactas. |
set_starter_prompt | Establece o borra el prompt precargado en el host de chat cuando un visitante abre una aplicación compartida. |
query_app | Ejecuta una operación de backend de solo lectura dentro de un módulo de aplicación. |
mutate_app | Ejecuta una operación de backend mutante dentro de un módulo de aplicación sin editar código. |
submit_feedback | Registra comentarios creados por agentes (errores, mejoras, informes de fallos) sobre una aplicación. |
list_feedback | Lista las filas de comentarios de las aplicaciones del llamador, de más reciente a más antigua. |
set_handle | Cambia el identificador del usuario conectado (el primer segmento de sus URLs de aplicación). |
share_app | Invita a alguien a una aplicación como collaborator (predeterminado), end-user (ejecutar y escribir datos, no puede editar el código fuente) o viewer (solo lectura). Volver a llamarlo con un rol cambia su rol en el lugar. |
unshare_app | Revoca el acceso de cualquier beneficiario, ya sea que la invitación esté pendiente o ya aceptada. |
list_app_shares | Lista las invitaciones de compartir activas y pendientes para una de tus aplicaciones. |
set_public | Hace pública una aplicación: cualquiera con la URL puede abrirla sin iniciar sesión y leer Y escribir sus datos compartidos. Advierte al usuario de que cada visitante anónimo comparte un único grupo de datos, por lo que cualquiera con la URL puede sobrescribirlo o borrarlo. |
unset_public | Vuelve a hacer privada una aplicación pública; los visitantes anónimos ya no pueden abrirla. |
set_template | Publica una aplicación como plantilla para que cualquiera que abra su URL obtenga su propia copia nueva, dejando la original intacta. Pasa listed: true para también listarla en el directorio público. Omitir listed deja el estado actual del listado sin cambios. La aplicación debe estar reclamada primero. |
unset_template | Deja de tratar una aplicación como plantilla: los nuevos visitantes ya no pueden copiarla y se borra cualquier listado público. Las copias existentes sobreviven. |
search_templates | Busca en el directorio público de plantillas de Charming por palabra clave. Revisa aquí si existe una plantilla antes de llamar a create_app, o cuando el usuario pregunte qué plantillas existen. Cada resultado lleva un copyUrl que un visitante puede abrir para crear su propia copia independiente sin iniciar sesión. |
acknowledge_feedback_responses | Confirma las respuestas a comentarios después de que el agente las haya procesado. |
cancel_app_build | Úsalo para cancelar una construcción de aplicación aceptada antes de que se publique. |
create_routine | Úsalo cuando el usuario quiera que una operación de aplicación se ejecute por sí sola, con un temporizador, sin necesidad de tener un chat abierto. |
delete_routine | Úsalo para detener y eliminar una Rutina. |
get_app_build | Úsalo para inspeccionar una construcción de aplicación aceptada sin ejecutarla ni publicarla. |
list_feedback_responses | Obtiene las respuestas no leídas del personal de Charming a los comentarios enviados por esta cuenta autenticada. |
list_routines | Úsalo para ver las Rutinas del llamador en todas sus aplicaciones. |
read_docs | Lee la documentación de Charming sin acceso web. |
update_routine | Úsalo para cambiar el interval de una Rutina, o habilitarla/deshabilitarla. |
create_webhook | Úsalo cuando un servicio externo (Zapier, un proveedor de pagos, un backend de socio) necesite llamar directamente a una de las operaciones de una aplicación. |
delete_webhook | Úsalo para eliminar un Webhook. |
list_webhooks | Úsalo para ver los Webhooks en cada aplicación que el llamador pueda editar, con el estado de entrega. |
update_webhook | Úsalo para renombrar un Webhook, habilitarlo/deshabilitarlo o rotar su secreto. |
Uso con un agente de codificación
¿Trabajas en Codex, Claude Code, Cursor u otro agente de codificación de IA? Instala la habilidad opcional de autoría de Charming desde skills.sh con npx skills add tambo-labs/charming-mcp. Esto instala la guía de autoría; no conecta el servidor MCP.
Le enseña al agente el contrato de construcción y el flujo de trabajo de Charming. La habilidad en sí es SKILL.md; AGENTS.md tiene instrucciones de conexión y autoría para cualquier agente de codificación de IA. Los usuarios de Codex pueden instalar en su lugar el plugin de Charming para Codex incluido.
Cursor
Cursor lee las reglas del proyecto desde .cursor/rules/. Coloca .cursor/rules/charming.mdc en tu proyecto (o copia su contenido en un .cursorrules raíz heredado) y el agente de Cursor recurrirá a Charming (URL real, almacenamiento y renderizado en línea) cada vez que pidas una aplicación que quieras conservar. La regla apunta a los documentos servidos; no duplica el contrato.
Distribución
Este repositorio es la fuente canónica de cada paquete público de integración de Charming. Los artefactos independientes de plataforma se editan a mano; los adaptadores de plataforma se generan a partir de ellos, por lo que un dato vive exactamente en un archivo.
| Tipo | Artefacto |
|---|---|
| Independiente de plataforma (edita estos) | canonical/facts.json, SKILL.md, AGENTS.md, .cursor/rules/charming.mdc, charming-icon.png |
| Adaptador (generado) | plugins/cursor/charming, plugins/claude-code/charming, plugins/codex/charming, plugins/agent-plugins/charming (un paquete portátil de Agent Plugins v1.0.0), gemini-extension.json, GEMINI.md, los tres catálogos de marketplace |
npm ci # install ajv, the schema validator
node scripts/build-packages.mjs # regenerate every adapter
node scripts/build-packages.mjs --check # fail on drift (runs in CI)
Los adaptadores aún no se publican; la publicación de cada uno se rastrea por separado. Consulta DISTRIBUTION.md para ver la estructura, las comprobaciones de desviación y cómo el monorepo de Charming propone cambios aquí.
Documentación
- Habilidad de agente:
SKILL.md· guía de agente de codificación:AGENTS.md· regla de Cursor:.cursor/rules/charming.mdc - Guía completa de autoría: usecharming.com/llms-full.txt
- Autenticación y emparejamiento: usecharming.com/auth.md · límites: usecharming.com/pricing.md
- Especificación OpenAPI: charm.ing/.well-known/openapi.json
- Documentos: usecharming.com/docs
Editor
Publicado por Tambo.