Skip to main content
Glama
README.md
# Rivian MCP

Read-only [MCP server](https://modelcontextprotocol.io) and CLI for Rivian's undocumented GraphQL API. Check your vehicle's battery, range, OTA updates, charging status, and more — right from Claude or your terminal.

**Strictly read-only** — no vehicle commands, no settings changes.

## Install as Claude Code Plugin

Install the skill so Claude automatically knows how to work with this codebase and the Rivian API — confirmed vehicle state properties, auth flow, formatter patterns, and what fields don't exist.

**From the terminal:**

```bash
claude /plugin marketplace add PatrickHeneise/rivian-mcp
claude /plugin install rivian-mcp@rivian-ai
claude /plugin install rivian-mcp@rivian-ai
```

**Inside Claude Code**, type:

```
/plugin marketplace add PatrickHeneise/rivian-mcp
```

Then:

```
/plugin install rivian-mcp@rivian-ai
/plugin install rivian-mcp@rivian-ai
```

## Setup

```bash
claude mcp add rivian \
  -e RIVIAN_EMAIL=your@email.com \
  -e RIVIAN_PASSWORD=your-password \
  -- npx rivian-mcp
```

<details>
<summary>Manual config</summary>

Add to `~/.claude.json` or your project's `.mcp.json`:

```json
{
  "mcpServers": {
    "rivian": {
      "command": "npx",
      "args": ["rivian-mcp"],
      "env": {
        "RIVIAN_EMAIL": "your@email.com",
        "RIVIAN_PASSWORD": "your-password"
      }
    }
  }
}
```

</details>

### First-time login

Rivian requires 2FA on every new login:

1. Ask Claude: **"Log in to Rivian"**
2. Rivian sends a verification code to your phone/email
3. Tell Claude the code: **"The code is 123456"**

Your session is saved to `~/.rivian-mcp/session.json` and reused automatically until it expires (7 days).

## What you can ask

- "What's my battery level?"
- "Is there a software update available?"
- "Are all the doors locked?"
- "Show me the full vehicle status"
- "Who has keys to my R1S?"
- "Am I currently charging?"
- "Show my charging history"
- "What's my charging schedule?"

## Tools

| Tool                           | What it does                                                |
| ------------------------------ | ----------------------------------------------------------- |
| `rivian_login`                 | Start sign-in (triggers verification code)                  |
| `rivian_submit_otp`            | Complete sign-in with the verification code                 |
| `rivian_get_user_info`         | Your account, vehicles, and software versions               |
| `rivian_get_vehicle_state`     | Live status — battery, doors, tires, location, climate, OTA |
| `rivian_get_ota_status`        | Current and available software versions                     |
| `rivian_get_charging_session`  | Active charging session details                             |
| `rivian_get_charging_history`  | Past charging sessions — energy, cost, location             |
| `rivian_get_charging_schedule` | Your configured charging schedule                           |
| `rivian_get_drivers_and_keys`  | Drivers and their phone keys / key fobs                     |

## CLI

The package also installs a `rivian` CLI for quick terminal access without Claude.

```bash
npx rivian-mcp ota    # OTA software update status
npx rivian-mcp stats  # Full vehicle state
```

Or install globally:

```bash
npm install -g rivian-mcp
rivian ota
rivian stats
```

Authentication works the same way — credentials from `RIVIAN_EMAIL`/`RIVIAN_PASSWORD` env vars or interactive prompts. Session is shared with the MCP server (`~/.rivian-mcp/session.json`).

## Requirements

- Node.js 24+
- A Rivian account with a vehicle

## Support

If you're thinking about getting a Rivian and don't have a referral yet, here's mine — you'll get benefits on your purchase and it helps support this project:

[Get a Rivian R1 with referral benefits](https://rivian.com/configurations/list?reprCode=PATRICK4568756)

## References

- [Rivian API Docs](https://rivian-api.kaedenb.org/app/) — community-maintained
- [rivian-python-client](https://github.com/bretterer/rivian-python-client) — Python client this is based on
- [home-assistant-rivian](https://github.com/bretterer/home-assistant-rivian) — Home Assistant integration

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clear, distinct purpose. The three charging tools are well-differentiated: history for past sessions, schedule for future plans, and session for active charging. No overlap between any tools.

Naming Consistency5/5

All tools follow a consistent pattern: 'rivian_' prefix, with most using 'get_' for read operations, and two auth tools using action verbs. Naming is uniform, snake_case, and predictable.

Tool Count5/5

9 tools is appropriate for a vehicle management server. It covers essential areas (vehicle state, charging, access, updates, account, login) without being excessive or sparse.

Completeness3/5

The tool set is heavily read-only, covering status queries well but lacking write operations like setting charging schedules, locking/unlocking doors, or adjusting climate. This is a notable gap for a vehicle management domain.

Maintenance

ActivityStale
ResponsivenessNo issues