Skip to content

MCP Client

v1.2.1Updated

The MCP Client connects to external Model Context Protocol servers and makes their tools available to LOPs agents. A single MCP Client can manage multiple server connections simultaneously — each server’s tools are automatically discovered, prefixed with the server name, and exposed through the standard GetTool() interface.

🔧 GetTool Enabled 1 tool

This operator exposes 1 tool that allow Agent and Gemini Live LOPs to call any tools exposed by connected MCP servers (web search, file access, APIs, databases, etc.). Tool count is dynamic — it depends on which servers are connected and how many tools each provides.

Tools are named servername_toolname in the agent’s tool list (e.g., filesystem_read_file, brave_search_web_search). The MCP Client handles routing each call to the correct server session.

MCP servers are configured through MCP Config, a system component accessible via:

  • The LOPs Settings UI (open from the op menu dialog or via op.LOP pulse)
  • The MCP Config tab in Settings

The MCP Client reads from MCP Config automatically. If MCP Config is not available, it falls back to a local servers_config.json file referenced by the Config File parameter.

Server configs follow the standard MCP format:

{
"mcpServers": {
"my-server": {
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/folder"],
"description": "Local filesystem access"
},
"remote-server": {
"transport": "streamable-http",
"url": "https://api.example.com/mcp",
"headers": { "Authorization": "Bearer token" },
"description": "Remote API server"
}
}
}

Both stdio (local subprocess) and HTTP/SSE (remote endpoint) transports are supported.

  • Output 1: tools DAT — table of all discovered tools across connected servers with columns name, description, schema
  1. Open LOPs Settings UI and go to the MCP Config tab.
  2. Add your MCP server definitions (paste from clipboard or edit the config file directly).
  3. Place an MCP Client in your network.
  4. On the MCP Client page, pulse Sync Sequence from Config — your servers appear in the Servers sequence.
  5. Enable the servers you want to connect to using the Enable toggle on each row.
  6. Pulse Load Config to connect to all enabled servers.
  7. The Status field updates per server and the tools table populates on output 1.
  1. On the Agent’s Tools page, enable Use LOP Tools.
  2. Add the MCP Client to the External Op Tools sequence.
  3. The agent now has access to all tools from all connected MCP servers.

Enable Connect on File Load on the MCP Client page so the client automatically connects to enabled servers when your .toe file opens. Use Ensure Connected (safe to call from a Timer CHOP) to maintain connections — it reconnects stale sessions and connects if disconnected.

On the Install / Debug page, enter a tool name in Test Tool Name (format: servername/toolname), provide arguments as JSON in Test Tool Arguments, and pulse Call Test Tool. Results appear in the last_result DAT.

  • “MCP library not installed”: Pulse Install Dependencies on the Install / Debug page. Requires mcp and anyio packages.
  • Server shows “Disconnected”: Check the server command/URL in your config. For stdio servers, ensure the command is in your system PATH. For HTTP servers, verify the URL and any auth headers.
  • npx servers failing on macOS: The client automatically rewrites npx to use npm exec with the full shell PATH. If it still fails, use the absolute path to npm in your config.
  • HTTP 401/403 errors: The client runs diagnostics on failed HTTP connections. Check that your auth token is valid and has the required permissions.
Status (Status) op('mcp_client').par.Status Str
Default:
"" (Empty String)
Load Config (Loadconfig) op('mcp_client').par.Loadconfig Pulse
Default:
False
Disconnect (Disconnect) op('mcp_client').par.Disconnect Pulse
Default:
False
Sync Sequence from Config (Syncsequence) op('mcp_client').par.Syncsequence Pulse
Default:
False
Config File (Configfile) op('mcp_client').par.Configfile File
Default:
"" (Empty String)
Edit Config (Editconfig) op('mcp_client').par.Editconfig Pulse
Default:
False
Servers (Servers) op('mcp_client').par.Servers Sequence
Default:
0
Server name (Servers0servername) op('mcp_client').par.Servers0servername Str
Default:
"" (Empty String)
Enable (Servers0enabled) op('mcp_client').par.Servers0enabled Toggle
Default:
False
Status (Servers0status) op('mcp_client').par.Servers0status Str
Default:
"" (Empty String)
Tool Count (Servers0toolcount) op('mcp_client').par.Servers0toolcount Int
Default:
0
Range:
0 to 1
Slider Range:
0 to 1
Description (Servers0description) op('mcp_client').par.Servers0description Str
Default:
"" (Empty String)
Enable / Disable All (Enabledisableall) op('mcp_client').par.Enabledisableall Toggle
Default:
False
Status (Status2) op('mcp_client').par.Status2 Str
Default:
"" (Empty String)
Install Dependencies (Installdeps) op('mcp_client').par.Installdeps Pulse
Default:
False
Check Dependencies (Checkdeps) op('mcp_client').par.Checkdeps Pulse
Default:
False
Auto-Sync on Config Change (Autosync) op('mcp_client').par.Autosync Toggle
Default:
False
Call Test Tool (Calltool) op('mcp_client').par.Calltool Pulse
Default:
False
Test Tool Name (Toolname) op('mcp_client').par.Toolname Str
Default:
"" (Empty String)
Test Tool Arguments (JSON) (Toolarguments) op('mcp_client').par.Toolarguments Str
Default:
"" (Empty String)
v1.2.12026-03-01
  • Fix CancelledError escaping HTTP diagnostic handler (except Exception -> BaseException) - Fix CancelledError not caught in gather results (isinstance check -> BaseException) - Shield diagnostic httpx call with anyio.CancelScope to prevent cancel scope propagation - Add human-readable error messages for HTTP 401/403 auth failures - Update diagnostic protocol version to 2025-11-25 - Improve connection summary log to include failure details and server counts
  • Add IsConnected reactive dependency (tdu.Dependency) for CHOP/expression binding - Add Connectonload toggle for auto-connect on .toe file load - Add Ensureconnected pulse with session validation and reconnect - Proper async disconnect via TDAsyncIO (aclose on exit stacks) - Read client_server_registry table directly instead of GetClientServers API - Add HTTP CancelledError diagnostics via httpx probe - Add GetTool warning when no sessions active
  • Initial commit
v1.2.02025-07-13
  • FIXED: Added HTTP transport support for MCP servers (e.g., TouchDesigner Docs MCP)
  • FIXED: Removed transport type filtering in config parsing - now accepts all server types, not just stdio
  • FIXED: Properly handle 3-tuple return from streamablehttp_client() (client_read, client_write, get_session_id)
  • IMPROVED: Enhanced server connection logic to auto-detect transport type (stdio vs HTTP) based on config fields
v1.1.02025-06-30

Initial release