> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ocpplab.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ocpplab.io/_mcp/server.

# OCPPLab developer docs

OCPPLab gives you one API for EV charging work: virtual chargers that speak OCPP to your CSMS, your charging infrastructure as a CPO, driver tokens as an eMSP, OCPI roaming with partners, bookings, energy limits and webhooks.

Pick the way you want to call it:

#### [TypeScript SDK](/sdks/typescript)

`npm i ocpplab`. Typed client for Node.js and the browser.

#### [Python SDK](/sdks/python)

`pip install ocpplab`. Sync and async clients.

#### [CLI](/cli/overview)

`ocpplab-cli`: one command per API operation, with browser sign-in.

#### [MCP](/mcp/overview)

Connect Claude, Cursor, VS Code or ChatGPT to 288 OCPPLab tools.

> **Tip**
>
> Using a coding agent? `npx skills add ev-cloudx/ocpplab-skills` teaches Claude Code, Codex, Cursor and other agents how to use OCPPLab. See [Agent skills](/mcp/overview#agent-skills).

## Start here

#### Get a token

In Studio, open **Settings → SDK tokens** and select **Generate token**. See [Authentication](/get-started/authentication).

#### Bring two chargers online

Follow the [Quickstart](/get-started/quickstart): it deploys two virtual chargers against your CSMS and waits until both connect.

#### Charge

Plug a connector in, start a session and stop it with [Plug, charge and unplug](/get-started/guides/plug-charge-unplug).

## What the API covers

| Domain      | What you can do                                                                               |
| ----------- | --------------------------------------------------------------------------------------------- |
| `evcharger` | Deploy virtual chargers, send them OCPP commands, read their logs, browse the charger catalog |
| `cpo`       | Manage your charge points, EVSEs, connectors, locations, tariffs, sessions and CDRs           |
| `emsp`      | Manage driver tokens, token groups, partner location networks and roaming identities          |
| `ocpi`      | Register OCPI partners, run the credentials handshake, push and pull roaming data             |
| `proxy`     | Route OCPP and OCPI traffic through OCPPLab and send commands through it                      |
| `booking`   | Offer bookable locations and move bookings from reserved to fulfilled                         |
| `energy`    | Set power limits on chargers and read their power measurements                                |
| `webhook`   | Receive events on your HTTPS endpoints                                                        |

Each domain is a namespace in the SDKs (`client.cpo...`), a command group in the CLI and its own MCP server. See [Concepts](/get-started/concepts).

> **Note**
>
> Looking for OCPP or OCPI protocol references? They live at [ocpplab.com/docs](https://www.ocpplab.com/docs).