npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@8ux-co/eelzap-mcp-server

v0.7.0

Published

Standalone MCP server for the Eel Zap CMS

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_URL is 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 /mcp to 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