Skip to content

MCP transports & config

Lime supports six MCP transports. The right choice depends on whether the server runs as a local process, a remote HTTP service, or an in-process plugin.

Transport overview

TransportBest forWire shape
stdioLocal processes (npm packages, Python scripts, binaries).NDJSON over stdio. Not LSP-style Content-Length framing.
sseRemote services with one-way streams.JSON-RPC over Server-Sent Events.
httpRemote services that prefer plain HTTP.JSON-RPC over HTTP POST with optional polling.
wsRemote services with bidirectional streams.JSON-RPC over WebSocket.
sdkIn-process Lime SDK servers (Rust binaries linking the SDK).In-memory channels.
lime-proxyBridging a foreign transport via a Lime-managed shim.Lime spawns a proxy that handles its own transport details.

The type value is also accepted as streamable-http (alias for http).

Configuration

MCP servers live under mcpServers in any settings file:

{
"mcpServers": {
"sqlite": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data.db"],
"env": { "API_KEY": "..." },
"toolCallTimeoutMs": 30000
},
"remote-api": {
"type": "sse",
"url": "https://api.example.com/mcp",
"headers": { "Authorization": "Bearer ${TOKEN}" }
},
"ws-server": {
"type": "ws",
"url": "wss://tools.example.com/mcp"
}
}
}

Variables in the form ${NAME} are expanded from the environment when the server starts.

stdio fields

FieldTypeDefaultNotes
type"stdio"Required.
commandstringExecutable. Resolved on PATH.
argsstring[][]Arguments.
envobject{}Extra env vars (merged on top of the parent process env).
cwdstringrepoWorking directory.
toolCallTimeoutMsnumber30000Per-call timeout.

Remote (sse / http / ws) fields

FieldTypeNotes
typeenum"sse", "http", or "ws".
urlstringFull URL (for ws, the scheme is ws:// or wss://).
headersobjectPer-request HTTP headers. Trust-gated — see the warning below.
oauthobjectOAuth client config. See OAuth section.

OAuth

For remote servers that require OAuth:

{
"type": "http",
"url": "https://api.example.com/mcp",
"oauth": {
"issuer": "https://auth.example.com",
"clientId": "lime-client",
"scopes": ["mcp:tools", "mcp:resources"]
}
}

Lime stores tokens encrypted under ~/.lime/. Refresh is automatic. The first time the server is reached, the user is prompted to complete the auth flow in a browser.

Per-tool allow / deny on a server

{
"mcpServers": {
"sqlite": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite"],
"tools": {
"allow": ["sqlite/query"],
"deny": ["sqlite/exec"]
}
}
}
}

Tool-level allow/deny is evaluated before the global per-tool policy.

Auto-approval

A server can declare tool annotations that mark calls as safe to run without a prompt:

{
"tools": {
"autoApprove": ["sqlite/query"]
}
}

Hooks can also auto-approve based on input shape via PreToolUse. See Hooks.

Telemetry & redaction

  • All MCP tool inputs and outputs are redacted in event logs by default. Output capping: LIME_MAX_MCP_OUTPUT_TOKENS (default 2000).
  • Connect timeouts: LIME_MCP_CONNECT_TIMEOUT_MS (default 10000).
  • Concurrency caps for the eager-startup connect wave: LIME_MCP_CONNECTION_BATCH_SIZE and LIME_MCP_REMOTE_CONNECTION_BATCH_SIZE.

Manage servers from the CLI

Terminal window
# Stdio (default transport)
lime mcp add sqlite npx -y @modelcontextprotocol/server-sqlite \
--db-path ./data.db
# Remote — sse | http
lime mcp add --transport sse --scope user remote https://example.com/sse
# Drop in a full JSON config for one server (any transport, including ws / sdk / lime-proxy)
lime mcp add-json my-server '{"type":"http","url":"https://example.com/mcp"}' --scope project
# Inspect + manage
lime mcp list
lime mcp get sqlite
lime mcp enable sqlite
lime mcp disable sqlite
lime mcp remove sqlite --scope user
lime mcp reset-project-choices

lime mcp add only emits stdio, sse, and http entries. For the other transports (ws, sdk, streamable-http, lime-proxy) use lime mcp add-json or edit your settings file directly.

…or inside the REPL:

/mcp list
/mcp status
/mcp browse # interactive registry picker
/mcp enable sqlite
/mcp reconnect sqlite