Twelve tools, grouped by purpose.
MCP RDP provides twelve tools. Three of them, rdp_pointer, rdp_type and rdp_sound, choose their operation with an action argument. Every tool except rdp_connection_list accepts an optional connectionId (rdp_connection_drop requires it); leaving it out selects a default connection that your deployment may not allow.
Open, list and close a desktop connection.
| Tool | Use it to | Parameters |
|---|---|---|
rdp_connection_create | Open a named connection to a Windows or other RDP desktop and connect at once. You get the connection status and whether a recording started; a recording that fails to start can leave the connection itself working. | none required; see the options below |
rdp_connection_list | List the connections of this session with their host, port, security and tags, but never a password. It shows what was stored, not whether the desktop is still reachable. | none |
rdp_connection_drop | Close a connection and finish its recording, if it has one. | connectionId (required) |
Why: a connection is a named slot, so several desktops can be open at once and every other tool names the one it acts on. Stop and fetch a recording before you drop, because a drop ends it.
Every input of rdp_connection_create is optional:
| Option | Use it to |
|---|---|
connectionId | Choose the id; one is generated when left out |
profile | Use a named profile prepared on the server, so the account and password stay out of the request |
template | Tune the graphics for the kind of desktop; see the templates below |
host, port | Override the target |
username, password, domain | Override the account; treat them as secrets |
security | Pick auto or nla (the same choice) or tls |
graphicsMode | Pick rfx, legacy, h264 or auto |
saveVideo | Start a recording at once; an object such as {} takes the defaults |
performanceFlags | Switch rendering features such as the wallpaper or themes off for a lighter picture |
name, tags | Label the connection |
The template tunes the graphics for the family of server:
| Template | Use it for |
|---|---|
default | The safe baseline for most desktops: a decoded picture that screenshots and recordings can use |
windows | A Windows host |
windows-h264 | A Windows host that offers H.264, for the cheapest recording; it needs the server to negotiate it |
gnome | A GNOME Remote Desktop host |
Not available in this release.
Not available in this release; use rdp_type to enter text. Your client may list rdp_clipboard_send and rdp_clipboard_receive; do not call them.
Take a picture of the desktop.
| Tool | Use it to | Parameters |
|---|---|---|
rdp_screenshot | Take a picture of the desktop and publish it as a file you can fetch. A black image can mean the desktop has not painted, so look at the picture before you act on it. | connectionId (optional), delay, filename, colorDepth, maxSize, inlineImage |
Why: the agent decides from what the desktop shows, and the picture is the proof. Keep maxSize at zero when you plan to click, so the coordinates in the image are the real ones.
Move the pointer, type and press keys.
| Tool | Use it to | Parameters |
|---|---|---|
rdp_pointer | Click, double-click, drag, scroll or move the pointer on the desktop. The result confirms the input was sent, not what the application did with it. | action (required: click, drag, scroll, move), x, y, button, double, start_x, start_y, end_x, end_y, direction, clicks |
rdp_key_press | Press one key or a shortcut such as Enter, Tab or Ctrl+c. Focus the right window first, because a shortcut can mean different things in different applications, and shortcuts that combine Ctrl or Win with a letter do not work on every target, so check a screenshot. | key (required) |
rdp_type | Type a passage into the focused window, either one line or several lines in one call. | action (required: text or multiline), text, enter, lines |
Why: act, then look. Every input tool only confirms it was sent, so follow it with rdp_screenshot. Use rdp_type to put text into a field, since rdp_key_press presses a single key. Long text is paced, so a very long passage is rejected before it types: send it in pieces. To move text onto the desktop, type it.
Capture the desktop's sound, or send sound to it.
| Tool | Use it to | Parameters |
|---|---|---|
rdp_sound | Capture the desktop's sound to a file, play a sound file into its microphone, or read the sound status. Files are read and written on the server host, and starting or stopping confirms the call, not that anything was heard. | action (required), captureId, playId, filePath, format, maxDuration, sink, pulseSink, loop |
The actions of rdp_sound:
| Action | Use it to |
|---|---|
status | See whether the desktop is offering sound output, and the active captures |
capture_start | Start saving the desktop's sound to filePath in opus (the default), wav or flac, or play it through a PulseAudio sink with sink set to pulse |
capture_stop | Stop it with the captureId; the result reports bytesReceived |
play_start | Send a 16-bit PCM WAV file, or raw signed 16-bit PCM, into the desktop's microphone; the application must be listening |
play_stop | Stop it with the playId; the result reports bytesSent and bytesDropped |
Why: an application's sound is part of what it does. A capture file is separate from the sound in a video recording, and the capture can truncate a file that already exists at the path.
Record the desktop as video, with sound.
| Tool | Use it to | Parameters |
|---|---|---|
rdp_start_video | Start recording the desktop as video, with its sound. The recording runs in the background while the other tools keep working, and a connection can hold one recording at a time. | connectionId (optional), audio, quality, fps, codec, filename, maxDurationSecs, condense |
rdp_stop_video | Stop the recording and publish the file. The result reports the duration, the frame count and whether any sound was recorded. | connectionId (optional) |
The options of rdp_start_video:
| Option | Default | Use it to |
|---|---|---|
audio | true | Write the desktop's sound into the file; read hasAudio in the stop result to know whether any sound arrived |
quality | standard | Pick economy (5 frames a second), standard (10) or fidelity (15) |
fps | from quality | Set the frame rate directly, from 1 to 60 |
codec | vp9 | Pick vp9 or vp8 for a WebM file |
filename | a timestamp | Name the file; it is a name under the resource store, never a path |
maxDurationSecs | the deployment's limit | Stop the recording after this many seconds |
condense | off | Turn on condensing, described below |
Why: the file is evidence. Stop a recording and fetch it before you drop the connection or end the session. With audio on, a file always carries an audio track; an empty one is correct for a silent source.
The condense object keeps the stretches where the desktop changes and saves a screenshot and a note for each event:
| Option | Default | Use it to |
|---|---|---|
profile | balanced | Pick responsive, balanced or thorough: how long the picture must stay still before an event ends |
keepOriginal | true | Keep the unfiltered recording next to the condensed file, so you can check what was left out |
analysisFps | from the profile | Set how often the desktop is sampled, from 1 to 60 |
screenshotFormat | png | Pick png or webp for the event screenshots |
preserveAudio | false | Keep the stretches in which sound was playing, so a spoken passage over a still picture is not cut |
fastForwardSlowContentMs | 0 | Sample slow content, such as a progress bar, instead of keeping all of it |
What to expect when a call fails.
A tool failure comes back as a tool error with a message. Unknown argument names are rejected. The limits that matter:
| Limit | Value |
|---|---|
| Calls | 30 per minute across the rdp tools, shared by every client of one server |
| One call | 60 seconds by default; a timed-out call may already have sent input or written a file |
| Typing | one call is refused if its planned pacing exceeds 45 seconds, about 257 ordinary characters |
| Connections | 16 explicit connections per session, unless the deployment changes it |
| Recordings | one per connection at a time; a plain recording stops at 30 minutes or 2 GiB unless the deployment says otherwise |
Connection IDs and published files belong to the MCP session that made them, so keep one client for the whole workflow, and fetch your files before the session ends. See Troubleshooting and the tools reference for every field.