MCP
Model Context Protocol servers, treated as untrusted.
MCP servers plug in tools (databases, browsers, APIs) — but their tool definitions are verbose, and
registering them all up front burns thousands of context tokens whether the agent uses them or not.
Luxe exposes a single mcp proxy tool (~200 tokens) instead: the agent discovers what it
needs on demand.
mcp({ search: "screenshot" }) // find tools by keyword across servers
mcp({ tool: "chrome/take_screenshot" }) // show one tool's parameters
mcp({ tool: "chrome/take_screenshot", args: "{\"format\":\"png\"}" }) // call it (args is a JSON string)
Servers are lazy — they connect on first call and idle-disconnect; tool metadata is cached
(.luxe/mcp-metadata.json) so discovery works without a live connection. Set lifecycle to
eager or keep-alive per server, and exclude_tools to hide noisy ones. Run /mcp in the TUI
to see configured servers, their transport/auth, and tool counts.
Config is read (and merged, project-over-user, luxe-over-standard) from ~/.config/mcp/mcp.json,
~/.config/luxe/mcp.json, .mcp.json, and .luxe/mcp.json. Both the standard mcpServers shape
(as written by Cursor/Claude/Codex) and Luxe’s own shape are understood, so an existing setup works
unchanged:
{ "mcpServers": {
"chrome": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] },
"linear": { "url": "https://mcp.linear.app/mcp", "auth": { "kind": "oauth" } }
} }
Transports: local stdio and remote Streamable HTTP (with SSE responses).
Auth (HTTP only): a static bearer token ({ "kind": "bearer", "token_env": "…" }) or
OAuth 2.1 ({ "kind": "oauth" } — PKCE, .well-known discovery, and dynamic client
registration fill in the rest). Authorize an OAuth server once with luxe mcp login --id <server>;
tokens are stored 0600 and auto-refreshed. Login is a deliberate human step — the agent never
initiates an auth flow.
MCP servers stay untrusted: opt-in, an MCP call goes through the same permission policy
(keyed by its server/name target under the mcp tool), and results are passed to the model as
data, never as instructions.