> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/reference/commands/mcp-daemon-config.md).

# MCP, background process, and configuration commands

Every option of devo mcp, devo daemon, devo runtime, devo doctor, and devo config, with defaults, allowed values, and the rules Devolutions CLI checks.

This page lists every argument and option of the commands that run Devolutions CLI as an MCP server (`devo mcp`), manage its background process (`devo daemon`, `devo runtime`), diagnose it (`devo doctor`), and manage its local configuration (`devo config`). For an overview of all commands, see [Commands](/cli/reference/commands.md). For step-by-step help, see [Connect an AI client with MCP](/cli/guides/ai-agents/connect-mcp.md), [Limit what an agent can do](/cli/guides/ai-agents/limit-tools.md), [The background process won't start](/cli/help/troubleshooting/daemon-wont-start.md) and [Collect diagnostics for support](/cli/help/troubleshooting/collect-diagnostics.md).

The options every command accepts, such as `--daemon`, `--no-daemon-autostart`, or `--output json`, are in [Global options](/cli/reference/global-options.md).

{% hint style="info" %}
To stay fast, `devo` runs a background process (the daemon) under your user account. The first command that needs it starts it, the following ones reuse it, and it stops after 60 minutes without requests. Each local profile folder has its own background process. You don't need the `devo daemon` commands for daily use. See [How Devolutions CLI works](/cli/guides/understand/how-it-works.md#the-background-process).
{% endhint %}

## devo mcp

Starts the MCP server in this `devo` process, over standard input and output. Your AI client, such as Claude Code or GitHub Copilot, starts it for you. If the tools it offers need the background process, `devo mcp` starts it first, unless a global option or environment variable turns the automatic start off.

**Workspace:** All workspace types

```bash
devo mcp [--read-only] [--deny-destructive] [--deny-open-world] [--allow-tool <tool>]... [--deny-tool <tool>]... [--server-name <name>]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--read-only</code></td><td>Off</td><td>Offers only the tools marked as read-only. The tool that resolves a secret reference is read-only, so it stays available: a read-only MCP server can still return a secret value to the model.</td></tr><tr><td><code>--deny-destructive</code></td><td>Off</td><td>Hides the tools marked as destructive.</td></tr><tr><td><code>--deny-open-world</code></td><td>Off</td><td>Hides the tools marked as reaching external hosts or networks. No tool offered today carries that mark, so this option currently hides nothing.</td></tr><tr><td><code>--allow-tool &#x3C;tool></code></td><td></td><td>Offers only the named tools. Repeat for several tools. Names are compared without regard to case; a name that matches no tool is ignored. It doesn't override <code>--read-only</code>, <code>--deny-destructive</code>, or <code>--deny-open-world</code>.</td></tr><tr><td><code>--deny-tool &#x3C;tool></code></td><td></td><td>Hides the named tools. Repeat for several tools. Names are compared without regard to case. A tool named by both <code>--allow-tool</code> and <code>--deny-tool</code> is hidden.</td></tr><tr><td><code>--server-name &#x3C;name></code></td><td><code>Remote Desktop Manager Devo CLI MCP Server</code></td><td>Name the server gives the AI client when it connects.</td></tr></tbody></table>

{% hint style="warning" %}
`--read-only` hides the tools that change data, not the tools that read secrets. See [Limit what an agent can do](/cli/guides/ai-agents/limit-tools.md).
{% endhint %}

## devo mcp catalog

Prints the tools that the same options would offer, without starting the MCP server. The catalog leaves out the tools that return secret values, which `devo mcp` offers to the AI client that starts it.

**Workspace:** All workspace types

```bash
devo mcp catalog [--read-only] [--deny-destructive] [--deny-open-world] [--allow-tool <tool>]... [--deny-tool <tool>]...
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--read-only</code></td><td>Off</td><td>Lists only the tools marked as read-only.</td></tr><tr><td><code>--deny-destructive</code></td><td>Off</td><td>Leaves out the tools marked as destructive.</td></tr><tr><td><code>--deny-open-world</code></td><td>Off</td><td>Leaves out the tools marked as reaching external hosts or networks. No tool carries that mark today.</td></tr><tr><td><code>--allow-tool &#x3C;tool></code></td><td></td><td>Lists only the named tools. Repeat for several tools. Same rules as for <code>devo mcp</code>.</td></tr><tr><td><code>--deny-tool &#x3C;tool></code></td><td></td><td>Leaves out the named tools. Repeat for several tools. Same rules as for <code>devo mcp</code>.</td></tr></tbody></table>

`devo mcp catalog` has no `--server-name` option.

## devo daemon start

Starts the background process for your local profile folder. It doesn't check whether one already serves that folder: a second process starts alongside the first. To start one only when needed, use `devo daemon ensure`. If the new process exits during startup, or isn't ready within 30 seconds, the command fails with the error code `daemonUnavailable` and exit code `3`: run `devo daemon start --foreground` to see the error.

**Workspace:** All workspace types

```bash
devo daemon start [--idle-timeout <duration> | --no-idle-timeout] [--config-root <folder>] [--pipe-name <name>] [--foreground]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--idle-timeout &#x3C;duration></code></td><td>60 minutes</td><td>Stops the background process after this time without requests. Write a number followed by <code>s</code>, <code>m</code>, <code>h</code>, or <code>d</code>, such as <code>30s</code>, <code>15m</code>, <code>1h</code>, or <code>1d</code>, or a time such as <code>00:30:00</code>. A zero duration, such as <code>0s</code>, means it never stops on its own; <code>0</code> alone is refused. Without this option, the environment variable <code>DEVO_DAEMON_IDLE_TIMEOUT</code> applies, then 60 minutes. An invalid value stops the command with exit code <code>2</code>.</td></tr><tr><td><code>--no-idle-timeout</code></td><td>Off</td><td>The background process never stops on its own. Takes priority over <code>--idle-timeout</code>.</td></tr><tr><td><code>--config-root &#x3C;folder></code></td><td>Your profile folder</td><td>Local Devolutions Remote Desktop Manager profile folder the background process serves. Without it, the folder from the environment variable <code>RDM_CONFIG_PATH</code> is used, then the default folder. <code>devo config path</code> shows it.</td></tr><tr><td><code>--pipe-name &#x3C;name></code></td><td><code>devo</code></td><td>Name of the named pipe or Unix socket the background process listens on. With the default name <code>devo</code>, a unique suffix is added for each process; any other name is used as given. Other commands find the background process through its registration for your profile folder, not by this name.</td></tr><tr><td><code>--foreground</code></td><td>Off</td><td>Runs the background process in the current terminal instead of in the background, until it stops.</td></tr></tbody></table>

## devo daemon ensure

Starts the background process for your profile folder if none is running, or repairs a registration that no longer answers, and shows its status. If one already serves the folder, it's left as is.

**Workspace:** All workspace types

```bash
devo daemon ensure [--config-root <folder>]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--config-root &#x3C;folder></code></td><td>Your profile folder</td><td>Profile folder to use when a background process must be started. Same default as for <code>devo daemon start</code>. A process started by <code>ensure</code> uses the default name and the default idle timeout.</td></tr></tbody></table>

## devo daemon status

Shows the status of a background process. It doesn't start one.

**Workspace:** All workspace types

```bash
devo daemon status [--session-id <id>]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--session-id &#x3C;id></code></td><td>Preferred process</td><td>Session ID of the background process to show, as listed by <code>devo daemon sessions</code>, compared without regard to case. Without it, the preferred process is shown: the one that serves your profile folder, or else the first one registered. An ID that matches no running process is reported as not running.</td></tr></tbody></table>

## devo daemon stop

Stops a background process. The next command that needs it starts it again.

**Workspace:** All workspace types

```bash
devo daemon stop [--session-id <id>] [--wait]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--session-id &#x3C;id></code></td><td>Preferred process</td><td>Session ID of the background process to stop. Without it, the preferred process is stopped. If no process matches, the command reports that none is running.</td></tr><tr><td><code>--wait</code></td><td>Off</td><td>Waits until the process has stopped before returning.</td></tr></tbody></table>

## devo daemon restart

Stops a background process and starts a new one. The new one serves the same profile folder with the same idle timeout, unless you set `--config-root`, `--idle-timeout`, or `--no-idle-timeout`. If no process is running, it just starts one.

**Workspace:** All workspace types

```bash
devo daemon restart [--session-id <id>] [--wait] [--idle-timeout <duration> | --no-idle-timeout] [--config-root <folder>] [--pipe-name <name>]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--session-id &#x3C;id></code></td><td>Preferred process</td><td>Session ID of the background process to restart. An ID that matches no running process is an error.</td></tr><tr><td><code>--wait</code></td><td>Off</td><td>Waits until the previous process has stopped before starting the new one.</td></tr><tr><td><code>--idle-timeout &#x3C;duration></code></td><td>Previous value</td><td>New idle timeout, in the same format as for <code>devo daemon start</code>. An invalid value is refused before the running process is stopped.</td></tr><tr><td><code>--no-idle-timeout</code></td><td>Off</td><td>The new process never stops on its own. Takes priority over <code>--idle-timeout</code>.</td></tr><tr><td><code>--config-root &#x3C;folder></code></td><td>Previous folder</td><td>Profile folder the new process serves.</td></tr><tr><td><code>--pipe-name &#x3C;name></code></td><td><code>devo</code></td><td>Name of the named pipe or Unix socket the new process listens on.</td></tr></tbody></table>

## devo daemon sessions

Lists the background processes registered for your user account, with their session ID, process ID, start time, and endpoint, and which one is preferred.

**Workspace:** All workspace types

```bash
devo daemon sessions [--details | --include-status | --include-runtime]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--details</code></td><td>Off</td><td>Adds the status and the runtime information of each process. Same as <code>--include-runtime</code>.</td></tr><tr><td><code>--include-status</code></td><td>Off</td><td>Adds the status of each process.</td></tr><tr><td><code>--include-runtime</code></td><td>Off</td><td>Adds the status and the runtime information of each process.</td></tr></tbody></table>

A process that doesn't answer is listed with an error instead of a status.

## devo runtime status

Shows the status of the workspace runtime loaded by the background process that serves your profile folder. Like other commands that need the background process, it starts one if needed, according to the global option `--daemon`.

**Workspace:** All workspace types

```bash
devo runtime status
```

This command has no arguments or options of its own.

## devo runtime reload

Reloads the workspace runtime of the background process that serves your profile folder, and shows its new status.

**Workspace:** All workspace types

```bash
devo runtime reload
```

This command has no arguments or options of its own.

## devo doctor

Shows a diagnostics snapshot: the Devolutions CLI version, the paths it uses, the status of the background process, the runtime status when a process serves your profile folder, the registered processes, and hints about what to do next. It never starts a background process. See [Collect diagnostics for support](/cli/help/troubleshooting/collect-diagnostics.md).

**Workspace:** All workspace types

```bash
devo doctor
```

This command has no arguments or options of its own.

## devo config path

Prints the local Devolutions Remote Desktop Manager profile folder that Devolutions CLI uses, without starting the background process. If the folder can't be determined, the command exits with code `1`.

**Workspace:** All workspace types

```bash
devo config path
```

This command has no arguments or options of its own.

## devo config export

Exports the local Devolutions CLI configuration to a `.json` file: your local profile contexts, the name of the current context, and the telemetry preference. Devolutions Cloud and Devolutions Server contexts, sign-in sessions, and secret values aren't included. On macOS and Linux, only your user account can read the file.

**Workspace:** All workspace types

```bash
devo config export --out-file <path>.json --yes [--no-contexts] [--no-tooling] [--force]
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--out-file &#x3C;path></code></td><td></td><td>File to write. Required. It must end in <code>.json</code>, its folder must exist, and it can't be a folder.</td></tr><tr><td><code>--no-contexts</code></td><td>Off</td><td>Leaves out the contexts.</td></tr><tr><td><code>--no-tooling</code></td><td>Off</td><td>Leaves out the telemetry preference.</td></tr><tr><td><code>--force</code></td><td>Off</td><td>Overwrites the file if it exists. Without it, an existing file is refused.</td></tr><tr><td><code>--yes</code> (<code>-y</code>, <code>--confirmed</code>)</td><td>Off</td><td>Confirms the export. Required: without it, nothing is written and the command exits with code <code>2</code>.</td></tr></tbody></table>

## devo config telemetry get

Shows the telemetry preference. Telemetry is off until you turn it on. See [What data Devolutions CLI sends](/cli/guides/understand/privacy.md).

**Workspace:** All workspace types

```bash
devo config telemetry get
```

This command has no arguments or options of its own.

## devo config telemetry set

Turns telemetry on or off.

**Workspace:** All workspace types

```bash
devo config telemetry set true --yes
devo config telemetry set false --yes
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>&#x3C;enabled></code></td><td><code>false</code></td><td><code>true</code> turns telemetry on, <code>false</code> turns it off. If you leave it out, telemetry is turned off.</td></tr><tr><td><code>--yes</code> (<code>-y</code>, <code>--confirmed</code>)</td><td>Off</td><td>Confirms the change. Required: without it, nothing changes and the command exits with code <code>2</code>.</td></tr></tbody></table>

## devo config unlock

Unlocks a local profile protected by an application password, for the running background process. If the profile isn't unlocked, the command exits with code `1`. See [Use a local Devolutions Remote Desktop Manager profile](/cli/guides/connect/local-profile.md).

**Workspace:** Local profile

```bash
devo config unlock --password-env <variable> --yes
devo config unlock --password-file <path> --yes
```

<table><thead><tr><th width="300">OPTION</th><th width="130">DEFAULT</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--password-env &#x3C;variable></code></td><td></td><td>Name of the environment variable that holds the application password. Use exactly one of <code>--password-env</code> or <code>--password-file</code>. The variable must exist.</td></tr><tr><td><code>--password-file &#x3C;path></code></td><td></td><td>File that holds the application password.</td></tr><tr><td><code>--yes</code> (<code>-y</code>, <code>--confirmed</code>)</td><td>Off</td><td>Confirms the unlock attempt. Required: without it, nothing is tried and the command exits with code <code>2</code>.</td></tr></tbody></table>

## Next

* [Sign-in and context commands](/cli/reference/commands/sign-in-and-contexts.md)
* [Secret commands](/cli/reference/commands/secrets.md)
* [Environment variables](/cli/reference/environment-variables.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/reference/commands/mcp-daemon-config.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
