appsmith-mcp

appsmith-mcp

An MCP server that enables AI agents to build and edit Appsmith apps by driving the browser editor via WebDriver BiDi and Redux store manipulation.

Category
访问服务器

README

appsmith-mcp

An MCP server that lets an AI agent control Appsmith — building and editing apps (pages, widgets, queries, datasources, JS objects, themes) by driving the real editor in the browser. It attaches to a running Firefox over the WebDriver BiDi protocol and reads/dispatches the editor's Redux store, so an agent can operate Appsmith the same way a person would.

How it works

Appsmith has no public API for editing apps — the builder lives entirely in the browser. This server drives that builder in place: it attaches to a running Firefox over WebDriver BiDi, finds Appsmith's Redux store on the open editor page, and runs predefined JavaScript snippets against it.

Each tool is one such snippet. Reads pull straight from Redux state; writes dispatch the same actions the editor UI fires when you click — so creating a widget, wiring a query, or editing a custom widget's source is the programmatic equivalent of doing it by hand, and changes render live and save to the Appsmith backend.

The tools cover the full editor surface but lean toward custom widgets — self-contained HTML/CSS/JS components — since AI is generally better at building a UI as code than by arranging Appsmith's native widgets on a visual grid.

Prerequisites

  • Firefox — the server attaches to a running instance.
  • Python 3.10+ and uv or pip.
  • A reachable Appsmith instance you can log into.

Install

uv:

uv sync

pip:

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Launch Firefox with remote debugging

./launch.sh

This kills any running Firefox and reopens it with the BiDi port enabled (works on macOS, Linux, and Windows via Git Bash). Log into Appsmith and navigate to an app's editor page (.../edit) in that window. The server re-bootstraps on the next tool call after any navigation.

Register with Claude Code

claude mcp add --scope user appsmith /path/to/appsmith-mcp/.venv/bin/appsmith-mcp

After launching/relaunching Firefox, reconnect the server with /mcp so it re-attaches.

Tools

App & workspace

  • list_workspaces — List workspaces (id and name).
  • list_apps — List all applications across workspaces, with editor URLs.
  • create_app — Create a new application.
  • update_app — Update the current app's metadata and settings (name, navigation, theme, layout).
  • delete_app — Delete an application by id.
  • get_state_summary — Counts of widgets, datasources, and queries in the current app.
  • dump_state — Dump the current app's pages and widget tree (optionally full detail).
  • get_logs — Return log/error metadata (no message text).

Pages

  • list_pages — List the app's pages, flags, and which is active.
  • create_pages — Create one or more blank pages.
  • delete_pages — Delete one or more pages.
  • switch_page — Switch the editor to another page.

Custom widgets

  • create_custom_widget — Create a self-contained HTML/CSS/JS widget (the primary entrypoint).
  • get_custom_widget — Return a custom widget's source, model, events, name, and position.
  • update_custom_widget — Update its model, name, events, triggers, height mode, or position.
  • delete_custom_widget — Delete a custom widget by id.
  • patch_widget_code — Make targeted edits to a custom widget's source without rewriting it.

Widgets (native)

  • add_widgets — Add one or more native widgets.
  • update_widgets — Apply property updates to one or more widgets.
  • delete_widgets — Delete one or more widgets (cascades children).
  • set_widget_bounds — Move and/or resize widgets.
  • rename_widgets — Rename widgets.
  • reparent_widgets — Move widgets to a new parent canvas.
  • clear_canvas — Delete every widget on the page.
  • get_widget — Return a widget's full Redux record.
  • check_layout — Diagnose layout/overflow issues across the page.
  • list_widget_types — List widget types with a known property schema.
  • get_widget_schema — Return a widget type's property schema (controls, validation, defaults).
  • manage_table_columns — Add, remove, or reorder columns on a table widget.
  • manage_tabs — Add, remove, or reorder tabs on a tabs widget.

JS objects

  • list_js_objects — List JS objects with their declared function names.
  • get_js_objects — Return full source of JS objects (bodies, functions, variables).
  • create_js_objects — Create one or more JS objects.
  • update_js_objects — Replace the source of one or more JS objects.
  • delete_js_objects — Delete one or more JS objects.
  • patch_js_objects — Make targeted edits to JS object bodies without rewriting them.
  • execute_js_functions — Run JS object functions and return their results.

Queries

  • list_queries — List the app's queries (datasource actions).
  • create_queries — Create one or more queries bound to datasources.
  • update_queries — Update one or more queries.
  • delete_queries — Delete one or more queries.
  • execute_queries — Run queries by id and return their responses.

Datasources

  • list_datasources — List datasources in the current workspace.
  • create_datasources — Create one or more datasources.
  • update_datasources — Update one or more datasources.
  • delete_datasources — Delete one or more datasources.
  • list_plugins — List available plugins (REST, Postgres, MongoDB, etc.).

Themes

  • list_themes — List built-in and saved custom themes.
  • get_current_theme — Return the active theme and its color/font/radius/shadow values.
  • set_theme — Switch the app to a theme by id.
  • update_theme — Patch the current theme's properties.
  • save_custom_theme — Save the current theme as a named custom theme.
  • delete_custom_themes — Delete saved custom themes.

Browser & navigation

  • get_url — Return the URL loaded in the attached Firefox tab.
  • navigate — Navigate the tab to a URL.
  • refresh_page — Reload the tab and wait for it to finish.
  • run_command — Evaluate arbitrary JS in the tab and return the result.

⚠️ run_command evaluates arbitrary JavaScript in the attached browser tab with full access to the Redux store and the page — it can read or modify anything in the live session, bypassing the safety constraints of the other tools. It's an escape hatch for exploring state and discovering action shapes; use it deliberately.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选