DEV Community

Yurii
Yurii

Posted on

I gave Claude Desktop an MCP server — it automated my Shopify store by itself

I've been building FlowNet — a workflow automation SaaS for Shopify merchants, like n8n but embedded inside the Shopify admin.

Last week I finished the MCP server. So I ran an experiment: open Claude Desktop, give it one natural language prompt, and see if it can build a real workflow without me touching the UI.

Here's what happened.


The prompt

I have a Shopify store. I need the following automation in FlowNet:

When a product runs out of stock (all variants = 0) → hide it from the store (set to DRAFT) and tag it as "auto-hidden".

When it comes back in stock → publish it again (set to ACTIVE) and remove the "auto-hidden" tag.

Only if the product has a price > 0.

Please build this workflow in FlowNet.
Enter fullscreen mode Exit fullscreen mode

That's it. No JSON. No drag-and-drop. Just text.


What Claude did

Claude called 6 MCP tools in sequence:

[Shopify: inventory_levels/update]


[1] Fetch Product & Variants (GraphQL)
→ Gets product ID, status, tags, all variant prices & quantities


[2] Evaluate Stock & Price Logic (Lua)
→ Returns: action ("hide" | "publish" | "skip"), product_id,
current_tags, total_inventory, etc.


[3] Should We Act? (Condition)
action != "skip"
├── FALSE → workflow ends (no-op)
└── TRUE


[4] Hide or Publish? (Condition)
action == "hide"
├── TRUE → [5] Set DRAFT + Tag "auto-hidden" (GraphQL mutation)
└── FALSE → [6] Set ACTIVE + Remove "auto-hidden" tag (GraphQL mutation)

Two minutes. The workflow was live and ready to execute.


How the MCP server works

FlowNet is built on Elixir/Phoenix. The MCP server runs on top of anubis-mcp with Streamable HTTP transport.

18 tools across 5 domains:

Domain Tools
Workflows create, list, get, delete, activate
Steps add, configure, remove, get
Triggers add, configure, get
Edges add, remove
Executions list, get

Auth is via x-api-key header — a long-lived MCP key stored per-tenant.

Claude Desktop connects through mcp-proxy:

{
  "mcpServers": {
    "flownet": {
      "command": "uvx",
      "args": [
        "mcp-proxy",
        "--transport", "streamablehttp",
        "--headers", "x-api-key YOUR_KEY",
        "https://your-ngrok-url/mcp"
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Why MCP changes the product

I originally built FlowNet as a visual builder — drag steps, configure parameters, connect edges. It works, but the onboarding friction is real. Users need to understand the data model before they can build anything useful.

With MCP, the AI handles all of that. The user just describes the outcome.

This shifted my thinking: the visual UI is secondary. MCP + Claude is the primary interface. The builder is for inspection and fine-tuning.


What's next

FlowNet is pre-launch. I'm publishing weekly videos of the build process, including live MCP demos like this one.

🎥 Full demo video: https://youtu.be/rJzt3Peh6jM


Stack: Elixir/Phoenix · Broadway/Kafka · Oban · React Flow · TypeScript · Tailwind

Tags: elixir, shopify, mcp, buildinpublic

Top comments (0)