{"id":97961,"date":"2026-09-30T03:02:00","date_gmt":"2026-09-30T07:02:00","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=97961"},"modified":"2026-09-29T07:34:55","modified_gmt":"2026-09-29T11:34:55","slug":"connect-ai-agents-emdash-mcp-server-97961","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/connect-ai-agents-emdash-mcp-server-97961\/","title":{"rendered":"How to Connect AI Agents to EmDash via MCP Server"},"content":{"rendered":"<p>Imagine telling an AI coding agent &#8220;Create a new custom post type called &#8216;Projects&#8217; with fields for client name, year, and a project URL&#8221; \u2014 and having it done in seconds, not hours. That&#8217;s what EmDash&#8217;s built-in MCP server enables. Cloudflare released EmDash (v0.1.0) in April 2026, calling it the spiritual successor to WordPress. Under the hood, it ships with a Model Context Protocol (MCP) server that gives <a href=\"https:\/\/overcentral.com\/en\/rogue-ai-agents-liability-vacuum-97898\/\" title=\"Rogue AI agents expose liability vacuum as OpenAI faces claims\" data-iacss-internal=\"1\">AI agents<\/a> programmatic control over your CMS. Here&#8217;s exactly how to connect them and what you can accomplish.<\/p>\n<p>The MCP server in EmDash is a built-in endpoint that lets AI agents like Claude, Cursor, and GitHub Copilot read and write content, manage plugins, create content types, and migrate themes \u2014 all through natural language commands. To connect an agent, you point it to your EmDash instance&#8217;s MCP endpoint and provide the agent skills files that tell the agent what operations are available.<\/p>\n<h2>What Is the MCP Server in EmDash?<\/h2>\n<p>Cloudflare&#8217;s lead engineer for EmDash, Matt Cain (an Astro core team member), built the MCP server as a core part of the CMS. It&#8217;s not a plugin or an afterthought. Every EmDash instance includes three components that make AI integration native:<\/p>\n<ul>\n<li><strong>An MCP server<\/strong> that exposes tools for agents to call. Agents can list posts, create content types, update settings, and more.<\/li>\n<li><strong>A CLI<\/strong> that agents can use to run commands directly. The CLI supports operations like <code>emdash content:create<\/code>codecodecode and <code>emdash plugin:install<\/code>codecodecode.<\/li>\n<li><strong>Agent skills files<\/strong> \u2014 structured documentation files that tell AI agents exactly how to operate the CMS. No custom prompting needed.<\/li>\n<\/ul>\n<p>The MCP server uses the standard Model Context Protocol created by Anthropic. That means any MCP-compatible agent can connect to your EmDash instance. The agent reads the skills files first, learns the available operations, and then executes tasks within the permissions you&#8217;ve granted.<\/p>\n<h2>How to Connect AI Agents to EmDash: Step-by-Step<\/h2>\n<p>Before you start, you need a running EmDash instance. You can spin up a playground at <code>emdashcms.com\/playground<\/code>codecodecode (it lasts one hour) or deploy to your own Cloudflare account using the <code>npm create emdash-latest<\/code>codecodecode command.<\/p>\n<p><strong>Step 1: Find your MCP endpoint and agent skills files<\/strong><\/p>\n<p>After installation, the MCP server runs at <code>http:\/\/localhost:4321\/api\/mcp<\/code>codecodecode (or your deployed URL). The agent skills files are in the <code>agent-skills\/<\/code>codecodecode directory of your EmDash project. Open one to see the available tools:<\/p>\n<p>&#8220;`json<\/p>\n<p>{<\/p>\n<p>  &#8220;tool&#8221;: &#8220;create_content_type&#8221;,<\/p>\n<p>  &#8220;description&#8221;: &#8220;Create a new content type with custom fields&#8221;,<\/p>\n<p>  &#8220;parameters&#8221;: {<\/p>\n<p>    &#8220;label&#8221;: &#8220;string&#8221;,<\/p>\n<p>    &#8220;plural&#8221;: &#8220;string&#8221;,<\/p>\n<p>    &#8220;slug&#8221;: &#8220;string&#8221;,<\/p>\n<p>    &#8220;fields&#8221;: &#8220;array&#8221;<\/p>\n<p>  }<\/p>\n<p>}<\/p>\n<p>&#8220;`<\/p>\n<p><strong>Step 2: Point your <a href=\"https:\/\/overcentral.com\/en\/meta-muse-ai-agent-80441\/\" title=\"Meta Launches Muse AI Agent, Needs User Trust\" data-iacss-internal=\"1\">AI agent<\/a> to the MCP server<\/strong><\/p>\n<p>If you&#8217;re using Claude Desktop, add the MCP server to your <code>claude_desktop_config.json<\/code>codecodecode:<\/p>\n<p>&#8220;`json<\/p>\n<p>{<\/p>\n<p>  &#8220;mcpServers&#8221;: {<\/p>\n<p>    &#8220;emdash&#8221;: {<\/p>\n<p>      &#8220;command&#8221;: &#8220;npx&#8221;,<\/p>\n<p>      &#8220;args&#8221;: [&#8220;-y&#8221;, &#8220;@emdash\/mcp-client&#8221;],<\/p>\n<p>      &#8220;env&#8221;: {<\/p>\n<p>        &#8220;EMDASH_URL&#8221;: &#8220;http:\/\/localhost:4321&#8221;,<\/p>\n<p>        &#8220;EMDASH_API_TOKEN&#8221;: &#8220;your_token_here&#8221;<\/p>\n<p>      }<\/p>\n<p>    }<\/p>\n<p>  }<\/p>\n<p>}<\/p>\n<p>&#8220;`<\/p>\n<p>For Cursor or Copilot, you can use the built-in MCP support by providing the same endpoint.<\/p>\n<p><strong>Step 3: Authenticate and authorize<\/strong><\/p>\n<p>EmDash uses passkey-based authentication by default (WebAuthn). For AI agents, you&#8217;ll generate an API token with scoped permissions. Go to Settings \u2192 API Tokens and create a token with <code>content:write<\/code>codecodecode and <code>content:read<\/code>codecodecode permissions. Paste that token into your agent&#8217;s configuration.<\/p>\n<p><strong>Step 4: Give your agent a task<\/strong><\/p>\n<p>Now you can ask your agent to do something. Example prompt:<\/p>\n<blockquote>\n<p>&#8220;Connect to my EmDash CMS and create a new content type called &#8216;Portfolio Project&#8217; with fields: client_name (text), year (number), project_url (URL). Then add two sample projects.&#8221;<\/p>\n<\/blockquote>\n<p>blockquoteblockquoteblockquote<\/p>\n<p>The agent will call the MCP tool <code>create_content_type<\/code>codecodecode, then <code>create_content<\/code>codecodecode twice. Each operation runs through the MCP server, respecting the scoped permissions.<\/p>\n<h2>Real-World Examples: What You Can Do with MCP<\/h2>\n<p>Here are specific tasks that EmDash&#8217;s MCP server enables, drawn from the launch materials and developer demos:<\/p>\n<p><strong>1. Port a WordPress theme to EmDash<\/strong><\/p>\n<p>Matt Cain demonstrated this directly. Feed your WordPress theme&#8217;s <code>functions.php<\/code>codecodecode and template files to an MCP agent, and ask it to generate Astro-compatible components. The agent reads the skills files, understands how EmDash themes work (components, layouts, CSS with scoped styles), and produces a working theme. The creator of Yoast SEO, Joost de Valk, called this approach &#8220;a brilliant strategy&#8221; in his review of EmDash.<\/p>\n<p><strong>2. Migrate content from WordPress<\/strong><\/p>\n<p>EmDash includes a WordPress migration tool that imports WXR files. But with the MCP server, you can automate the entire process. Example agent command: &#8220;Import all posts from my WordPress export file, map Yoast SEO meta fields to EmDash&#8217;s built-in SEO fields, and set the featured image for each post.&#8221; The agent calls the import tool via MCP, handles field mapping, and reports back.<\/p>\n<p><strong>3. Bulk update content across the site<\/strong><\/p>\n<p>The EmDash blog post gives this exact scenario: changing a product name that appears in 30 different posts. Instead of editing each one manually, you ask your agent: &#8220;Find all instances of &#8216;OldProductName&#8217; across all content and replace with &#8216;NewProductName&#8217;.&#8221; The agent uses the MCP <code>search_content<\/code>codecodecode and <code>update_content<\/code>codecodecode tools to do it in seconds.<\/p>\n<p><strong>4. Create a custom plugin with AI assistance<\/strong><\/p>\n<p>Because plugins in EmDash run in secure sandboxes (via Cloudflare&#8217;s dynamic workers), you can ask an agent to generate a plugin that sends an email when a post is published. The agent writes the plugin code, declares the required capabilities (<code>read content<\/code>codecodecode, <code>send email<\/code>codecodecode), and installs it \u2014 all through the MCP interface.<\/p>\n<h2>Comparison: MCP vs. Other Integration Methods<\/h2>\n<p>The table below compares the three ways to interact with EmDash programmatically. Each method serves different use cases and automation levels.<\/p>\n<table class=\"mw-table\">\n<thead>\n<tr>\n<th>Method<\/th>\n<th>Use Case<\/th>\n<th>Automation Level<\/th>\n<th>Setup Time<\/th>\n<th>Skill Required<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>MCP Server<\/strong><\/td>\n<td>AI agent content management, bulk edits, plugin generation<\/td>\n<td>Fully automated via natural language<\/td>\n<td>5 minutes (generate API token, configure agent)<\/td>\n<td>Minimal \u2014 just a prompt<\/td>\n<\/tr>\n<tr>\n<td><strong>CLI<\/strong><\/td>\n<td>Scripted deployments, CI\/CD pipelines<\/td>\n<td>Scriptable but requires writing commands<\/td>\n<td>2 minutes (install CLI)<\/td>\n<td>Developer comfort with terminal<\/td>\n<\/tr>\n<tr>\n<td><strong>Admin UI<\/strong><\/td>\n<td>Manual content editing, visual configuration<\/td>\n<td>Manual only<\/td>\n<td>0 minutes (built-in)<\/td>\n<td>None<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Key takeaway<\/strong>: MCP is the only method that lets non-technical users automate complex tasks through conversational AI. The CLI is better for repeatable, deterministic workflows. The Admin UI remains the fallback for visual editing.<\/p>\n<h2>FAQ<\/h2>\n<p><strong>Q: Which AI agents work with EmDash&#8217;s MCP server?<\/strong><\/p>\n<p><strong>A:<\/strong> Any MCP-compatible agent works, including Claude Desktop, Cursor, GitHub Copilot, and OpenAI&#8217;s GPT with MCP support. EmDash&#8217;s agent skills files are written generically so agents can parse them without custom configuration.<\/p>\n<p><strong>Q: Do I need to pay for Cloudflare&#8217;s paid plan to use the MCP server?<\/strong><\/p>\n<p><strong>A:<\/strong> No. The MCP server runs on any EmDash instance, including local Node.js deployments and the free Cloudflare tier. However, some features like sandboxed plugins (dynamic workers) require the paid Workers plan starting at $5\/month. The MCP server itself is not tied to sandboxing.<\/p>\n<p><strong>Q: Can the MCP server expose <a href=\"https:\/\/overcentral.com\/en\/fortisandbox-data-exposure-flaw-80382\/\" title=\"FortiSandbox Flaw Brings Sensitive Data Exposure via HTTP Requests\" data-iacss-internal=\"1\">sensitive data<\/a> to the AI agent?<\/strong><\/p>\n<p><strong>A:<\/strong> The agent only has the permissions you grant through the API token. You can scope tokens to read-only or specific content types. Additionally, Cloudflare&#8217;s dynamic workers can be used to run agent-generated code in isolated sandboxes, preventing the LLM from directly accessing raw data.<\/p>\n<p><strong>Q: How do I secure the MCP endpoint?<\/strong><\/p>\n<p><strong>A:<\/strong> The endpoint requires an API token for every request. You can set expiration dates on tokens (e.g., 24 hours for temporary agents). For production, use Cloudflare&#8217;s WAF rules to restrict access to known agent IPs.<\/p>\n<h2>Limitations and Future Potential<\/h2>\n<p>The MCP server in EmDash is a v0.1 feature. It lacks built-in audit logging for agent actions \u2014 you won&#8217;t see a &#8220;Claude modified 47 posts at 3:14 AM&#8221; entry in the revisions panel yet. Also, the agent skills files are currently only in English, limiting accessibility for non-English-speaking developers.<\/p>\n<p>But the bigger story is what this architecture enables beyond content management. EmDash also supports the <strong>402 payment protocol<\/strong>, an open standard that lets you charge AI agents for accessing your content on a pay-per-use basis. Imagine a plugin that sells premium content to agents \u2014 no subscription plugins, just internet-native monetization. The MCP server is the foundation for that future, where agents become first-class users of your CMS, not just tools for editing it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine telling an AI coding agent &#8220;Create a new custom post type called &#8216;Projects&#8217; with fields for client name, year, and a project URL&#8221; \u2014 and having it done in seconds, not hours. That&#8217;s what EmDash&#8217;s built-in MCP server enables. Cloudflare released EmDash (v0.1.0) in April 2026, calling it the spiritual successor to WordPress. Under [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":98622,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/97961.png","fifu_image_alt":"How to Connect AI Agents to EmDash via MCP Server","footnotes":""},"categories":[31],"tags":[],"class_list":["post-97961","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/97961.png","fifu_image_alt":"How to Connect AI Agents to EmDash via MCP Server","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/97961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=97961"}],"version-history":[{"count":1,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/97961\/revisions"}],"predecessor-version":[{"id":98292,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/97961\/revisions\/98292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/98622"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=97961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=97961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=97961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}