Skip to main content

MCP server

The Parklio MCP server lets AI assistants such as Claude Code, Claude Desktop and the ChatGPT desktop app, and any other client that speaks the Model Context Protocol, work with your Parklio account. Ask in plain language, for example "Which devices are offline?" or "Share the entrance barrier with Iva until Friday", and the assistant calls the Parklio API for you with your own API token.

The server runs locally on your computer, started by your MCP client. It is published on npm as @parklio/mcp-server.

By default it is read-only: it can look up lots, devices, occupancy and shared access, but can't change anything. Sharing access and opening or closing products have to be turned on explicitly.

Prerequisites​

  • Node.js 22 or later, so your MCP client can run npx.
  • A Parklio API token, created by your account's Super Admin (below).
  • For write tools only:
    • the plan features each tool needs (REMOTE_CONTROL, KEY_SHARE, QR_CODE_SHARE), see Plans and permissions;
    • for opening and closing products and for weblinks, an online Parklio Gateway on the same lot as the product. See What you need.

Get an API token​

The MCP server authenticates to Parklio with an API token, the same kind used for direct API access. See Authentication for the full flow. In short:

  1. Log in once with your account's Super Admin credentials. Only a Super Admin can create API tokens.
  2. Create an API token.
  3. Copy the token from the response.
warning

The token is only shown once, at creation time: save it before navigating away. Create a dedicated token for the MCP server rather than reusing one from another integration, so you can revoke it on its own.

Install​

Pick your MCP client. In each case, replace <token> with your API token.

Claude Code​

claude mcp add parklio -e PARKLIO_API_KEY=<token> -- npx -y @parklio/mcp-server

Run /mcp in Claude Code to check that parklio is connected.

Claude Desktop​

Open Settings → Developer → Edit Config and add Parklio to claude_desktop_config.json:

claude_desktop_config.json
{
"mcpServers": {
"parklio": {
"command": "npx",
"args": ["-y", "@parklio/mcp-server"],
"env": {
"PARKLIO_API_KEY": "<token>"
}
}
}
}

Restart Claude Desktop after saving the file.

ChatGPT​

Use the ChatGPT desktop app or the Codex CLI. ChatGPT on the web can't start servers on your computer, so it can't use the Parklio MCP server.

In the desktop app:

  1. Open Settings → MCP servers and select Add server.
  2. Enter parklio as the name and choose STDIO.
  3. Enter the command npx -y @parklio/mcp-server and add the environment variable PARKLIO_API_KEY with your token.
  4. Save, then select Restart.

Or from the Codex CLI:

codex mcp add parklio --env PARKLIO_API_KEY=<token> -- npx -y @parklio/mcp-server

The desktop app, the Codex CLI and the Codex IDE extension share one configuration, ~/.codex/config.toml, so adding the server once makes it available in all of them. The entry looks like this:

~/.codex/config.toml
[mcp_servers.parklio]
command = "npx"
args = ["-y", "@parklio/mcp-server"]

[mcp_servers.parklio.env]
PARKLIO_API_KEY = "<token>"

Type /mcp in the composer to check that parklio is connected.

Other MCP clients​

Any client that runs local (stdio) MCP servers works. Configure it with:

SettingValue
Commandnpx
Arguments-y @parklio/mcp-server
EnvironmentPARKLIO_API_KEY=<token>

Check the connection​

Ask your assistant "Which Parklio account am I connected to?". It answers with the account name, its enabled features and whether write tools are on.

Read tools​

Always available. They never change anything.

ToolWhat it doesExample prompt
get_account_infoShows the connected account, its enabled features and whether write tools are on"Which Parklio account am I connected to?"
list_lots_and_zonesLists lots with their zones, address and time zone; finds a lot by name"List my lots and zones"
list_devicesLists devices with their status; filters by lot, zone, type, online status, problems or name"Which devices are offline?"
get_device_statusDetailed status of one device by name or device ID"What's the battery level of the entrance barrier?"
get_occupancyFree and occupied spaces per lot and zone"How many free spaces are there in lot B?"
list_allowlistLicense plates on a lot's allowlist with their validity"Is ZG-1234-AB on the allowlist of lot A?"
list_sharesShared access: app keys, key invitations, weblinks, QR codes, allowlist entries"Which keys did we share for the entrance barrier?"
find_recipientsFinds a person's email among account users and past recipients"What's Iva's email address?"

You can refer to lots, zones and devices by name. Names match regardless of case and diacritics; when a name is ambiguous, the assistant gets a list of candidates instead of a guess.

Write tools​

Available only when you enable them. They act on real access control and real hardware.

ToolWhat it doesPlan featureExample prompt
share_keyShares an app key; people without a Parklio account get an invitation emailKEY_SHARE"Share the entrance barrier with Iva until Friday"
share_weblinkEmails a time-limited weblink that opens a device without the app–"Send Marko a one-time link for the gate tomorrow"
create_qr_codeCreates a QR code that opens a device and returns the imageQR_CODE_SHARE"Make a QR code for the visitor chain for the weekend"
add_allowlist_platesAdds up to 20 plates to a lot's allowlist–"Add ZG-1234-AB to lot A until the end of the month"
remove_allowlist_platesRemoves plates from a lot's allowlist–"Remove ZG-1234-AB from lot A"
open_deviceOpens a barrier, gate, chain, bollard or brain through the Gateway and waits for it to confirmREMOTE_CONTROL"Open the entrance barrier"
close_deviceCloses one, the same wayREMOTE_CONTROL"Close the visitor chain"

How they behave:

  • Time windows use the lot's time zone. "Until Friday" ends on Friday at 23:59:59 local time at the lot.
  • Open and close report only confirmed results. The server listens for the Gateway's realtime confirmation. If none arrives within 30 seconds, it says the result is unconfirmed and shows the last known state; it never claims an unconfirmed success. Failure reasons, such as a car on top of a barrier, are passed on.
  • Writes are never retried, and an ambiguous device or lot name never leads to a write.

Enable write tools​

Set PARKLIO_READ_ONLY=false in the server's environment.

Claude Code:

claude mcp add parklio \
-e PARKLIO_API_KEY=<token> \
-e PARKLIO_READ_ONLY=false \
-- npx -y @parklio/mcp-server

Claude Desktop: add "PARKLIO_READ_ONLY": "false" to the env object, then restart.

ChatGPT: add PARKLIO_READ_ONLY with the value false to the server's environment variables (in config.toml, under [mcp_servers.parklio.env]), then restart.

danger

Write tools open real barriers and hand out real access. Your MCP client asks you to confirm each write call: read what it is about to do before you approve it, and don't choose Always allow for these tools. QR codes can't be revoked once created.

Configuration​

VariableRequiredDefaultMeaning
PARKLIO_API_KEYYes–Parklio API token, sent as Authorization: Bearer <token>
PARKLIO_READ_ONLYNotruefalse or 0 enables the write tools
PARKLIO_LOG_LEVELNowarnerror, warn, info or debug. Logs go to stderr.
PARKLIO_TIMEOUT_MSNo15000Timeout for each HTTP request, from 1000 to 300000

Run npx -y @parklio/mcp-server --help to print this reference, or --version for the installed version.

Troubleshooting​

The server doesn't start, or the client shows it as failed.

Check that node --version prints 22 or later and that PARKLIO_API_KEY is set in the client's config. The server checks its configuration at startup and writes any problem to stderr. In Claude Desktop, see the MCP logs under Settings → Developer. ChatGPT on the web can't run the server; use the desktop app.

The assistant says the token is invalid.

The token was revoked or copied incompletely. Create a new one and update your client's config.

The assistant can't find the write tools.

They are off by default. Enable them and restart your client. Ask "Which Parklio account am I connected to?" to check whether write tools are on.

A share or QR code fails with a permission error.

Your plan doesn't include the feature the tool needs. See the write tools table and Plans and permissions.

Open or close comes back unconfirmed or fails.

Check that the Gateway on the product's lot is online and the product responds in the Parklio Connect app. See Troubleshooting.

Who do I contact about issues?

Contact Support.