EmDash tiene un servidor Model Context Protocol (MCP) integrado que permite a los asistentes de IA trabajar directamente con el contenido de su sitio. Puede pedir a Claude, ChatGPT u otras herramientas que redacten entradas, actualicen páginas, gestionen medios, busquen en su contenido y más — todo mediante conversación natural.
El servidor MCP de su sitio
El servidor MCP está habilitado por defecto. EmDash monta /_emdash/api/mcp a menos que lo desactive. El endpoint acepta OAuth o tokens bearer de acceso personal; una sesión de navegador de administración por sí sola no autentica una petición MCP. OAuth permite a la persona que conecta el cliente elegir scopes antes de que EmDash emita el token.
Para desactivarlo, establezca mcp: false en su configuración de Astro:
emdash({
mcp: false,
});
Conectar un cliente de IA
La URL del servidor MCP de su sitio es:
https://example.com/_emdash/api/mcp
Sustituya example.com por su dominio. Para desarrollo local, use http://localhost:4321/_emdash/api/mcp.
Claude
Añada la URL como un conector personalizado remoto. Claude abre el flujo OAuth de EmDash para que pueda iniciar sesión y elegir permisos. Anthropic cambia las pantallas del conector de forma independiente de EmDash, así que siga sus instrucciones actuales de conectores personalizados para los controles exactos y los requisitos del plan.
ChatGPT
El modo desarrollador de ChatGPT puede conectar un servidor MCP remoto y admite herramientas autenticadas con OAuth. La elegibilidad y las pantallas de ajustes pueden cambiar, así que siga la guía oficial del modo desarrollador de ChatGPT y use la URL MCP de su sitio al crear la app. Revise cada llamada de escritura antes de aprobarla.
Codex
Añada el servidor remoto desde la CLI de Codex y luego inicie su inicio de sesión OAuth:
codex mcp add emdash-site --url https://example.com/_emdash/api/mcp
codex mcp login emdash-siteLa app de escritorio de ChatGPT, la CLI de Codex y la extensión del IDE comparten la configuración MCP para el mismo host Codex. Consulte la documentación oficial de Codex MCP para archivos de configuración, OAuth y transportes admitidos.
Trabajar con el contenido del sitio
Una vez conectado, puede pedir al asistente de IA que realice cualquiera de estas operaciones en lenguaje natural. No necesita conocer los nombres de las herramientas — solo describa lo que quiere.
Content
- Explorar contenido — “Show me the latest 10 blog posts” o “Find all draft pages”
- Leer contenido — “Get the post called ‘hello-world’ and summarize it”
- Crear contenido — “Write a new blog post about our summer sale” o “Create a draft page for the About section”
- Editar contenido — “Update the pricing page to mention the new plan” o “Fix the typo in the FAQ post”
- Publicar y programar — “Publish the summer sale post”, “Schedule the announcement for June 1st at 9am” o “Cancel the schedule on the launch post”
- Comparar versiones — “Show me what changed in the homepage since it was last published”
- Gestionar borradores — “Discard the draft changes on the about page” o “Duplicate the newsletter template”
- Traducciones — “What translations exist for the welcome post?” o “Create a French draft linked to this English post” (cuando i18n está habilitado)
Bylines
- Explorar bylines — “List the guest contributors whose names contain ‘Lee’”
- Acreditar contenido — “Add Priya Shah as the primary byline on this post”
- Gestionar bylines — “Create a guest byline for Sam Rivera” o “Update this contributor’s bio”
- Traducir bylines — “Show the locale variants of this byline”
Crear, actualizar, eliminar y traducir bylines requiere el rol Editor. Las herramientas de escritura de contenido aceptan IDs de byline existentes cuando el llamador tiene permiso para crear o editar ese contenido.
Media
- Explorar medios — “List all uploaded images” o “Show me PDFs in the media library”
- Comprobar detalles — “Get the details for this media item”
- Subir archivos — “Upload this base64 image as
banner.png” - Confirmar subidas firmadas — “Confirm the upload with this storage key”
- Actualizar metadatos — “Set the alt text on the hero image to ‘Mountain sunset’”
- Eliminar archivos — “Delete the old banner image”
media_upload acepta bytes codificados en base64, almacena el archivo, registra el elemento de medios y devuelve el ID y la URL. Aplica los límites de tipo MIME y tamaño de subida del sitio.
media_create completa una subida pendiente creada mediante POST /_emdash/api/media/upload-url. Suba el archivo con la URL firmada devuelta y luego pase su storageKey a media_create desde la misma cuenta de usuario. La confirmación comprueba que el archivo almacenado existe y coincide con el tamaño suministrado al solicitar la URL de subida. Este flujo requiere Author o un rol superior; los Contributors pueden usar media_upload.
Search
- Encontrar contenido — “Search for posts mentioning ‘accessibility’” o “Find anything about TypeScript across all collections”
Taxonomies
- Explorar — “List all categories” o “Show me the tags”
- Crear términos — “Add a ‘tutorials’ tag” o “Create a ‘Frontend’ subcategory under ‘Engineering’”
- Renombrar términos — “Rename the ‘frontend’ category to ‘Web Frontend’”
- Mover términos — “Move the ‘tutorials’ tag under the ‘guides’ category” o “Detach ‘react’ from its parent”
- Eliminar términos — “Delete the unused ‘archive’ tag”
Menus
- Ver menús — “Show me the main navigation menu” o “What’s in the footer menu?”
- Crear menús — “Create a new ‘sidebar’ menu”
- Editar menús — “Rename the ‘main’ menu to ‘Primary navigation’”
- Establecer elementos — “Replace the items in the main menu with Home, Blog, About, and Contact”
- Eliminar menús — “Delete the unused ‘mobile’ menu”
Site settings
- Inspeccionar — “What’s the current site title?” o “Show me the social links”
- Actualizar identidad — “Set the site title to ‘Acme Blog’ and tagline to ‘Stories from the team’”
- Establecer logo / favicon — “Use this image as the site logo” (después de subirlo con
media_upload) - Valores SEO predeterminados — “Set the default OG image to the new banner” o “Update the title separator to a vertical bar”
- Identificadores sociales — “Add our GitHub and YouTube links to the social settings”
Schema (solo Admin)
- Inspeccionar — “What collections exist?” o “Show me the fields on the posts collection”
- Crear colecciones — “Create a new ‘testimonials’ collection with name and quote fields”
- Modificar el esquema — “Add a ‘featured’ boolean field to posts”
Revisions
- Ver historial — “Show the revision history for this post”
- Restaurar — “Restore the post to its previous version”
Permisos
Cuando un cliente MCP abre la página de consentimiento OAuth, cada permiso que solicitó está seleccionado por defecto. Desmarque cualquier permiso que el cliente no necesite antes de aprobar el acceso. El token resultante se limita a los permisos que usted deja seleccionados y a los permitidos por su rol EmDash, de modo que conceder menos permisos nunca aumenta lo que el cliente puede hacer.
| Rol | Qué puede hacer la IA |
|---|---|
| Admin | Todo, incluidos cambios de esquema y actualizar la configuración del sitio |
| Editor | Gestionar todo el contenido, medios, bylines, taxonomías y menús. Ver el esquema y leer la configuración. |
| Author | Crear contenido; editar y publicar contenido propio; subir medios y gestionar medios propios. |
| Contributor | Crear contenido en borrador y subir medios, sin publicar. |
EmDash rechaza una llamada a la herramienta cuando el alcance del token o el rol del usuario es insuficiente. Un cliente puede explicar ese error, pero EmDash sigue siendo la autoridad que lo aplica.
Consejos
- Sea específico sobre las colecciones. Diga «create a blog post» en lugar de «create a post» si tiene varias colecciones.
- Pida el esquema primero. Si no está seguro de qué campos tiene una colección, pregunte «What fields does the posts collection have?» antes de crear o editar contenido.
- Revise antes de publicar. Pida a la IA que cree contenido como borrador, revíselo en el panel de administración y luego pídale que lo publique — o publíquelo usted mismo.
- Use compare para revisar. Antes de publicar, pregunte «Compare the live and draft versions of this post» para ver exactamente qué cambiará.
- Los campos de texto enriquecido usan Portable Text. La IA puede escribir contenido para campos de texto enriquecido, pero el formato complejo se hace mejor en el editor de administración.
Deje que los agentes del navegador busquen en su sitio público
El servidor MCP anterior es para quienes gestionan el sitio. Para ayudar a los agentes de IA que se ejecutan en el navegador de un visitante, añada el componente WebMcpSearch a su layout. En los navegadores que admiten WebMCP, registra una herramienta de solo lectura search_site que el agente puede llamar en lugar de rastrear sus páginas:
---
import WebMcpSearch from "emdash/ui/webmcp-search";
---
<WebMcpSearch collections={["posts", "pages"]} routeMap={{ posts: "/blog/:slug" }} />
La herramienta usa la misma API de búsqueda pública que LiveSearch, por lo que solo devuelve contenido publicado de las colecciones con la búsqueda habilitada. Acepta las props collections, locale, limit y routeMap con el mismo significado que en LiveSearch (limit está limitado a 100) y devuelve el título, la URL absoluta, la colección y un extracto en texto plano de cada resultado.
El componente no añade consultas a la base de datos al renderizar las páginas. La API de búsqueda solo se ejecuta cuando un agente llama a la herramienta. En los navegadores sin compatibilidad con WebMCP, el componente no hace nada.
Para desarrolladores
El endpoint del servidor MCP, los métodos de autenticación, el descubrimiento OAuth, los parámetros de las herramientas y el manejo de errores están documentados en la referencia del servidor MCP.