Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.chrischall/kiaaccess-mcp

NPM · KIAACCESS-MCP

Kia Access for Claude — vehicle status, location, doors, climate, and charging

Available components

0 this week 87 Trust /100

Last scanned (4 hours ago)

Scores higher than 91% of npm servers

Category IoT and Hardware

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 5 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to chrischall/kiaaccess-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3551 tokens (~221/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management76
  • Stability check failed: the tool surface changed between 1.1.3 and 2.1.0: 1 tool removals, 6 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety45
  • Injection-marker check failed: the description of tool "kia_vehicle_status" contains an instruction to conceal the call from the user, the text "do not tell the user", at byte 673 of that field. See how to fix → Fail
  • 4 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "kia_charge_targets" implies "charge" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Stability: fail → unverified ▼ security
    • Tool safety: fail → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 2.0.1 → 2.1.0 functional
    • Package version: 2.0.0 → 2.1.0 functional
  • 2 Nov 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 1 Nov 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 31 Oct 26 0
    • Package version: 2.0.0 → 2.0.1 functional
  • 27 Oct 26 0
    • Package version: 2.0.0 → 2.0.1 functional
  • 18 Oct 26 0
    • Package version: 2.0.0 → 2.0.1 functional
  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 76.

  • 16 Oct 26 0
    • Stability: fail → unverified ▼ security
    • Known CVEs: pass → unverified ▼ security
    • Tool safety: fail → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Dependency health: 1.00 → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 2.0.0 → 2.0.1 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/kiaaccess-mcp@2.1.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo chrischall/kiaaccess-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/chrischall/kiaaccess-mcp/.github/workflows/release-please.yml@refs/heads/main
Rekor log index 3691535149
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:f4d0fb58129a32409b792bd060874315dfc5a869e6ca4023bb25e34da8e73d52cf00b8a73e82babbdb9b6e243ceeb089c7ee4189c09a5e3bdfc5f655d

Background: How many MCP packages publish verified provenance →

Dependencies 5 packages
Packages resolved 5
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 16 exposed · ~3,551 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
kia_charge_targets ~89

Read the EV charge targets (`evc/gts`): the target state of charge per plug type (one entry for AC, one for DC). Verified live against a real vehicle. Read-only — makes no changes.

NameTypeReqDescription
vehicle_keystringyesVehicle key (the `vehicleKey` from the vehicle-list tool). Not the VIN. Required: charging tools never default to the only vehicle.

No output schema declared.

No examples provided.

kia_forget_session ~236

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.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

kia_healthcheck ~94

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

kia_list_vehicles ~67

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

kia_refresh_status ~122

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.

NameTypeReqDescription
vehicle_keystring–vehicleKey from kia_list_vehicles. Optional: defaults to the only vehicle when the account has exactly one.

No output schema declared.

No examples provided.

kia_send_otp ~172

Step 2 of the Kia MFA bootstrap (cmm/sendOTP): deliver a one-time passcode to the account by SMS or email. Takes the `otpKey` and `xid` from kia_start_login — it cannot run without them, which is why it has no separate confirmation gate. Ask the user which channel they want (kia_start_login reports the masked destinations Kia has on file). The passcode expires in about two minutes; `expiresAt` reports when.

NameTypeReqDescription
notifyTypestringyesDelivery channel. Ask the user; do not guess which destination they can read right now.
otpKeystringyesThe `otpKey` returned by kia_start_login.
xidstringyesThe `xid` returned by kia_start_login. Sent with every OTP call.

No output schema declared.

No examples provided.

kia_session_status ~95

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

kia_set_charge_limits ~313

Set the target state of charge per plug type (`evc/sts`). Verified against a real vehicle. The write is checked: afterwards the targets are re-read from evc/gts and compared, and the result reports whether the change actually landed. Send BOTH plug types — the list replaces the stored one, so omitting an entry drops that target. 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). The preview step makes no call at all, not even the baseline read.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
targetsarrayyesOne entry per plug type. Read the current targets first and change only what you mean to.
vehicle_keystringyesVehicle key (the `vehicleKey` from the vehicle-list tool). Not the VIN. Required: charging tools never default to the only vehicle.
verifyboolean–Re-read evc/gts afterwards to check the change landed. Defaults to true.

No output schema declared.

No examples provided.

kia_start_charge ~268

Ask the vehicle to start charging (`evc/charge`). Verified against a plugged-in vehicle: evStatus.batteryCharge goes true within ~30-60s. Requires the car to be plugged in — on an unplugged car Kia still accepts the request and nothing happens. Confirm with kia_vehicle_status rather than trusting the success status. 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).

NameTypeReqDescription
chargeRatiointeger–Charge up to this percentage, 10–100. Defaults to 100.
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
vehicle_keystringyesVehicle key (the `vehicleKey` from the vehicle-list tool). Not the VIN. Required: charging tools never default to the only vehicle.

No output schema declared.

No examples provided.

kia_start_climate ~629

Start remote climate control / preconditioning (Kia `rems/start`, live-verified). 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). Once confirmed it sends the command and re-reads cmm/gvi until the NESTED `climate.airCtrl` reads true (there is no flat `airCtrlOn` field). On an EV `engine` stays false while climate runs — `ign3` is the ignition proxy and is reported alongside. `commandAccepted` (Kia took the request) and `stateConfirmed` (the car actually reads running) are separate; state changes were observed to take 30–60s. TEMPERATURE IS BEST-EFFORT AND UNCONFIRMED: per docs/KIA-API.md a start requesting 70°F still read back 72°F, so the car may report its own last-set target rather than the requested one — do not promise the user a specific cabin temperature. Seat and steering-wheel/rear-window heating are not sent at all: the request body deliberately omits `heatVentSeat` (Kia validates seat capability per car) and leaves every `heatingAccessory` field at 0.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
defrostboolean–Run front defrost (default false).
durationMinutesinteger–Minutes the ignition stays on (default 5).
temperature––Target cabin temperature in °F, 62–82, or the sentinel "LOW"/"HIGH" for the ends of the range (default 70). A quoted whole number ("72") is accepted and treated as the number. BEST-EFFORT / UNCONFIRM…
vehicle_keystringyesThe vehicle key (`vehicleKey` from the vehicle-list tool), used as the `vinkey` header. Not the VIN. Required: commands never default to the only vehicle, so every request names the car it acts on.
waitSecondsinteger–How long to keep re-reading cmm/gvi for proof the command landed (default 30). Observed changes took 30–60s, so an unconfirmed result is common — re-read the vehicle status rather than re-sending the…

No output schema declared.

No examples provided.

kia_start_login ~262

Step 1 of the ONE-TIME Kia MFA bootstrap (prof/authUser): send the configured credentials and get back the `otpKey` and `xid` the next two steps need. Only needed when kia_session_status reports hasSession:false — once the bootstrap is done the stored remember-me token refreshes sessions silently forever. 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). The gate is real: Kia counts failed logins and eventually enforces reCAPTCHA, which breaks server-side login for this account PERMANENTLY — so a rejection is never retried, and a wrong password must be fixed in the environment rather than guessed at.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

kia_stop_charge ~222

Ask the vehicle to stop charging (`evc/cancel`). Verified against a charging vehicle: evStatus.batteryCharge goes false within ~30-60s. Confirm with kia_vehicle_status rather than trusting the success status. 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).

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
vehicle_keystringyesVehicle key (the `vehicleKey` from the vehicle-list tool). Not the VIN. Required: charging tools never default to the only vehicle.

No output schema declared.

No examples provided.

kia_stop_climate ~409

Stop remote climate control (Kia `rems/stop`, live-verified). 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). Once confirmed it sends the command and re-reads cmm/gvi until the NESTED `climate.airCtrl` reads false (there is no flat `airCtrlOn` field); `ign3` — the EV ignition proxy — is reported alongside. `commandAccepted` (Kia took the request) and `stateConfirmed` (the car actually reads stopped) are separate. State changes were observed to take 30–60s.

NameTypeReqDescription
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
vehicle_keystringyesThe vehicle key (`vehicleKey` from the vehicle-list tool), used as the `vinkey` header. Not the VIN. Required: commands never default to the only vehicle, so every request names the car it acts on.
waitSecondsinteger–How long to keep re-reading cmm/gvi for proof the command landed (default 30). Observed changes took 30–60s, so an unconfirmed result is common — re-read the vehicle status rather than re-sending the…

No output schema declared.

No examples provided.

kia_vehicle_location ~126

The vehicle's last known location, from the `location` block of the cached cmm/gvi read. This is where the telematics unit last reported being, not a live GPS fix — run kia_refresh_status first for a recent one. Latitude/longitude and a map link are derived when the block carries `coord.lat`/`coord.lon`; otherwise the raw block is returned as-is (its exact field names are not verified).

NameTypeReqDescription
vehicle_keystring–vehicleKey from kia_list_vehicles. Optional: defaults to the only vehicle when the account has exactly one.

No output schema declared.

No examples provided.

kia_vehicle_status ~291

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 `climate` object is present; when it is still absent the result says so rather than reporting climate as off. Note `ign3` (not `engine`) is the ignition on an EV, and `syncDate` advances on every read, so it never proves anything changed. Per-seat heat/vent state is reported under `climate.seats` as the RAW numbers Kia sends: the `heatVentType`/`heatVentLevel` encoding is UNVERIFIED, so do not tell the user a seat is heating, ventilating or off based on them. An absent seat block means this read carried no seat data — it does NOT mean the car lacks heated seats, which this server cannot currently determine. Pass include_raw for the untrimmed status block (battery/EV detail, doors, tyres, …).

NameTypeReqDescription
include_rawboolean–Include the full vehicleStatus block as `raw` (default false).
vehicle_keystring–vehicleKey from kia_list_vehicles. Optional: defaults to the only vehicle when the account has exactly one.

No output schema declared.

No examples provided.

kia_verify_otp ~156

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 `otpKey` and `xid` from kia_start_login plus the code the user received.

NameTypeReqDescription
otpstringyesThe one-time passcode Kia sent to the user — 6 digits in every observed case.
otpKeystringyesThe `otpKey` returned by kia_start_login.
xidstringyesThe `xid` returned by kia_start_login. Sent with every OTP call.

No output schema declared.

No examples provided.

Install

How do I install the io.github.chrischall/kiaaccess-mcp server?

io.github.chrischall/kiaaccess-mcp runs locally as an npm package, launched with npx -y kiaaccess-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · kiaaccess-mcp

# add to Claude Code
claude mcp add chrischall-kiaaccess-mcp -- npx -y kiaaccess-mcp
Common questions

What is the io.github.chrischall/kiaaccess-mcp server?

io.github.chrischall/kiaaccess-mcp is listed in the public MCP registry as io.github.chrischall/kiaaccess-mcp. Kia Access for Claude, vehicle status, location, doors, climate, and charging. This page covers its npm package (kiaaccess-mcp).

Is the io.github.chrischall/kiaaccess-mcp server safe to use?

io.github.chrischall/kiaaccess-mcp scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.chrischall/kiaaccess-mcp server expose?

io.github.chrischall/kiaaccess-mcp exposes 16 tools: kia_healthcheck, kia_session_status, kia_start_login, kia_send_otp, kia_verify_otp, and 11 more. Their descriptions and schemas cost roughly 3,551 tokens of context every time the server is loaded.

Is the io.github.chrischall/kiaaccess-mcp server still maintained?

io.github.chrischall/kiaaccess-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.chrischall/kiaaccess-mcp server under?

io.github.chrischall/kiaaccess-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.