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:
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 theLandingproject."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 toHomepage 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_widgetneeds an app alias and an active template of that app (fromlist_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_settingsapplies a JSON Merge Patch to the unpublished revision: objects merge,nullremoves a key, arrays are replaced as a whole. The site keeps showing the published version untilpublish_widgetis called;discard_widget_changesdrops 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_linksreturnseditUrlandpublishUrl; openingpublishUrlin 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_widgetsandlist_widget_templatesreturn 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
429with aRetry-Afterheader — wait and retry.
Support
Questions or issues — contact Elfsight Help Center or your account manager.