{"_id":"@algorismus/elementor-ultra-mcp","_rev":"3-6fbf5c94ce2eadaaa6ad44db5fac1563","name":"@algorismus/elementor-ultra-mcp","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@algorismus/elementor-ultra-mcp","version":"1.0.0","keywords":["ai-agents","agent-native","mcp","model-context-protocol","llm","elementor","wordpress","claude","cursor"],"author":{"url":"https://algorismus.io","name":"Algorismus","email":"shahmir@algorismus.io"},"license":"MIT","_id":"@algorismus/elementor-ultra-mcp@1.0.0","maintainers":[{"name":"algorismus","email":"shahmir@algorismus.io"}],"homepage":"https://github.com/Algorismus-io/elementor-ultra-mcp#readme","bugs":{"url":"https://github.com/Algorismus-io/elementor-ultra-mcp/issues"},"bin":{"elementor-ultra-mcp":"index.mjs"},"dist":{"shasum":"41f96e86e77651746f40cb3a791beaa5a2ed15cb","tarball":"https://registry.npmjs.org/@algorismus/elementor-ultra-mcp/-/elementor-ultra-mcp-1.0.0.tgz","fileCount":4,"integrity":"sha512-l6CgLNM2jwayzHi0kW9DUjUE1b70ylZTjtoTIDMkbb0VDa7dZNuP/rQbLKo2g+inqI2dj7utB/LF+2/8f8w3jw==","signatures":[{"sig":"MEYCIQCagGyiaztobBmpBMiyyQ22sp7i0kUwNi6KSWo/RlffpQIhALGYdVQ0YNXVlPlNGXSQDoKodL9/p2wqnjVTX4XMZkKK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":961809},"type":"module","engines":{"node":">=18"},"gitHead":"95d6ede3b28b7c4d1dbbf566c6c07283661261d9","_npmUser":{"name":"algorismus","email":"shahmir@algorismus.io"},"repository":{"url":"git+https://github.com/Algorismus-io/elementor-ultra-mcp.git","type":"git","directory":"packages/server/npm"},"_npmVersion":"10.9.7","description":"MCP server that gives AI agents ~90 tools to build and govern real Elementor sites — read/build/refactor pages, HTML→Elementor conversion, design system, Pro widgets — every write validated server-side, backed up and reversible. Run with npx; pair with th","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.20.0","pngjs":"^7.0.0","css-tree":"^3.2.1","pixelmatch":"^7.2.0","@modelcontextprotocol/sdk":"^1.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"playwright":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/elementor-ultra-mcp_1.0.0_1785859220788_0.011293880696607417","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@algorismus/elementor-ultra-mcp","version":"1.0.1","keywords":["ai-agents","agent-native","mcp","model-context-protocol","llm","elementor","wordpress"],"author":{"url":"https://algorismus.io","name":"Algorismus","email":"shahmir@algorismus.io"},"license":"MIT","_id":"@algorismus/elementor-ultra-mcp@1.0.1","maintainers":[{"name":"algorismus","email":"shahmir@algorismus.io"}],"homepage":"https://github.com/Algorismus-io/elementor-ultra-mcp#readme","bugs":{"url":"https://github.com/Algorismus-io/elementor-ultra-mcp/issues"},"bin":{"elementor-ultra-mcp":"dist/index.js"},"dist":{"shasum":"70861c6344a88251d629b4a6c862595d3479df96","tarball":"https://registry.npmjs.org/@algorismus/elementor-ultra-mcp/-/elementor-ultra-mcp-1.0.1.tgz","fileCount":447,"integrity":"sha512-waPUUqVR4ckeq1mHy9SdTOhIMcVODpDUvx4K8m4IX8ccT/6Bq6r0QngpTJGM2NMVEWaVoP/+bJPdc44vzLBZ4A==","signatures":[{"sig":"MEYCIQCLAEE5N7YAwFX9Xp6JizX2X80O+RdyhBlHoh3hfMc2BAIhAKkiDMAjkJnrYEfMruRtSq88viBgwPILsosa+t+FpIYq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4142216},"main":"./dist/index.js","type":"module","_from":"file:packages/server/algorismus-elementor-ultra-mcp-1.0.1.tgz","types":"./dist/index.d.ts","mcpName":"io.github.Algorismus-io/elementor-ultra-mcp","scripts":{"lint":"eslint src","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","test:unit":"vitest run","test:smoke":"vitest run src/test-harness/smoke.test.ts","test:contract":"vitest run -c vitest.contract.config.ts"},"_npmUser":{"name":"algorismus","email":"shahmir@algorismus.io"},"_resolved":"/private/tmp/claude-501/-Users-shahmir-projects-wpos-muneeb-backend/50232583-396f-4676-9918-634f5799c77b/scratchpad/mcp-repo/packages/server/algorismus-elementor-ultra-mcp-1.0.1.tgz","_integrity":"sha512-waPUUqVR4ckeq1mHy9SdTOhIMcVODpDUvx4K8m4IX8ccT/6Bq6r0QngpTJGM2NMVEWaVoP/+bJPdc44vzLBZ4A==","repository":{"url":"git+https://github.com/Algorismus-io/elementor-ultra-mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server that gives AI agents ~90 tools to build and govern real Elementor sites: read/build/refactor pages, HTML→Elementor conversion, design system, Pro widgets — every write validated server-side, backed up and reversible.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.20.0","pngjs":"^7.0.0","css-tree":"^3.2.1","pixelmatch":"^7.2.0","playwright":"^1.60.0","@elementor-ultra/shared":"*","@modelcontextprotocol/sdk":"^1.29"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.8","vitest":"^2.1.3","typescript":"^5.6.3","@types/node":"^22.7.0","@types/pngjs":"^6.0.5","@types/css-tree":"^2.3.11"},"peerDependencies":{"zod":"^3.23.8"},"bundleDependencies":["@elementor-ultra/shared"],"_npmOperationalInternal":{"tmp":"tmp/elementor-ultra-mcp_1.0.1_1786479461444_0.14595633745816006","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@algorismus/elementor-ultra-mcp","version":"1.0.2","description":"MCP server that gives AI agents ~90 tools to build and govern real Elementor sites: read/build/refactor pages, HTML→Elementor conversion, design system, Pro widgets — every write validated server-side, backed up and reversible.","type":"module","bin":{"elementor-ultra-mcp":"dist/index.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc -b","lint":"eslint src","test:unit":"vitest run","clean":"rm -rf dist *.tsbuildinfo","test:smoke":"vitest run src/test-harness/smoke.test.ts","test:contract":"vitest run -c vitest.contract.config.ts"},"dependencies":{"@elementor-ultra/shared":"*","@modelcontextprotocol/sdk":"^1.29","ajv":"^8.20.0","css-tree":"^3.2.1","pixelmatch":"^7.2.0","playwright":"^1.60.0","pngjs":"^7.0.0"},"peerDependencies":{"zod":"^3.23.8"},"devDependencies":{"@types/css-tree":"^2.3.11","@types/node":"^22.7.0","@types/pngjs":"^6.0.5","typescript":"^5.6.3","vitest":"^2.1.3","zod":"^3.23.8"},"license":"MIT","author":{"name":"Algorismus","email":"shahmir@algorismus.io","url":"https://algorismus.io"},"repository":{"type":"git","url":"git+https://github.com/Algorismus-io/elementor-ultra-mcp.git"},"keywords":["ai-agents","agent-native","mcp","model-context-protocol","llm","elementor","wordpress"],"mcpName":"io.github.Algorismus-io/elementor-ultra-mcp","_id":"@algorismus/elementor-ultra-mcp@1.0.2","bundleDependencies":["@elementor-ultra/shared"],"bugs":{"url":"https://github.com/Algorismus-io/elementor-ultra-mcp/issues"},"homepage":"https://github.com/Algorismus-io/elementor-ultra-mcp#readme","_integrity":"sha512-8gB7kLOcub0pyrfYT03W+Ddu2RuLcGq2PQXCdqKORkS2PG40Pt/7yH6gxSAK9c5hONslhF65VQepqTjVEXseTg==","_resolved":"/private/tmp/claude-501/-Users-shahmir-projects-wpos-muneeb-backend/50232583-396f-4676-9918-634f5799c77b/scratchpad/mcp-repo/packages/server/algorismus-elementor-ultra-mcp-1.0.2.tgz","_from":"file:packages/server/algorismus-elementor-ultra-mcp-1.0.2.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-8gB7kLOcub0pyrfYT03W+Ddu2RuLcGq2PQXCdqKORkS2PG40Pt/7yH6gxSAK9c5hONslhF65VQepqTjVEXseTg==","shasum":"e22417a74a77ff5f8f9d652653203c75dbcc00d0","tarball":"https://registry.npmjs.org/@algorismus/elementor-ultra-mcp/-/elementor-ultra-mcp-1.0.2.tgz","fileCount":447,"unpackedSize":4142216,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAvuef+X2k59R9QyMaOrpF2iSKjorfmhWt3XnTYwmgrZAiAG5krUcZtiPpNdykmYSQtj0FPcM9ieAjOioKwQ/qCzwQ=="}]},"_npmUser":{"name":"algorismus","email":"shahmir@algorismus.io"},"directories":{},"maintainers":[{"name":"algorismus","email":"shahmir@algorismus.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elementor-ultra-mcp_1.0.2_1786512938019_0.03591451993956918"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T16:00:20.561Z","modified":"2026-08-12T05:35:38.367Z","1.0.0":"2026-08-04T16:00:20.999Z","1.0.1":"2026-08-11T20:17:41.654Z","1.0.2":"2026-08-12T05:35:38.208Z"},"bugs":{"url":"https://github.com/Algorismus-io/elementor-ultra-mcp/issues"},"author":{"name":"Algorismus","email":"shahmir@algorismus.io","url":"https://algorismus.io"},"license":"MIT","homepage":"https://github.com/Algorismus-io/elementor-ultra-mcp#readme","keywords":["ai-agents","agent-native","mcp","model-context-protocol","llm","elementor","wordpress"],"repository":{"type":"git","url":"git+https://github.com/Algorismus-io/elementor-ultra-mcp.git"},"description":"MCP server that gives AI agents ~90 tools to build and govern real Elementor sites: read/build/refactor pages, HTML→Elementor conversion, design system, Pro widgets — every write validated server-side, backed up and reversible.","maintainers":[{"name":"algorismus","email":"shahmir@algorismus.io"}],"readme":"# Elementor Ultra MCP — server\n\nThe `npx`-distributable [Model Context Protocol](https://modelcontextprotocol.io) server for safely\nreading and authoring **Elementor** documents on a WordPress site. It pairs with the companion\nWordPress plugin (`elementor-ultra-mcp`) that exposes the `elementor-ultra/v1` REST seam this server\ncalls. Built on `@modelcontextprotocol/sdk@^1.29`.\n\n> This package is the **TypeScript MCP server only**. It does **not** bundle Elementor, Elementor\n> Pro, or the companion plugin — install those separately on each target site (see below).\n\n## Quick start (npx, stdio — Claude Desktop / local MCP clients)\n\nNo install needed; run it on demand with `npx`. Add this to your MCP client config (e.g. Claude\nDesktop's `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"elementor-ultra\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@youragency/elementor-ultra-mcp\"],\n      \"env\": {\n        \"WP_URL\": \"https://clientsite.test\",\n        \"WP_USER\": \"mcp-agent\",\n        \"WP_APP_PASSWORD\": \"xxxx xxxx xxxx xxxx xxxx xxxx\",\n        \"ULTRA_TOOLS\": \"lean\"\n      }\n    }\n  }\n}\n```\n\nThe server reads its config **once at startup** from the environment. With no `WP_URL`/`WP_USER`/\n`WP_APP_PASSWORD` set it prints a short notice and exits cleanly (so you can probe that the binary\nruns before wiring credentials).\n\n## Environment configuration\n\n| Variable          | Required | Default | Description                                                                                                        |\n| ----------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------ |\n| `WP_URL`          | yes      | —       | Base URL of the WordPress site (e.g. `https://clientsite.test`).                                                   |\n| `WP_USER`         | yes      | —       | WordPress username for the agent (an admin with `unfiltered_html`).                                                |\n| `WP_APP_PASSWORD` | yes      | —       | The user's [Application Password](https://wordpress.org/documentation/article/application-passwords/) (spaces ok). |\n| `ULTRA_TOOLS`     | no       | `lean`  | Tool profile: `lean` (curated surface) or `full` (every tool).                                                     |\n| `MCP_TRANSPORT`   | no       | `stdio` | Transport: `stdio` (local) or `http` (Streamable HTTP, hosted).                                                    |\n\nAuthentication is **HTTP Basic** using `base64(WP_USER:WP_APP_PASSWORD)`, sent to both `wp/v2/*` and\n`elementor-ultra/v1/*`. This is the security boundary — the companion plugin's REST routes each gate\non `current_user_can(...)`, not on a nonce.\n\n## Transports\n\n- **stdio** (`MCP_TRANSPORT=stdio`, default) — for local clients like Claude Desktop, launched via\n  `npx`. The process speaks MCP over stdin/stdout.\n- **Streamable HTTP** (`MCP_TRANSPORT=http`) — for hosted/serverless use. Clients connect to the MCP\n  endpoint URL and send `Authorization: Basic <base64(user:app-password)>`:\n\n  ```json\n  {\n    \"url\": \"https://your-host/elementor-ultra-mcp\",\n    \"headers\": { \"Authorization\": \"Basic <base64(user:app-password)>\" }\n  }\n  ```\n\n## Per-site setup (companion plugin + App Password)\n\nEach target WordPress site needs the companion plugin and a dedicated agent App Password:\n\n1. **Install Elementor** (4.1.0+) and activate it. (Pro is optional; Pro tools degrade gracefully\n   when absent.)\n2. **Install the companion plugin** `elementor-ultra-mcp` — either as a normal plugin\n   (`wp-content/plugins/`) or, on multisite, dropped as a network mu-plugin\n   (`wp-content/mu-plugins/`). Activation idempotently grants the\n   `elementor_global_classes_update_class` capability so global-class writes work for the agent user.\n3. **Create a dedicated admin user** for the agent and ensure it has `unfiltered_html`.\n4. **Generate an Application Password** for that user (Users → Profile → Application Passwords) and\n   put it in `WP_APP_PASSWORD`.\n5. **Verify** via the `site.capabilities` tool that `can_update_class=true`, the V4 atomic experiment\n   is active, and `classes_migrated=true`.\n\n> **Local/dev (plain HTTP):** Application Password Basic auth works over plain HTTP. If the WP admin\n> UI refuses to _create_ an App Password on a non-SSL host, the companion plugin enables creation on\n> `local` environments only; production keeps HTTPS.\n\n## Multisite / agency fan-out\n\nOne server instance can fan out to many sites: hold a config map of `site URL → {url, basicToken}`\nand point clients at the per-site credentials. Ship the companion plugin as a network mu-plugin so a\nsingle codebase serves every subsite, each with its own App Password.\n\n## License\n\nGPL-2.0-or-later.\n","readmeFilename":"README.md"}