Elfsight

Manage Elfsight website widgets from your AI agent: browse apps and projects, create widgets from templates, change their settings, publish them and get the embed code.

Hosted MCP Server

npx add-mcp 'https://mcp.elfsight.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Elfsight — MCP Server

This repository holds the documentation and the registry manifest (server.json) of the Elfsight MCP server. The server itself is hosted by Elfsight; there is nothing to build or run here. For help, contact Elfsight Help Center.

A remote Model Context Protocol server over your Elfsight workspace. Point an MCP-capable AI agent at it and it can browse your apps, projects and widgets, create widgets from templates, change their settings, publish them and hand you the install code — without you clicking through the Dashboard.

The server is workspace-scoped: when you sign in, you pick one Elfsight workspace, and the agent can reach only the apps, projects and widgets of that workspace.

Server URL: https://mcp.elfsight.com/mcp (Streamable HTTP).

Connect

Sign-in is OAuth. Add the server URL to your MCP client; the client opens a browser window, you sign in to Elfsight, choose the workspace and approve access. There is no key to copy.

Claude (claude.ai, Desktop, mobile)

In Claude, open Settings → Connectors, choose Add custom connector and enter the server URL https://mcp.elfsight.com/mcp, then sign in to Elfsight and approve access. On Team and Enterprise plans an organization Owner may need to add the connector first.

Claude lists nine tools as read-only and six as write tools; on the connector's page you choose for each group whether Claude asks before calling it.

Claude Code

claude mcp add --transport http elfsight https://mcp.elfsight.com/mcp

Then run /mcp inside Claude Code and choose Authenticate for elfsight.

Cursor

This repository is also a Cursor plugin: the manifest is in .cursor-plugin/plugin.json, the server connection in mcp.json, and a rule with usage notes for the agent in rules/.

To connect without the plugin, add the server to .cursor/mcp.json and authenticate it when Cursor prompts:

{
  "mcpServers": {
    "elfsight": {
      "url": "https://mcp.elfsight.com/mcp"
    }
  }
}

Cline

In Cline, open MCP Servers → Remote Servers and add:

  • Server Name: elfsight
  • Server URL: https://mcp.elfsight.com/mcp
  • Transport: Streamable HTTP

Then choose Authenticate for the server and sign in to Elfsight in the browser.

The same in Cline's own settings file, cline_mcp_settings.json. Recent versions keep it in ~/.cline/data/settings/, older ones in the editor's User/globalStorage/saoudrizwan.claude-dev/settings/. Keep type: without it Cline falls back to the legacy SSE transport. .vscode/mcp.json belongs to VS Code's built-in MCP support; Cline does not read it.

{
  "mcpServers": {
    "elfsight": {
      "type": "streamableHttp",
      "url": "https://mcp.elfsight.com/mcp"
    }
  }
}

Other clients

Any client that supports remote MCP servers with OAuth (dynamic client registration and PKCE) should connect with the server URL alone.

VS Code: Install in VS Code or add it to .vscode/mcp.json:

{
  "servers": {
    "elfsight": {
      "type": "http",
      "url": "https://mcp.elfsight.com/mcp"
    }
  }
}

Windsurf (mcp_config.json):

{
  "mcpServers": {
    "elfsight": {
      "serverUrl": "https://mcp.elfsight.com/mcp"
    }
  }
}

What you can ask it

Reads:

  • list_app_catalog — "Which Elfsight apps are there?"
  • list_account_apps — "Which apps do I have in my workspace?"
  • list_projects — "List my projects."
  • list_widgets — "Show my Instagram Feed widgets in the Landing project."
  • get_widget — "What are the current settings of widget <id>?"
  • get_widget_limit — "How many more Google Reviews widgets can I create?"
  • list_widget_templates — "What templates does the Pricing Table app have?"
  • get_install_code — "Give me the embed code for this widget."
  • get_widget_edit_links — "Give me the link to edit this widget in the Dashboard."

Writes:

  • create_widget — "Create a Countdown Timer from the Black Friday template."
  • duplicate_widget — "Make a copy of this widget."
  • rename_widget — "Rename it to Homepage reviews."
  • update_widget_settings — "Change the header text and the accent color."
  • publish_widget — "Publish the changes."
  • discard_widget_changes — "Throw away the unpublished changes."

How widget changes work

  • Widgets are created from templates. create_widget needs an app alias and an active template of that app (from list_widget_templates). The new widget is published right away; when the app's widget limit is reached it is saved as a draft (status: DRAFT).
  • Settings changes are drafts until published. update_widget_settings applies a JSON Merge Patch to the unpublished revision: objects merge, null removes a key, arrays are replaced as a whole. The site keeps showing the published version until publish_widget is called; discard_widget_changes drops the draft. The draft is shared with the Dashboard editor, so publishing or discarding also covers any unpublished edits you made there.
  • The publish link publishes on open. get_widget_edit_links returns editUrl and publishUrl; opening publishUrl in a browser where you are signed in to Elfsight publishes the draft immediately.
  • Sensitive settings are protected. Each app declares restricted settings (secrets, connected accounts and similar). Changes to them are rejected; edit those in the Dashboard.
  • Nothing is deleted. The server has no tool that deletes widgets or projects.

Privacy

Everything a tool returns can be sent to your AI provider (Anthropic, OpenAI, etc.) as part of your conversation with the agent. Widget settings contain whatever you put in your widgets — texts, links, images and, for some apps, contact details. Treat tool results accordingly.

Limits and rate limiting

  • list_widgets and list_widget_templates return pages of up to 100 items (page, itemsPerPage).
  • Requests are rate-limited per client: 60 tool calls per minute. Going over the limit returns a 429 with a Retry-After header — wait and retry.

Support

Questions or issues — contact Elfsight Help Center or your account manager.