A server you already run becomes tools the project’s agents call. Reads run at once; anything that changes something asks you first. The answers can feed the project on a schedule.
01
A server with an address
WebDesktopCLI
Open Integrations → MCP servers, give the server a name and its https address, and paste its access token if it has one. Leave the token empty and the tile offers Sign in when the server asks for one. Only project admins add or remove a server, and Runlog dials only addresses on the public internet.
SeeThe server’s tools under its name, each tagged Read, Write or Asks first.
02
A server on your computer
WebDesktopCLIthe computer has to be on for a call to reach it
In the desktop app, the same tile has On this computer: Add a server opens the app’s own window (name, command, arguments, read entries, secrets), and Import from Claude Desktop brings in what Claude Desktop runs. From a terminal, the same thing is runlog mcp:
The mcp verbs
runlog mcp add civil3d --read civil3d_alignment:action=list -- node C:/civil3d-mcp/build/index.js
runlog mcp list
runlog mcp remove civil3d
runlog mcp import# adds what Claude Desktop runs
runlog mcp serve # the host; the desktop app runs it for you
Secrets go in as the names of environment variables, never as values on the command line. They stay in runlog/mcp.json under your user config folder and never leave the computer.
One runlog mcp serve per computer starts each server, restarts one that crashes, and checks in every 20 seconds. A computer that has not checked in for a minute shows Offline on the tile in every browser, and a call to it answers at once that it is offline.
03
Reads and changes
Each tool’s class comes from the server’s own annotations. A tool marked read-only runs at once. A tool marked non-destructive is a change in the project, which a session’s permissions decide. A destructive or unmarked tool always asks you, on the thread, before it runs.
A server that puts many actions behind one tool marks none of them read-only. A read entry (tool, or tool:argument=value) names the calls you count as reads; every other call to that tool still asks.
04
Feeding memory
On a server’s row, Feed memory picks one of its read tools, the tool’s arguments and how often it runs, every 15 minutes at the most often. Each run saves the answer into the project in a folder named after the server. An answer the project already holds is not saved again. A run while the server’s computer is off is skipped, and the row says so.
In a thread, ask Ro to save what a server answered, and that one answer is saved the same way.
05
Example: Autodesk Civil 3D
WebDesktopCLIWindows, with Civil 3D open
The open-source civil3d-mcp server (DaniGhosy) covers Civil 3D 2025 and later: a Node server, and a .NET 8 plugin Civil 3D loads. Build both, then in Civil 3D type NETLOAD and pick plugin/Civil3dMcpPlugin/bin/Debug/net8.0-windows/Civil3dMcpPlugin.dll; C3DMCPSTATUS confirms it is listening.
Build the server and the plugin
npm install
npm run build
cd plugin/Civil3dMcpPlugin
dotnet build
Its tools take an action argument and carry no read-only marks, so name the actions that only read:
Every other action asks first. Mind civil3d_surface with action=compute_volume: it writes a surface into the drawing, so leave it off the read list. A Civil 3D command may take up to two minutes, and a call waits for it.
On Civil 3D 2023 or 2024, a Python server driving Civil 3D over COM is added the same way, with python and its script as the command.
SeeAsk What stations does the main alignment run between? and Ro answers from the open drawing. Set a feed on civil3d_alignment with {"action": "list"} to keep the project current as the design moves.
06
Billing
Each server, on a computer or at an address, counts as one connected integration on the subscription that pays for the project, the same as a connected Gmail or LinkedIn account. Removing it drops the count. Pricing covers the rest of the meter.