# Shuttle

An MCP server that gives your agent the docs and recipes for the Shuttle Android framework, so large objects stop blowing up binder transactions.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 87
- Author: grarcht
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/grarcht/Shuttle
- Updated: 2026-08-02
- HTML: https://affpapa.org/en/nevibecode/mcp/shuttle

## What it does

Shuttle is an Android framework that kills `TransactionTooLargeException` by design. Instead of putting a big `Serializable` straight into an `Intent` or `Bundle`, you store the object and pass only an identifier. The binder transaction stays small, and the crash class becomes structurally impossible rather than something a reviewer has to catch.

This MCP server wires the framework's reference into your agent: how the modules fit together, how to transport cargo with `Intent` and the Navigation Component, how to pick it up at the destination, what cargo states look like in the LCE pattern, and how `@ShuttleCargo` works. Cleanup is covered too.

The server runs from the Docker image `ghcr.io/grarcht/shuttle-mcp:4.0.0`, so Docker has to be installed and running or the command fails. The framework itself needs Min SDK 26 and Kotlin 2.2.10. There is a tradeoffs section in the README, and it is worth reading before you commit to the pattern.

## Requirements
- Needs: Docker

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add shuttle -- docker run -i --rm ghcr.io/grarcht/shuttle-mcp:4.0.0
```

### Codex

**Platform CLI**
```bash
codex mcp add shuttle -- docker run -i --rm ghcr.io/grarcht/shuttle-mcp:4.0.0
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "shuttle": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/grarcht/shuttle-mcp:4.0.0"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "shuttle": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/grarcht/shuttle-mcp:4.0.0"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add shuttle docker run -i --rm ghcr.io/grarcht/shuttle-mcp:4.0.0
```

## When to use it
- trace a `TransactionTooLargeException` crash that only shows up in production
- pass large `Serializable` objects between screens without breaking the transaction
- find working examples of `@ShuttleCargo` and cargo states
- set up object storage without hand-rolling database tables
- clean up leftover cargo after delivery

## Example prompts
- Show me how to transport a large object through an `Intent` with Shuttle
- How do I pick up the cargo at the destination and clean up the warehouse?
- Explain the LCE pattern for cargo states in Shuttle

## Similar
- [mobile-mcp](https://affpapa.org/en/nevibecode/mcp/mobile-mcp.md) — MCP server · ★ 9946
- [mobilerun](https://affpapa.org/en/nevibecode/mcp/mobilerun.md) — MCP server · ★ 9751
- [e2e](https://affpapa.org/en/nevibecode/mcp/e2e.md) — MCP server · ★ 11912
- [XcodeBuildMCP](https://affpapa.org/en/nevibecode/mcp/xcodebuildmcp.md) — MCP server · ★ 6505
- [ShipSwift](https://affpapa.org/en/nevibecode/mcp/shipswift.md) — MCP server · ★ 3244
- [agent-device](https://affpapa.org/en/nevibecode/mcp/agent-device.md) — MCP server · ★ 5149

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
