Skip to content

MCP Integration

Sam LABBE edited this page Oct 13, 2026 · 1 revision

MCP Integration

navette ships an MCP stdio server (navette mcp) so agent hosts drive the same daemon the HTTP API serves — one surface, two transports.

Register it

Any MCP host that launches stdio servers — register once in its config:

{ "mcp": { "servers": { "navette": {
    "command": "/abs/path/to/navette",
    "args": ["mcp"]
} } } }

Container-native hosts (stdio over docker):

docker run -i --rm ghcr.io/slabbdev/navette navette mcp

Behavior: mcp auto-starts serve if nothing is listening, and idles politely if the port is already served by another navette — so attaching to a resident daemon and spawning a fresh one are both correct. If the daemon runs --token, set the NAVETTE_TOKEN env var for the MCP server process.

The 19 tools

Tool Notes
navigate open a URL in a session
read page as markdown / text / html
screenshot returned as MCP image content — the agent sees the page
click real pointer events; Radix/HeadlessUI menus open
hover
type React-safe
key native-first keyboard input
evaluate JS in the page
wait selector / timeout
scroll absolute or into-view
upload page-side DataTransfer, no OS dialog
viewport width × height per session
sessions list sessions (url + title)
session_close close one session
session_show put the window on screen — the human logs in
session_hide park it again; state stays
login fill + submit from the keychain — the agent never sees the password
state_export cookies out (optionally store → OS keychain, jar never crosses the wire)
state_import cookies in (from JSON or store)

Official MCP registry

navette is listed as io.github.slabbdev/navette. The manifest is server.json at the repo root (official server.json schema); maintainers publish with mcp-publisher login github + mcp-publisher publish, bumping version on every release (same value as Cargo.toml). See docs/mcp-registry.md.

A real session, through MCP only

demo/JOURNEY.md in the repo records a full agent session driven through MCP only — no Playwright, no Chromium, no curl: real form login with session state, search-result extraction, dead-link resilience, markdown reads, visual verification via screenshots. See Demos.

Clone this wiki locally