@8ux-co/eelzap-mcp-server
Connect your AI assistant to Eel Zap CMS to create collections, manage content, upload media, and publish through natural language.
README
@8ux-co/eelzap-mcp-server
Connect your AI assistant to Eel Zap CMS. Create collections, manage content, upload media, and publish — all through natural language.
Works with Claude Code, Cursor, VS Code, Codex, and Claude Desktop.
Quick Start
With the CLI (recommended):
npx @8ux-co/eelzap-mcp-server install
With Claude Code:
claude mcp add --transport stdio eelzap \
--env EELZAP_API_KEY=secret_your_key_here \
-- npx -y @8ux-co/eelzap-mcp-server
For other tools, see the Installation Guides below.
Installation Guides
Claude Code
CLI method:
npx @8ux-co/eelzap-mcp-server install --tool claude-code
Manual method — Project scope (.mcp.json):
Create .mcp.json in your project root:
{
"mcpServers": {
"eelzap": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@8ux-co/eelzap-mcp-server"],
"env": {
"EELZAP_API_KEY": "secret_your_key_here"
}
}
}
}
Manual method — User scope (~/.claude.json):
Add to the mcpServers section in ~/.claude.json:
{
"mcpServers": {
"eelzap": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@8ux-co/eelzap-mcp-server"],
"env": {
"EELZAP_API_KEY": "secret_your_key_here"
}
}
}
}
Using claude mcp add:
claude mcp add --transport stdio eelzap \
--env EELZAP_API_KEY=secret_your_key_here \
-- npx -y @8ux-co/eelzap-mcp-server
Cursor
CLI method:
npx @8ux-co/eelzap-mcp-server install --tool cursor
Manual method — Project scope:
Create .cursor/mcp.json in your project root:
{
"mcpServers": {
"eelzap": {
"command": "npx",
"args": ["-y", "@8ux-co/eelzap-mcp-server"],
"env": {
"EELZAP_API_KEY": "secret_your_key_here"
}
}
}
}
Manual method — Global scope:
Create or edit ~/.cursor/mcp.json with the same structure.
VS Code
CLI method:
npx @8ux-co/eelzap-mcp-server install --tool vscode
Manual method:
Create .vscode/mcp.json in your project root:
{
"servers": {
"eelzap": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@8ux-co/eelzap-mcp-server"],
"env": {
"EELZAP_API_KEY": "secret_your_key_here"
}
}
}
}
Important: VS Code uses "servers" as the top-level key, not "mcpServers".
Codex
CLI method:
npx @8ux-co/eelzap-mcp-server install --tool codex
Manual method:
Add to ~/.codex/config.toml (or .codex/config.toml for project scope):
[mcp_servers.eelzap]
command = "npx"
args = ["-y", "@8ux-co/eelzap-mcp-server"]
enabled = true
[mcp_servers.eelzap.env]
EELZAP_API_KEY = "secret_your_key_here"
Claude Desktop
CLI method:
npx @8ux-co/eelzap-mcp-server install --tool claude-desktop
Manual method:
Edit the config file at:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
Add to the mcpServers section:
{
"mcpServers": {
"eelzap": {
"command": "npx",
"args": ["-y", "@8ux-co/eelzap-mcp-server"],
"env": {
"EELZAP_API_KEY": "secret_your_key_here"
}
}
}
}
Restart Claude Desktop after saving.
CLI Commands
| Command | Description |
|---|---|
npx @8ux-co/eelzap-mcp-server install |
Interactive setup for any supported tool |
npx @8ux-co/eelzap-mcp-server switch-key |
Change the API key for an existing installation |
npx @8ux-co/eelzap-mcp-server uninstall |
Remove the eelzap entry from a tool's config |
npx @8ux-co/eelzap-mcp-server status |
Show all detected installations and their connection status |
npx @8ux-co/eelzap-mcp-server doctor |
Diagnose common configuration issues |
Examples:
# Install with flags (non-interactive):
npx @8ux-co/eelzap-mcp-server install \
--tool claude-code \
--scope project \
--api-key secret_xxx
# Update the API key for a specific tool:
npx @8ux-co/eelzap-mcp-server switch-key --tool cursor
# Check what's configured and whether it's working:
npx @8ux-co/eelzap-mcp-server status
# Run diagnostics:
npx @8ux-co/eelzap-mcp-server doctor
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
EELZAP_API_KEY |
Yes | — | Your API key. Starts with secret_ (full access) or public_ (read-only). Get it from your Eel Zap dashboard under Settings > API Keys. |
EELZAP_BASE_URL |
No | https://api.eelzap.com |
API base URL. Override for self-hosted or local development. |
EELZAP_PATH_PREFIX |
No | /v1 |
Path prefix. Set to /api/public/v1 for local dev against the Next.js dev server. |
API Key Types
| Key prefix | Access level | Use case |
|---|---|---|
secret_ |
Full read/write | Creating content, managing collections, uploading media, publishing |
public_ |
Read-only | Querying published content via the delivery API only |
For MCP server usage, you almost always want a secret key since the whole point is to manage content through your AI assistant.
Local Development
If you're running the CMS locally:
"env": {
"EELZAP_API_KEY": "secret_your_key",
"EELZAP_BASE_URL": "http://localhost:5041",
"EELZAP_PATH_PREFIX": "/api/public/v1"
}
Available Tools
Sites (1 tool)
| Tool | Description |
|---|---|
get_site |
Get the current site associated with your API key |
Collections (5 tools)
| Tool | Description |
|---|---|
list_collections |
List all collections in the site |
get_collection |
Get a collection by ID |
create_collection |
Create a new collection |
update_collection |
Update a collection's name or key |
delete_collection |
Delete a collection and all its items |
Collection Fields (5 tools)
| Tool | Description |
|---|---|
list_collection_fields |
List all fields in a collection |
create_collection_field |
Add a new field to a collection |
update_collection_field |
Update a field's configuration |
delete_collection_field |
Remove a field from a collection |
reorder_collection_fields |
Change the display order of fields |
Collection Sections (4 tools)
| Tool | Description |
|---|---|
list_collection_sections |
List all sections in a collection |
create_collection_section |
Create a new section to group fields |
update_collection_section |
Update a section's name |
delete_collection_section |
Delete a section |
Items (7 tools + 7 versioning tools)
| Tool | Description |
|---|---|
list_items |
List items in a collection (with pagination and search) |
get_item |
Get a single item by ID |
create_item |
Create a new item in a collection |
update_item |
Update an item's field values |
delete_item |
Delete an item |
publish_item |
Publish an item (makes it available via delivery API) |
unpublish_item |
Unpublish an item |
Item Versioning (7 tools)
| Tool | Description |
|---|---|
list_item_versions |
List version history for an item |
get_item_version |
Get details of a specific version |
create_item_draft |
Create a draft from the current published version |
update_item_draft |
Update draft field values |
discard_item_draft |
Discard the current draft (non-destructive) |
publish_item_draft |
Publish the draft as the live version |
rollback_item_version |
Create a draft from a historical version |
Documents (5 tools + 7 versioning tools)
| Tool | Description |
|---|---|
list_documents |
List all documents (singletons like homepage, about page) |
get_document |
Get a document by ID |
create_document |
Create a new document |
update_document |
Update a document's name or key |
delete_document |
Delete a document |
Document Fields (5 tools)
| Tool | Description |
|---|---|
list_document_fields |
List all fields in a document |
create_document_field |
Add a new field to a document |
update_document_field |
Update a field's configuration |
delete_document_field |
Remove a field from a document |
reorder_document_fields |
Change the display order of fields |
Document Sections (4 tools)
| Tool | Description |
|---|---|
list_document_sections |
List all sections in a document |
create_document_section |
Create a new section to group fields |
update_document_section |
Update a section's name |
delete_document_section |
Delete a section |
Document Values (2 tools)
| Tool | Description |
|---|---|
get_document_values |
Get all field values for a document |
set_document_values |
Set field values for a document |
Document Publishing (2 tools)
| Tool | Description |
|---|---|
publish_document |
Publish a document |
unpublish_document |
Unpublish a document |
Document Versioning (7 tools)
| Tool | Description |
|---|---|
list_document_versions |
List version history for a document |
get_document_version |
Get details of a specific version |
create_document_draft |
Create a draft from the current published version |
update_document_draft |
Update draft field values |
discard_document_draft |
Discard the current draft (non-destructive) |
publish_document_draft |
Publish the draft as the live version |
rollback_document_version |
Create a draft from a historical version |
Media (7 tools)
| Tool | Description |
|---|---|
list_media |
List all media assets |
get_media |
Get a media asset by ID |
upload_media_from_url |
Upload media from a URL |
update_media |
Update media metadata (alt text, title) |
delete_media |
Delete a media asset |
publish_media |
Publish a media asset |
unpublish_media |
Unpublish a media asset |
SEO (4 tools)
| Tool | Description |
|---|---|
get_item_seo |
Get SEO metadata for a collection item |
set_item_seo |
Set SEO metadata for a collection item, including Schema.org structured data |
get_document_seo |
Get SEO metadata for a document |
set_document_seo |
Set SEO metadata for a document, including Schema.org structured data |
Delivery API (5 tools)
| Tool | Description |
|---|---|
delivery_list_collections |
List published collections (public API) |
delivery_get_collection |
Get a published collection (public API) |
delivery_list_items |
List published items in a collection (public API) |
delivery_get_item |
Get a published item (public API) |
delivery_get_document |
Get a published document (public API) |
What Can You Do?
Once connected, try asking your AI assistant:
Content Creation
- "Create a blog collection with title, content, author, and featured image fields"
- "Add 5 blog posts about web development best practices"
- "Create an About page document with hero title, description, and team section"
Content Management
- "List all my collections and their field schemas"
- "Update the hero title on my homepage to 'Build faster with AI'"
- "Publish all draft items in the blog collection"
Media
- "Upload this image from URL and set it as the featured image for my latest blog post"
- "List all media assets and show me which ones are unpublished"
SEO
- "Set SEO metadata for all blog posts — generate meta titles and descriptions based on the content"
- "Check which items are missing SEO metadata"
Site Discovery
- "Show me the structure of my site — all collections, documents, and their fields"
- "What content types do I have? List everything."
Content Delivery
- "Fetch my published blog posts and show me what the delivery API returns"
- "Check if the homepage document is published and what data it serves"
Troubleshooting
"EELZAP_API_KEY is required"
The server can't find your API key. Make sure it's set in the env section of your MCP config (all tools, including Codex via [mcp_servers.eelzap.env]).
"Connection refused" or "ECONNREFUSED"
The server can't reach the API. Check:
- Your
EELZAP_BASE_URLis correct (default:https://api.eelzap.com) - If using local dev, ensure the CMS app is running on the expected port
"401 Unauthorized"
Your API key is invalid or expired. Generate a new one from the Eel Zap dashboard (Settings > API Keys) and run eelzap-mcp switch-key.
"403 Forbidden"
You're using a public key (public_) for a write operation. Switch to a secret key (secret_).
Server not appearing in your tool
- Claude Code: Restart Claude Code or run
/mcpto check server status - Cursor: Restart Cursor; check Settings > Tools & MCP for server status
- VS Code: Check the MCP panel; try "MCP: List Servers" from the command palette
- Codex: Restart Codex; ensure the TOML config is at
~/.codex/config.toml - Claude Desktop: Fully quit and reopen Claude Desktop (config changes require restart)
Tools not loading / "No tools available"
The server starts but tools aren't registered. Run eelzap-mcp doctor to diagnose, or check the server logs for errors during startup.
Development
git clone https://github.com/8ux-co/eelzap-mcp-server.git
cd eelzap-mcp-server
npm install
npm run build
npm test
Run locally during development:
EELZAP_API_KEY=secret_... npx tsx src/index.ts
Test with MCP Inspector:
EELZAP_API_KEY=secret_... npx @modelcontextprotocol/inspector npx tsx src/index.ts
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。