Getting started as a client
1
Add an MCP server
2
Verify it's registered
3
Use it in a session
The agent will automatically discover and use tools from registered MCP servers.
Tool overview (server mode)
Themeerkat-mcp-server crate exposes Meerkat as MCP tools that other clients can call.
meerkat_run and meerkat_resume keep the same public MCP tool contract, but
their execution path is runtime-backed: meerkat_run allocates a session
through the shared session service and waits for that admitted turn to finish,
and meerkat_resume re-enters the same session_id instead of starting a
second surface-local execution loop.
The base MCP tool surface below is declared and dispatched in the
meerkat-mcp-server crate (meerkat-mcp-server/src/lib.rs), which is the
source of truth for tool names and availability.
Default
rkat-mcp builds are driven by the crate feature set. The base/default
tool surface includes core session/config/history/blob/skills tools and
schedule and WorkGraph tools. Mob tools appear when the mob feature is
compiled in.
The WorkGraph Flow tools are advertised only by hosts that also configure a
WorkGraph service. Their shared Mob runtime bridge owns reconciliation; MCP is
only the transport adapter.
Flow status carries a redacted reverse execution-binding reference when the run
was launched by the bridge. Public binding views omit activation parameters,
idempotency and correlation values, and execution principals.When the
mob feature is enabled, the public MCP host surface uses typed
meerkat_mob_* control-plane tools. Inside running sessions, mob capability is
still agent-side and comes from composing a mob tools factory into
SessionBuildOptions.mob_tools, which provides mob_* tools to the
model. Public host MCP surfaces should not re-export that raw dispatcher.The multi-host console family adds the three observation tools only.
Existing
meerkat_mob_spawn and meerkat_mob_spawn_many mutations may carry
placement for an already-bound host. Host admin (bind_host/revoke_host),
grant admin (grant_scopes/revoke_scopes/grants), hard cancel, and member
live-channel verbs remain deliberately absent — MCP servers are routinely
wired into agent tool contexts, and an LLM-reachable admin mutation would be a
privilege-escalation vector. Host/grant/live admin lives on JSON-RPC/SDK plus
CLI; hard cancel is JSON-RPC/SDK-only. Unknown tool names fail closed.Use MCP servers as tools (client)
CLI configuration (recommended)
Use therkat mcp commands to manage MCP servers:
Config file format
MCP servers are stored in TOML in two scopes:- Project:
.rkat/mcp.toml - User:
~/.rkat/mcp.toml
Config file examples
Config file examples
Supported transports: stdio, streamable HTTP (default for URLs), and SSE.
Environment variables in config use
${VAR_NAME} syntax.For OAuth-protected streamable HTTP servers, keep config simple. Add the URL
with
rkat mcp add, then run rkat mcp login <name> for an explicit browser
login, or rkat run "..." --mcp-auth interactive to allow first-use browser
auth during an interactive TTY run. Normal runs default to --mcp-auth stored.Meerkat as an MCP server
Connecting other clients
You can connect any MCP-capable client to a Meerkat MCP server. Run a server process that exposes themeerkat_* tools (stdio or HTTP), then point the client at it.
- Claude Code
- Codex CLI
- Gemini CLI
Claude Code reads MCP servers from a
.mcp.json file in your project root.
Example stdio config:Hosting the MCP server
meerkat-mcp-server is a library crate that provides tool schemas and handlers.
If you need a full public MCP host, embed its tools_list() and
handle_tools_call* entrypoints or run the bundled rkat-mcp binary. If you
need a mob-only MCP host, meerkat-mob-mcp exposes public_tools_list() and
handle_public_tools_call() for the typed meerkat_mob_* control plane.
meerkat-mob-mcp::tools_list() and handle_tools_call() remain the internal
agent-side mob_* dispatcher helpers; they are not the public host contract.
The bundled rkat-mcp binary supports realm scope flags:
--realm is omitted, the server creates a new isolated realm by default.
--realm-backend is a creation hint only; after the first open, the manifest-pinned backend is authoritative.
Tool reference
meerkat_run
Start a new Meerkat agent session with the given prompt.Parameter reference
string
required
User prompt for the agent.
string | null
default:"null"
Override system prompt.
string | null
default:"config default"
Model name (e.g.
"claude-opus-4-8", "gpt-5.5").u32 | null
default:"config default"
Max tokens per turn.
string | null
default:"inferred"
Provider:
"anthropic", "openai", "gemini", "self_hosted", "other".object | null
default:"null"
JSON schema for structured output (wrapper or raw schema).
u32 | null
default:"null"
Max retries for structured output validation. Omit /
null to use the product default on run or inherit the persisted session value on resume.bool
default:"false"
Stream agent events via MCP notifications.
bool
default:"false"
Enable verbose event logging (server-side).
array
default:"[]"
Tool definitions for the agent (see McpToolDef schema below).
bool | null
default:"null"
Builtins override. Omit /
null to use the default on run or inherit the persisted session value on resume.object | null
default:"null"
Config for builtins (only used when
enable_builtins is true).bool | null
default:"null"
Shell-tools override. Omit /
null to use the default on run or inherit the persisted session value on resume.u64 | null
default:"30"
Default shell command timeout.
bool | null
default:"null"
Keep session alive after turn for comms. On
meerkat_run, null/omitted uses the run default (false), true enables, and false explicitly disables. Requires comms_name when enabled.string | null
default:"null"
Agent name for comms.
HookRunOverrides | null
default:"null"
Run-scoped hook overrides.
McpToolDef schema
string
required
Tool name.
string
required
Tool description.
object
required
JSON Schema for tool input.
string | null
default:"callback"
Handler type (
"callback" = result provided via meerkat_resume).handler: "callback" are provided and the agent requests a tool call, the response includes pending_tool_calls. The MCP client must execute the tool and provide results via meerkat_resume.
meerkat_resume
Resume an existing runtime-backed session or provide tool results for pending tool calls. The call waits for the resumed turn to complete and returns the samesession_id that meerkat_run originally materialized.
Parameter reference
string
required
Session ID to resume.
string
required
Follow-up prompt (can be empty when providing tool results).
bool
default:"false"
Stream agent events via MCP notifications.
bool
default:"false"
Enable verbose event logging.
array
default:"[]"
Tool definitions (should match the original run).
array
default:"[]"
Tool results for pending tool calls.
string
required
ID of the tool call.
string
required
Result content (or error message).
bool
default:"false"
Whether this is an error result.
bool | null
default:"null"
Builtins override. Omit /
null to inherit the persisted session value.object | null
default:"null"
Builtin tool config.
bool | null
default:"null"
Shell-tools override. Omit /
null to inherit the persisted session value.bool | null
default:"null"
Keep-alive override for this resume.
null = inherit persisted session intent, true = enable, false = disable.meerkat_run and meerkat_resume follow the same commit/cancel rule as the other interactive surfaces: committed success is not rewritten to cancellation, and post-commit create failure returns session identity so the session can be resumed.string | null
default:"from session"
Agent name for comms.
string | null
default:"from session"
Model override. On materialized sessions this hot-swaps the LLM client for the remainder of the session.
u32 | null
default:"from session"
Max tokens override.
string | null
default:"from session"
Provider override. Typically inferred from
model. Used with model for mid-session provider switching.HookRunOverrides | null
default:"null"
Run-scoped hook overrides.
Response format
Bothmeerkat_run and meerkat_resume return MCP-standard tool results. The inner text field is a JSON-encoded payload containing:
array
MCP content blocks with the agent’s text.
string
Session ID (save for
meerkat_resume).u32
Number of LLM calls made.
u32
Number of tool calls executed.
object | null
Parsed structured output.
array | null
Schema compatibility warnings.
meerkat_config
Get or update realm config for this MCP server instance.string
required
One of
"get", "set", "patch".object | null
Full config to replace (for
set action).object | null
RFC 7396 merge-patch delta (for
patch action).u64 | null
Optional optimistic concurrency check for
set and patch.configgenerationrealm_idinstance_idbackendresolved_paths(only when the server runs with--expose-paths)
ConfigEnvelope shown above. It does not
carry the live_propagation field: that is part of the richer JSON-RPC
ConfigWriteResult contract, which reports the per-channel hot-swap / refresh /
close outcome (swapped, skipped, swap_failed, refreshed, closed,
refresh_failed, close_failed) when a set/patch write fans out to live
channels. Use the JSON-RPC config/set / config/patch methods when you need
the typed live-propagation report.
meerkat_capabilities
Returns the runtime capability set with status resolved against config.status values:
meerkat_models_catalog
Return the curated model catalog with provider profiles, capability metadata, and parameter schemas.meerkat_skills
List available skills with provenance information, or inspect one skill’s full body by typedSkillKey.
string
required
"list" to list all skills, or "inspect" to load one skill’s full body.object
Required for
inspect. The typed skill identity with source_uuid and
skill_name fields.string
Optional source UUID selector for
inspect; omit it to load the canonical
source for skill_key.is_active: false and a shadowed_by field indicating which source has
precedence. Inspect canonicalizes skill_key through the identity registry
before loading the body.