Skip to content

Connect Claude Desktop

This is the fastest path to “Claude can operate my charging network” — start to finish in about three minutes.

A Claude Desktop window where you can ask things like:

“List the stations that haven’t sent a heartbeat in the last 5 minutes, then tell me which ones are in load group 3.”

…and Claude will call get_station_liveness, list_evses, and combine the results into a single answer.

  • Claude Desktop installed
  • Python 3.11+ on your machine
  • A running Pipelet stack (cpms-headless reachable on http://localhost:8080) — see Installation
  • A valid Headless CPMS API key
  1. Install the MCP server.

    Terminal window
    pip install pipelet-mcp-server

    Or from source:

    Terminal window
    git clone https://github.com/pipelet/mcp-server.git
    cd mcp-server
    pip install -e .
  2. Locate Claude Desktop’s config file.

    ~/Library/Application Support/Claude/claude_desktop_config.json

    If the file doesn’t exist, create it.

  3. Add the Pipelet MCP server.

    claude_desktop_config.json
    {
    "mcpServers": {
    "pipelet": {
    "command": "python",
    "args": ["-m", "mcp_server"],
    "env": {
    "PIPELET_GATEWAY_URL": "http://localhost:8080",
    "PIPELET_API_KEY": "hcpms_live_a4b9..."
    }
    }
    }
    }

    Replace hcpms_live_a4b9... with your actual API key from Authentication.

  4. Restart Claude Desktop.

    Quit (not just close) and reopen the app. The MCP server status appears in the tools panel — look for a hammer icon and pipelet in the list.

  5. Verify it’s wired up.

    In a new chat, ask:

    List all my charging stations.

    Claude should call the list_stations tool. You’ll see the tool invocation in the chat, the JSON response, and a natural-language summary.

  • Status check:

    Show me the current load on every group, then flag any that are over 80% of capacity.

  • Diagnostics:

    WALLBOX_017 has been faulting all morning. Run diagnostics and explain what’s wrong in plain English.

  • Onboarding:

    Add station SIM-DC-002 to load group 1 with a 22 kW limit, then trigger a soft reset and verify it boots.

  • Reporting:

    How much energy did we deliver last month? Break it down by location.

  • Customer lookup:

    Find the customer whose RFID token starts with “DEMOL” and tell me when they last charged.

SymptomLikely causeFix
Claude doesn’t show pipelet in the tools panelJSON syntax error in configValidate with python -m json.tool < claude_desktop_config.json
Tools are listed but every call returns “connection refused”Gateway URL wrong or gateway not runningcurl http://localhost:8080/api/v1/system/health -H "X-API-Key: ..." from your terminal
”Unauthorized” on every callAPI key wrong or key disabledRe-check the PIPELET_API_KEY env value in the config
Server starts but exits immediatelyWrong Python on PATH (or python vs python3)Use absolute path in command field
Tool calls work but timeoutLong-running OCPP request, network slowThis is expected for firmware updates — increase Claude Desktop timeout in app settings

If you want the MCP server on a different host than the LLM client, run it in SSE mode:

Terminal window
python -m mcp_server --transport sse --host 0.0.0.0 --port 9090

Then point your client at http://your-host:9090/sse. SSE mode supports any MCP-compatible client (Cursor, custom Python scripts using the mcp package, etc.) — Claude Desktop currently prefers stdio mode.