EDS MCP Server
The EDS MCP Server provides 20 tools for AI agents (Claude Code, Cursor, GitHub Copilot, etc.) to fully manage Adobe Edge Delivery Services sites.
Publishing & Content Management
Preview, publish, unpublish pages; combined preview-and-publish workflow
Bulk preview/publish (up to 100 pages per operation)
Purge CDN cache; check page/resource status (preview, live, timestamps)
Content & Site Structure
Fetch rendered page HTML, list/search pages (up to 1,000 results)
Retrieve site metadata, sitemap (with last-modified dates), and redirect rules
Analytics & Observability
Core Web Vitals (LCP, CLS, INP, TTFB) from RUM data (up to 90 days)
404 error reports (broken URLs, hit counts, referrers)
A/B experiment results (variant views, clicks, conversion rates)
Activity logs (recent preview, publish, and config actions)
Configuration & Administration
Read site config (fstab, headers, redirects)
List API keys with roles and creation dates
Authentication & Setup
Read-only tools require no credentials; write tools need an admin token
Supports browser-based sign-in (cached token) or
EDS_API_KEYenv var for CI/automationSetup:
npx @focusgts/eds-mcp-serverwithEDS_OWNERandEDS_REPO
Let an AI agent run your Adobe Edge Delivery site.
20 tools. No extra dependencies beyond the MCP SDK. Works with any EDS site. The first MCP server purpose-built for Edge Delivery Services.
โก Do it in three lines
claude mcp add eds -e EDS_OWNER=your-org -e EDS_REPO=your-site -- npx @focusgts/eds-mcp-serverThen just ask your agent:
"Preview and publish the homepage." "What are the Core Web Vitals across the site?" "Find every page about pricing and list the ones missing a description."
That's it โ no local AEM, no scripts, no glue code.
Related MCP server: AEM MCP Server
๐ง How it works
flowchart LR
A["AI agent<br/>(Claude Code ยท Cursor ยท Copilot)"] -- MCP / stdio --> B["eds-mcp-server<br/>20 tools"]
B --> C["Admin API<br/>admin.hlx.page"]
B --> D["Content API<br/>*.aem.live"]
B --> E["RUM / OpTel<br/>Core Web Vitals"]
C --> F["Your EDS site"]
D --> F
E --> FThe agent calls tools; the server talks to the live EDS infrastructure. Read-only tools (content, sitemap, metadata) need no credentials at all.
๐ One-click sign-in
No more pasting a fresh admin token every day:
sequenceDiagram
participant You
participant CLI as eds-mcp-server login
participant Adobe as admin.hlx.page
You->>CLI: npx @focusgts/eds-mcp-server login
CLI->>Adobe: open browser (client_id=aem-cli)
You->>Adobe: sign in & approve
Adobe-->>CLI: siteToken โ localhost callback
CLI-->>You: cached ~/.aem/auth-token.json (reused automatically)Use Chrome or Firefox โ Safari blocks the local callback (same as Adobe's AEM CLI).
EDS_API_KEYworks as the CI / fallback path.
๐ ๏ธ The 20 tools
Publishing
eds_preview_pageeds_publish_pageeds_unpublish_pageeds_preview_and_publisheds_get_statuseds_purge_cacheeds_bulk_previeweds_bulk_publish
Content
eds_get_pageeds_list_pageseds_search_pageseds_get_metadataeds_get_sitemapeds_get_redirects
Analytics & config
eds_get_cwveds_get_404seds_get_experimentseds_get_configeds_get_logseds_get_api_keys
๐ Add it to your tool
claude mcp add eds -e EDS_OWNER=your-org -e EDS_REPO=your-site -- npx @focusgts/eds-mcp-server{
"mcpServers": {
"eds": {
"command": "npx",
"args": ["@focusgts/eds-mcp-server"],
"env": { "EDS_OWNER": "your-org", "EDS_REPO": "your-site" }
}
}
}{
"servers": {
"eds": {
"command": "npx",
"args": ["@focusgts/eds-mcp-server"],
"env": { "EDS_OWNER": "your-org", "EDS_REPO": "your-site" }
}
}
}โ๏ธ Configuration
Variable | Required | Description |
| Yes | GitHub org/user that owns the EDS site repo |
| Yes | GitHub repository name |
| No | Git branch (default: |
| No | Admin token (see Authentication). Browser login is the alternative. |
| No | OpTel domain key for analytics queries (CWV, 404s, experiments) |
Read-only tools (content, sitemap, metadata) need no keys. Write tools (preview, publish, cache) need an admin token. Analytics tools need EDS_DOMAIN_KEY.
๐ Authentication
Admin operations require an EDS Admin token. Two ways to provide one.
Browser sign-in (recommended for interactive use)
EDS_OWNER=your-org EDS_REPO=your-site npx @focusgts/eds-mcp-server loginOpens your browser to Adobe's admin.hlx.page login (the same flow as the AEM CLI). The admin site token caches at ~/.aem/auth-token.json (mode 0600, ~24h) and is reused automatically. Use Chrome or Firefox โ Safari blocks the local callback.
EDS_API_KEY (CI / automation, and the fallback) โ always takes precedence when set.
EDS_OWNER=your-org EDS_REPO=your-site EDS_API_KEY=<your-admin-token> npx @focusgts/eds-mcp-serverTo get a token (per Adobe's API key docs): sign in at https://admin.hlx.page/login, then copy the auth_token cookie value from DevTools โ or copy the x-auth-token header from an authenticated AEM Sidekick request. For a durable credential, configure a site API key.
๐๏ธ Architecture
Built following Adobe's MCP conventions (derived from adobe-rnd/da-mcp):
TypeScript +
@modelcontextprotocol/sdk+zod, stateless per requestTool naming:
eds_{verb}_{noun}ยท stdio transportNative
fetch()(Node 18+) โ no HTTP dependencies
git clone https://github.com/Focus-GTS/eds-mcp-server.git
cd eds-mcp-server && npm install && npm run build && npm test๐งฉ Part of the FocusGTS EDS suite
AI skills for EDS content ops โ first third-party contributor merged into Adobe's official skills repo | |
CLI + GitHub Action for automated site grading and PR gating | |
Free browser-based site health analyzer |
Built by FocusGTS โ Adobe Silver Solution Partner ยท Apache-2.0 Not affiliated with or endorsed by Adobe Inc.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Focus-GTS/eds-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server