appsmith-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPSMITH_URL | Yes | The URL of the Appsmith instance | |
| APPSMITH_PASSWORD | Yes | The Appsmith password | |
| APPSMITH_USERNAME | Yes | The Appsmith username | |
| APPSMITH_MCP_MAX_CHARS | No | Maximum number of characters for large payloads (page DSLs, exports). Payloads are truncated at this limit. | |
| APPSMITH_MCP_ALLOW_DESTRUCTIVE | No | Set to 'true' to allow destructive operations such as delete application and non-GET appsmith_api_request calls |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| appsmith_whoamiA | Returns the authenticated Appsmith user and instance info. Use this first to confirm the MCP server can reach and log into the instance. |
| appsmith_list_workspacesA | Lists the workspaces the authenticated user can access, with their ids. |
| appsmith_list_applicationsA | Lists Appsmith applications, optionally filtered to one workspace. Returns app ids needed by the other tools. |
| appsmith_list_pagesC | Lists the pages of an application, with page ids and which page is the default. |
| appsmith_get_pageA | Returns a page. By default returns a widget outline (name, type, id) which is compact; set full=true for the raw layout DSL, which can be very large. |
| appsmith_list_queriesB | Lists the non-JS actions (database queries and API calls) of an application, including their datasource and current body. |
| appsmith_list_js_objectsB | Lists the JS objects (action collections) of an application and their function names. |
| appsmith_list_datasourcesC | Lists datasources in a workspace, with the plugin each one uses. |
| appsmith_get_datasource_structureB | Returns the introspected schema (tables, columns, keys) of a datasource. |
| appsmith_list_pluginsA | Lists available Appsmith plugins (Postgres, REST API, MongoDB, ...) and their ids. |
| appsmith_search_entitiesB | Searches applications and workspaces by keyword. |
| appsmith_export_applicationA | Exports an application as JSON. Writes to outputPath when given (recommended — exports are large); otherwise returns the JSON inline, truncated. |
| appsmith_create_workspaceC | Creates a new Appsmith workspace. |
| appsmith_create_applicationB | Creates an application inside a workspace. |
| appsmith_create_pageB | Creates a page in an application, with the same empty root canvas the editor creates. |
| appsmith_update_queryA | Edits an existing query or API action. Only the fields you pass are changed — the server merges the rest, so the datasource and untouched settings are preserved. Does not rename: renaming needs a refactor that rewrites bindings across the app. |
| appsmith_create_queryB | Creates a query on a page against an existing datasource. The plugin and workspace are taken from the datasource. |
| appsmith_delete_queryA | Deletes a query or API action. Disabled unless APPSMITH_MCP_ALLOW_DESTRUCTIVE=true is set in the server env. |
| appsmith_create_js_objectA | Creates a JS object from its source. The exported functions are parsed out of the body — Appsmith stores each one separately, and the source alone would produce an object with no callable functions. |
| appsmith_update_js_objectA | Replaces a JS object's source. Functions are parsed from the new body and diffed against the current ones, so added, changed and removed functions are all applied — a plain body write would leave deleted functions behind. |
| appsmith_delete_js_objectA | Deletes a JS object and all its functions. Check for references first — nothing rewrites bindings that point at it. Disabled unless APPSMITH_MCP_ALLOW_DESTRUCTIVE=true is set in the server env. |
| appsmith_get_widgetA | Returns one widget's properties from a page, without dumping the whole layout. Use this to see current values before editing. |
| appsmith_update_widgetA | Sets properties on a widget, e.g. {"isDisabled": "{{ appsmith.store.modo === "edicion" }}"}. Binding registration is handled automatically: a value containing {{ }} is added to the widget's dynamicBindingPathList, and a literal value is removed from it. Property names may be dot paths for nested config. Other widgets on the page are left untouched. |
| appsmith_clone_widgetA | Copies an existing widget (and everything inside it) into the same page under a new name, then applies any property overrides. This is how to add a widget: Appsmith's widget defaults live in its frontend, not its API, so copying a real widget of the wanted type is what produces a valid one. The copy lands below its siblings. Bindings inside the copy are carried over as-is, so any that named the source widget still point at the original — the response lists what was renamed so they can be fixed. |
| appsmith_generate_crud_pageA | Runs Appsmith's own page generator: builds a page with a table, a form and the wired-up queries from one datasource table. This is the supported way to create a complete, detailed screen — the layout comes from Appsmith rather than being assembled by hand. |
| appsmith_execute_queryB | Executes an existing query/API by its action id and returns the result. This runs against the real datasource — a write query will write. |
| appsmith_publish_applicationA | Deploys the current edit-mode state of an application, making it live for viewers. |
| appsmith_clone_applicationA | Clones an application within its workspace. Useful as a backup before risky edits. |
| appsmith_delete_applicationA | Permanently deletes an application. Disabled unless APPSMITH_MCP_ALLOW_DESTRUCTIVE=true is set in the server env. |
| appsmith_api_requestA | Calls any Appsmith REST endpoint directly, for things the typed tools do not cover. GET is always allowed; other methods require APPSMITH_MCP_ALLOW_DESTRUCTIVE=true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Davidgraciano/appsmith-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server