Appmixer MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Appmixer MCPlist all my active automation flows"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Appmixer MCP
A Model Context Protocol (MCP) server for the Appmixer workflow-automation platform. It lets LLM clients (Claude, Cursor, VS Code, Windsurf, …) control and observe the flows of an Appmixer tenant user, and dynamically exposes tools published by "MCP Gateway" components running inside Appmixer flows.
Requirements
Node.js 20 or newer
An Appmixer tenant and user account
Related MCP server: MCP Tool-Calling Agent
Getting started
Add the server to your MCP client. A typical configuration:
{
"mcpServers": {
"appmixer": {
"command": "npx",
"args": ["appmixer-mcp"],
"env": {
"APPMIXER_BASE_URL": "https://api.YOUR_TENANT.appmixer.cloud",
"APPMIXER_ACCESS_TOKEN": "<your-appmixer-access-token>"
}
}
}
}With Claude Code:
claude mcp add appmixer npx appmixer-mcp \
-e APPMIXER_BASE_URL="https://api.YOUR_TENANT.appmixer.cloud" \
-e APPMIXER_ACCESS_TOKEN="..."Desktop bundle (MCPB)
For Claude Desktop users without Node.js, the server also ships as an .mcpb
bundle: download it, double-click, and fill in the tenant URL and token in the
install dialog (the token is stored in the OS keychain).
npm run build:mcpb # -> dist/appmixer-mcp-<version>.mcpbThe bundle is the recommended install for Claude Desktop today, because
Desktop's remote-connector flow requires OAuth, which the server does not
implement yet (see docs/phase-3b-platform.md).
For every other client, prefer npx appmixer-mcp or the remote server below.
Remote server (streamable HTTP)
Besides stdio, the same server runs as a remote MCP endpoint:
npx appmixer-mcp-http # or: docker compose -f docker-compose.example.yml up -dTwo auth modes (MCP_AUTH_MODE, auto-detected by default):
env— the server usesAPPMIXER_*credentials from its environment and serves that single user to every caller. For personal/team self-hosting only; never expose publicly.bearer— every MCP client sends its own Appmixer access token:Authorization: Bearer <token>. Multi-user; sessions are bound to the token. Example:claude mcp add --transport http appmixer https://your-host/mcp --header "Authorization: Bearer <token>".
HTTP-specific environment: MCP_HTTP_PORT (default 3000; falls back to
PORT when unset, for platforms that inject it), MCP_HTTP_HOST
(default 127.0.0.1; the Docker image listens on 0.0.0.0 — terminate TLS in a
reverse proxy in front), MCP_ALLOWED_ORIGINS (comma-separated Origin
allowlist for browser clients; empty = reject all browser origins),
MCP_SESSION_IDLE_TIMEOUT (seconds, default 14400), MCP_MAX_SESSIONS
(default 200; further sessions get 429) and MCP_RATE_LIMIT_PER_MINUTE
(session attempts per client address, default 30, 0 disables).
Health check: GET /healthz.
Note: claude.ai custom connectors require OAuth and cannot send bearer headers —
that flow is tracked in docs/phase-3b-platform.md.
Configuration
Variable | Description |
| Required. Your Appmixer tenant API URL, e.g. |
| Appmixer access token (JWT). Recommended over username/password. |
| Appmixer username — only needed when no token is provided, or to let the server renew expired tokens automatically. |
| Appmixer password (see above). |
| Enabled tool groups, comma-separated. Default |
Authentication notes
Prefer
APPMIXER_ACCESS_TOKEN. Tokens expire (GRIDD_JWT_TOKEN_EXPsystem setting,30dby default) — when username/password are also provided, the server re-authenticates automatically on expiry.Consider a dedicated non-admin Appmixer user for MCP access so the token's capabilities are limited by ACL.
Tools
API tools (TOOLS=api)
Tool | Kind | Description |
| read | List flows (pattern filter, pagination). |
| read | Flow metadata + component list; optionally the full descriptor. |
| read | Runtime status of a flow. |
| read | Execution logs, filterable with Lucene query syntax. |
| read | Messages parked by the default error handling (dead-letter queue). |
| read | One parked message in full: the error and the input that failed. |
| write | Replay a parked message once the flow is fixed. |
| destructive | Discard a parked message. |
| write | Start a flow. |
| write | Stop a flow. |
| destructive | Permanently delete a flow. |
| write | Send a POST/PUT/PATCH/DELETE webhook request to a trigger component of a running flow. |
| read | Send a GET request to a trigger component that listens on GET. |
| write | Send a named App Event to the user's flows. |
Flow authoring tools (TOOLS=api)
Tool | Kind | Description |
| read | The complete guide to writing flow descriptor JSON (also exposed as the MCP resource |
| read | Apps/connectors available on the tenant. |
| read | Component summaries per app, or the full manifest of one component (ports, input fields, output variables). |
| read | Third-party accounts connected by the user. |
| write | Create a flow from a descriptor; validates automatically. |
| write | Replace a flow's descriptor/name; re-validates. |
| read | Server-side validation with per-component errors. |
| read | Exact |
| write | Dry-run one component + its downstream graph with sample input, without starting the flow. |
| read | Resolve dynamic inspector/output-port options (channel pickers, sheet lists, generated variables) at runtime. |
| read | Public webhook URL of a trigger component — the building block for chaining flows. |
| read | Which components need a connected account and what is assigned. |
| write | Bind a connected account to a component. |
Data, versions and modifiers (TOOLS=api)
Tool | Kind | Description |
| read / write | Data stores the flows read and write. |
| read | Records of a store, with the total count. |
| write | Create or overwrite one record (the value is stored verbatim). |
| destructive | Delete one record. |
| read | Saved snapshots of a flow. |
| write | Snapshot the current state before a risky edit. |
| destructive | Roll the flow back to a snapshot. |
| write | Copy a flow, optionally carrying its accounts over. |
| read | The |
The intended authoring loop: read the guide → discover components → create_flow
→ fix validate_flow errors via update_flow → check paths with
get_flow_variables → dry-run with test_flow → start_flow.
All tools ship proper MCP annotations (readOnlyHint, destructiveHint), so
well-behaved clients auto-allow reads and always confirm destructive calls.
Errors are returned as actionable isError results with the API status and a
hint on how to fix the problem.
MCP Gateway tools (TOOLS=mcpgateway)
Every running flow that contains an "MCP Gateway" component (from the
"MCP Tools" category) contributes its connected tools to this server. The tool
list updates live — starting or stopping such flows adds or removes tools
(standard tools/list_changed notifications).
Requires the appmixer.ai.mcptools module installed on the tenant. When the
module is missing, gateway tools are disabled gracefully and API tools keep
working. See docs/mcptools-endpoints.md for the
module's endpoint documentation.
Development
npm install
npm run build # compile TypeScript to dist/
npm test # unit tests (vitest)
npm run dev # run from sources (tsx)
# Live tests against a real tenant:
APPMIXER_BASE_URL=... APPMIXER_USERNAME=... APPMIXER_PASSWORD=... node test/smoke.mjs
APPMIXER_BASE_URL=... APPMIXER_USERNAME=... APPMIXER_PASSWORD=... node test/e2e-authoring.mjs
# Gateway lifecycle — needs the appmixer.ai.mcptools module; skips without it:
APPMIXER_BASE_URL=... APPMIXER_USERNAME=... APPMIXER_PASSWORD=... node test/e2e-gateway.mjs
# After editing docs/flow-authoring-guide.md, regenerate the embedded copy:
npm run gen:guideLLM evals
evals/ contains an agent-level benchmark: each task in evals/tasks.json asks
an LLM (via the claude CLI with this server mounted over --mcp-config) to
build a flow from a natural-language brief. The runner scores the result
objectively through the Appmixer API — flow created, passes validation,
expected components present, valid on the first try, tool-call count and cost —
and writes a JSON report to evals/results/.
node evals/run.mjs # all tasks (costs real LLM tokens!)
node evals/run.mjs --model haiku # different model
node evals/run.mjs --only condition-branching --keepRun it before releases or after changing the authoring guide, tool descriptions or output formats — it is the regression test for the parts of this server that unit tests cannot cover.
Releasing
Releases are cut locally with npm run release
(commit-and-tag-version)
and published by GitHub Actions:
git checkout main && git pull && npm install
npm run release # bump, CHANGELOG, release commit + tag
git push --follow-tags origin main # the v* tag runs .github/workflows/release.ymlThe bump comes from the conventional commits since the last tag (
fix:→ patch,feat:→ minor,!→ major). Force one withnpm run release -- --release-as minor(or an exact version)..versionrc.jsonkeepspackage.json,package-lock.json,mcpb/manifest.jsonandsrc/version.tson the same version.The workflow builds, tests, publishes to npm through trusted publishing (OIDC, no npm token) and attaches the
.mcpbbundle to a GitHub release. Never runnpm publishlocally.
Project documentation
docs/status.md— where the work stands and what it is waiting ondocs/flow-authoring-guide.md— the flow descriptor format (embedded in the server)docs/mcptools-endpoints.md— the MCP Gateway module's endpoints and known issuesdocs/phase-3b-platform.md— work that depends on the Appmixer platform teamdocs/gaps-and-roadmap.md— honest self-assessment against MCP standards and the roadmap
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes internal company services as LLM-callable MCP tools, enabling AI agents to perform business operations like customer management, order processing, and support ticketing through natural language.-
- FlicenseNot gradedqualityCmaintenanceEnables an LLM to dynamically discover and call tools across multiple MCP servers (file, GitHub, SQL, Python execution) with authentication, rate limiting, and observability, supporting parallel execution and secure deployment.-
- AlicenseNot gradedqualityBmaintenanceEnables plain-English workflow automation across connected tools like GitHub, Notion, Slack, and more, with self-healing execution, scheduling, and status reporting through MCP.5 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform go-to-market workflows such as company and contact enrichment, CRM querying, and controlled, audited writes to a CRM through MCP tools callable from any MCP client.1MIT