Kia Access MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KIA_PASSWORD | Yes | Your Kia account password | |
| KIA_USERNAME | Yes | Your Kia account email address | |
| KIA_WRITE_MODE | No | Controls which command tools are registered: 'none', 'comfort' (default), or 'all' | comfort |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kia_healthcheckA | Resolves the credential the way real tools do, then makes one authenticated request to Kia Connect. Reports which source supplied the credential, whether Kia Connect accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a Kia Connect-side problem'. Read-only; never returns the credential itself. Call this when a real tool fails and you want to know which hop broke. |
| kia_session_statusA | Whether this server is configured and logged in to Kia: are credentials present, has the one-time MFA bootstrap been completed on this device, and which vehicle commands are registered (KIA_WRITE_MODE). Makes NO network call and returns no secret — the account email is masked, the device id is truncated, and neither the session id nor the remember-me token is ever included. Start here when a Kia tool reports it is not configured. |
| kia_start_loginA | Step 1 of the ONE-TIME Kia MFA bootstrap (prof/authUser): send the configured credentials and get back the |
| kia_send_otpA | Step 2 of the Kia MFA bootstrap (cmm/sendOTP): deliver a one-time passcode to the account by SMS or email. Takes the |
| kia_verify_otpA | Step 3 of the Kia MFA bootstrap (cmm/verifyOTP): exchange the passcode for a session. The resulting remember-me token is stored locally and is NOT returned — from here on every Kia tool refreshes its own session silently and MFA is never needed again on this device. Takes the |
| kia_forget_sessionA | Discard the locally stored Kia session (the remember-me token), so the next Kia call needs the one-time MFA bootstrap again. This is the recovery path when the stored token no longer works — Kia revoked it, the password changed, or the account moved to another device — and the only alternative is deleting the session file by hand. It makes NO network call: Kia is not told anything, only this machine forgets. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call makes NO network call and returns a preview plus a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Nothing is deleted until it is confirmed. |
| kia_list_vehiclesA | List the vehicles enrolled on this Kia Owners account (ownr/gvl). Returns each vehicleKey — the id every other Kia tool takes — plus nickname, model year/name/trim, mileage, fuel type and telematics unit. VINs are masked to their last 6 characters. |
| kia_vehicle_statusA | Read the vehicle's CACHED status (cmm/gvi): door lock, ignition, and the remote-climate block. Fast, but it reports whatever the telematics unit last uploaded — use kia_refresh_status first when freshness matters. Requested with airTempRange/seatHeatCoolOption = "1" so the nested |
| kia_refresh_statusA | Ask the car for a fresh reading (rems/rvs, requestType 0). This WAKES THE TELEMATICS UNIT, so it is much slower than kia_vehicle_status and draws a little power — prefer the cached read unless staleness matters. Kia only acknowledges the request; it does not return the new data and gives no completion signal, so read kia_vehicle_status afterwards to see the refreshed values. |
| kia_vehicle_locationA | The vehicle's last known location, from the |
| kia_start_climateA | Start remote climate control / preconditioning (Kia |
| kia_stop_climateA | Stop remote climate control (Kia |
| kia_charge_targetsA | Read the EV charge targets ( |
| kia_start_chargeA | Ask the vehicle to start charging ( |
| kia_stop_chargeA | Ask the vehicle to stop charging ( |
| kia_set_charge_limitsA | Set the target state of charge per plug type ( |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Every tool targets a distinct resource+action, and the descriptions explicitly resolve the few potentially confusable pairs: kia_vehicle_status vs kia_refresh_status (cached vs live), and kia_session_status vs kia_healthcheck (local config check vs authenticated probe). The three MFA tools are clearly ordered steps with explicit inputs (otpKey/xid). No two tools appear to do the same thing.
All 16 tools follow a uniform `kia_` prefix plus a consistent snake_case verb_noun pattern (kia_start_climate, kia_stop_charge, kia_set_charge_limits, kia_get... style reads like kia_vehicle_status, kia_charge_targets). Verb style is predictable throughout with no camelCase or mixed-convention outliers.
16 tools is slightly above the ideal 3-15 band but each earns its place: read vs refresh, start vs stop pairs, charge read vs write, and three distinct auth steps. The count is justified by the breadth of the domain rather than padding.
Auth/MFA lifecycle (start_login, send_otp, verify_otp, forget_session, session_status, healthcheck), vehicle listing, status read/refresh, location, climate and charge control are all covered. The notable gap is remote door lock/unlock and other accessory commands (horn, lights) — vehicle_status reports door lock state but no tool can change it, though agents can work around the rest.