---
title: AI Tools
description: Connect Claude, ChatGPT, and other AI assistants to your EmDash site.
---

import { Aside, Steps, Tabs, TabItem, LinkCard } from "@astrojs/starlight/components";

EmDash has a built-in [MCP server](https://modelcontextprotocol.io) that lets AI assistants work directly with your site's content. You can ask Claude, ChatGPT, or other tools to draft posts, update pages, manage media, search your content, and more -- all through natural conversation.

<Aside>
	This guide covers your **site's** MCP server -- for managing the content of an EmDash site. If you want to give an AI coding assistant access to the EmDash documentation itself (so it can answer questions about EmDash as you build), see [Docs MCP for AI Tools](/docs-mcp) instead. Most developers connect both.
</Aside>

## Enable the MCP Server

The MCP server is disabled by default. Enable it in your Astro configuration:

```js title="astro.config.mjs"
emdash({
  mcp: true,
})
```

## Setting Up

Your site's MCP server URL is:

```
https://example.com/_emdash/api/mcp
```

Replace `example.com` with your domain. For local development, use `http://localhost:4321/_emdash/api/mcp`.

<Tabs>
<TabItem label="Claude">

Connectors added in [claude.ai](https://claude.ai) work in both the web app and Claude Desktop.

<Steps>

1. Go to [Settings > Connectors](https://claude.ai/settings/connectors)

2. Click **Add custom connector**

3. Enter your site's MCP server URL

4. Click **Add** -- your browser opens for you to log in and approve access

5. Start a new conversation, click **+** in the chat input, then **Connectors**, and toggle your site on

</Steps>

For Team and Enterprise plans, an Owner first adds the connector from [Admin Settings > Connectors](https://claude.ai/admin-settings/connectors). Members then connect individually from their own settings.

</TabItem>
<TabItem label="ChatGPT">

ChatGPT supports MCP servers on Pro, Business, and Enterprise plans.

<Steps>

1. Go to **Settings > Apps & Connectors > Advanced settings** and enable **Developer Mode**

2. Go to **Settings > Connectors > Create**

3. Enter a name, description, and your site's MCP server URL

4. Click **Create**

5. In a conversation, click **+** near the composer, then **More**, and select your connector

</Steps>

</TabItem>
</Tabs>

<Aside>
	Using a coding tool like VS Code, Cursor, or Windsurf? See the [MCP Server Reference](/reference/mcp-server) for configuration details.
</Aside>

## What You Can Do

Once connected, you can ask the AI assistant to perform any of these operations in natural language. You don't need to know the tool names -- just describe what you want.

### Content

- **Browse content** -- "Show me the latest 10 blog posts" or "Find all draft pages"
- **Read content** -- "Get the post called 'hello-world' and summarize it"
- **Create content** -- "Write a new blog post about our summer sale" or "Create a draft page for the About section"
- **Edit content** -- "Update the pricing page to mention the new plan" or "Fix the typo in the FAQ post"
- **Publish and schedule** -- "Publish the summer sale post", "Schedule the announcement for June 1st at 9am", or "Cancel the schedule on the launch post"
- **Compare versions** -- "Show me what changed in the homepage since it was last published"
- **Manage drafts** -- "Discard the draft changes on the about page" or "Duplicate the newsletter template"
- **Translations** -- "What translations exist for the welcome post?" (when i18n is enabled)

### Media

- **Browse media** -- "List all uploaded images" or "Show me PDFs in the media library"
- **Check details** -- "Get the details for this media item"
- **Register uploads** -- "Register the file I just uploaded to `media/2026/banner.png` as a media item"
- **Update metadata** -- "Set the alt text on the hero image to 'Mountain sunset'"
- **Remove files** -- "Delete the old banner image"

<Aside>
	The MCP transport can't carry binary uploads. To add a new image, upload the bytes via the admin UI (or your own signed-upload flow) and then ask the AI to register the metadata.
</Aside>

### Search

- **Find content** -- "Search for posts mentioning 'accessibility'" or "Find anything about TypeScript across all collections"

### Taxonomies

- **Browse** -- "List all categories" or "Show me the tags"
- **Create terms** -- "Add a 'tutorials' tag" or "Create a 'Frontend' subcategory under 'Engineering'"
- **Rename terms** -- "Rename the 'frontend' category to 'Web Frontend'"
- **Move terms** -- "Move the 'tutorials' tag under the 'guides' category" or "Detach 'react' from its parent"
- **Delete terms** -- "Delete the unused 'archive' tag"

### Menus

- **View menus** -- "Show me the main navigation menu" or "What's in the footer menu?"
- **Create menus** -- "Create a new 'sidebar' menu"
- **Edit menus** -- "Rename the 'main' menu to 'Primary navigation'"
- **Set items** -- "Replace the items in the main menu with Home, Blog, About, and Contact"
- **Delete menus** -- "Delete the unused 'mobile' menu"

### Site Settings

- **Inspect** -- "What's the current site title?" or "Show me the social links"
- **Update identity** -- "Set the site title to 'Acme Blog' and tagline to 'Stories from the team'"
- **Set logo / favicon** -- "Use this image as the site logo" (after registering it with `media_create`)
- **SEO defaults** -- "Set the default OG image to the new banner" or "Update the title separator to a vertical bar"
- **Social handles** -- "Add our Mastodon and YouTube links to the social settings"

<Aside>
	Reading site settings requires the Editor role; updating them requires Admin.
</Aside>

### Schema (Admin only)

- **Inspect** -- "What collections exist?" or "Show me the fields on the posts collection"
- **Create collections** -- "Create a new 'testimonials' collection with name and quote fields"
- **Modify schema** -- "Add a 'featured' boolean field to posts"

<Aside type="caution">
	Schema changes (creating/deleting collections and fields) modify your database structure and require Admin permissions. The AI will tell you if you don't have sufficient access.
</Aside>

### Revisions

- **View history** -- "Show the revision history for this post"
- **Restore** -- "Restore the post to its previous version"

## Permissions

What you can do through an AI tool depends on your EmDash role. The AI assistant operates with the same permissions you have in the admin panel:

| Role | What the AI can do |
| --- | --- |
| **Admin** | Everything, including schema changes and updating site settings |
| **Editor** | All content, media, taxonomies, and menus. Can view schema and read settings. |
| **Author** | Own content and media |
| **Contributor** | Own content (no publishing) and media |

If you try something you don't have access to, the AI will let you know.

## Tips

- **Be specific about collections.** Say "create a blog post" rather than "create a post" if you have multiple collections.
- **Ask for the schema first.** If you're unsure what fields a collection has, ask "What fields does the posts collection have?" before creating or editing content.
- **Review before publishing.** Ask the AI to create content as a draft, review it in the admin panel, then ask the AI to publish it -- or publish it yourself.
- **Use compare for review.** Before publishing, ask "Compare the live and draft versions of this post" to see exactly what will change.
- **Rich text fields use Portable Text.** The AI can write content for rich text fields, but complex formatting is best done in the admin editor.

## For Developers

The MCP server endpoint, authentication methods, OAuth discovery, tool parameters, and error handling are documented in the [MCP Server Reference](/reference/mcp-server).
