Open source · MIT · Model Context Protocol

Talk to your Hyundai.

bluelink-mcp connects Claude and other AI assistants to Hyundai Bluelink. Ask about charge, range, locks and where you parked in plain English, and let the assistant warm the cabin, lock up or start charging when you allow it.

docker pull ghcr.io/mattoddie/bluelink-mcp
Claude · bluelink
I'm leaving in 15 minutes. Is the car ready?
get_vehicle_statusSanta Fe
Charging finished at 06:10: you're at 100%, with 34 miles of electric range and430 miles in total. It's -2 °C outside, the doors are locked and the windows are closed.

Want me to warm it up and defrost the windscreen before you go?
Yes please, 21 degrees.
start_climate21 °C · defrost · 15 min
Done. The car confirmed it, so the cabin is warming to 21 °C with the windscreen defrost on. It's running on the battery while the car is still plugged in, so you'll leave with a full charge. ✅
15tools
3brands
9regions
1Docker container

Ask anything

Your car, in plain English.

The assistant picks the right tools, asks Bluelink and explains what it found. No opening the app, waiting for it to load and tapping through screens.

“How much charge have I got, and is it plugged in?”

get_vehicle_status

“It's freezing. Warm the car to 21° with the windscreen defrost on.”

start_climate

“Did I lock the car? Lock it if not.”

get_vehicle_statuslock_vehicle

“Where did I park?”

get_vehicle_location

“How far did I drive this month, and what was my longest trip?”

get_trips

“How much energy went on heating versus driving this week?”

get_energy_usage

What it can do

15 tools, from status to pre-heating.

7 read tools are always available. 7 command tools and 1 unlock tool are only there when you turn them on.

read write unlock ·Full tool reference →

Safe by default

It can look. It only touches when you say so.

Tools that aren't allowed aren't registered at all. The assistant can't see them, so it can't call them or be talked into calling them.

  • Read-only out of the box. Commands and unlocking are two separate switches.
  • Kind to your car. Status comes from Bluelink, and waking the car for live data is rate limited to spare its 12V battery.
  • Kind to your account. The login is cached, so Bluelink doesn't see a login for every question.
  • Bearer-token auth, a Host allow-list and a non-root container.
Read the security model →
read

7 tools, always on

get_vehicle_status · get_vehicle_location · get_trips …
write

7 tools with BLUELINK_ALLOW_WRITES=true

start_climate · lock_vehicle · start_charging …
unlock

1 tool with BLUELINK_ALLOW_UNLOCK=true as well

unlock_vehicle

Works with your car

If it works in the app, it should work here

  • Hyundai Bluelink
  • Kia Connect
  • Genesis Connect
  • Plug-in hybrids
  • EVs
  • Petrol & hybrid
  • Europe & UK
  • USA & Canada
  • Australia

Built on hyundai_kia_connect_api, the library behind the Home Assistant integration. Fields your car doesn't report are left out. Compatibility →

Works with your assistant

Streamable HTTP or stdio

  • Claude Code
  • Claude Desktop
  • VS Code
  • Cursor
  • Codex
  • Any MCP client

Run it once and share it, or start it per session with uv run or docker run -i. Commands wait for the car to confirm. Client setup →

Quick start

Up and running in three steps.

  1. 1

    Check the app

    Make sure you can log in to the Bluelink app and see your car. You'll need the same email, password and PIN.

  2. 2

    Start the container

    curl -fsSLO https://raw.githubusercontent.com/mattoddie/bluelink-mcp/main/compose.yaml
    curl -fsSL https://raw.githubusercontent.com/mattoddie/bluelink-mcp/main/example.env -o .env
    # set BLUELINK_USERNAME, BLUELINK_PASSWORD,
    # BLUELINK_PIN and MCP_AUTH_TOKEN in .env
    docker compose up -d
  3. 3

    Connect your assistant

    claude mcp add --transport http bluelink \
      http://<docker-host>:8080/mcp \
      --header "Authorization: Bearer <token>"

    Then ask: “Is the car charged?”

Ready to talk to your car?

Free, open source and MIT licensed. Contributions and compatibility reports are welcome.