To call your own application from a workflow step, expose it as something flowwork can import as a connector. Two paths:
1. Write an MCP server (recommended)
Expose your app’s features as tools on an MCP server, then import it:
flowctl mcp import --name myapp --transport http --url https://myapp.internal/mcp \
--header 'Authorization=Bearer ${credentials.token}' --secret token
Each tool becomes a connector operation you call from a connector() step. This is best when you
want a typed, self-describing surface that’s reusable across both agents and workflows. See
MCP connectors for the full import flow, the stdio vs HTTP transports, and
the security gate for spawned servers.
2. Wrap your app as a JSON-emitting CLI
If you already drive your app from the shell, wrap it as a command that prints JSON and register it with the CLI connector — flowwork runs the command and parses its stdout as the operation result.
The CLI connector adapter is designed on the same process substrate as stdio MCP but is not
shipped yet. Use the MCP path today; this page will expand when flowctl cli import
lands.
Which to choose
- MCP server — a durable, typed surface reused across many workflows and by Claude Code directly. Worth it when the integration is more than a one-off.
- CLI wrapper — the fastest path for an app you already script, once it’s available.
Either way, the workflow side is the same connector() step described in the
connectors overview.