MCP Client
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.
Agent Tool Integration
Section titled “Agent Tool Integration”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.
Use the Tool Debugger operator to inspect exact tool definitions, schemas, and parameters.
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.
Configuring MCP Servers
Section titled “Configuring MCP Servers”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.LOPpulse) - 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.
Config Format
Section titled “Config Format”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
Section titled “Output”- Output 1:
toolsDAT — table of all discovered tools across connected servers with columnsname,description,schema
First-Time Setup
Section titled “First-Time Setup”- Open LOPs Settings UI and go to the MCP Config tab.
- Add your MCP server definitions (paste from clipboard or edit the config file directly).
- Place an MCP Client in your network.
- On the MCP Client page, pulse
Sync Sequence from Config— your servers appear in the Servers sequence. - Enable the servers you want to connect to using the
Enabletoggle on each row. - Pulse
Load Configto connect to all enabled servers. - The
Statusfield updates per server and the tools table populates on output 1.
Connecting to an Agent
Section titled “Connecting to an Agent”- On the Agent’s Tools page, enable
Use LOP Tools. - Add the MCP Client to the External Op Tools sequence.
- The agent now has access to all tools from all connected MCP servers.
Auto-Connect on File Load
Section titled “Auto-Connect on File Load”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.
Testing Tools
Section titled “Testing Tools”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.
Troubleshooting
Section titled “Troubleshooting”- “MCP library not installed”: Pulse
Install Dependencieson the Install / Debug page. Requiresmcpandanyiopackages. - 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
npxto usenpm execwith 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.
Parameters
Section titled “Parameters”MCP Client
Section titled “MCP Client”op('mcp_client').par.Status Str - Default:
"" (Empty String)
op('mcp_client').par.Loadconfig Pulse - Default:
False
op('mcp_client').par.Disconnect Pulse - Default:
False
op('mcp_client').par.Syncsequence Pulse - Default:
False
op('mcp_client').par.Configfile File - Default:
"" (Empty String)
op('mcp_client').par.Editconfig Pulse - Default:
False
op('mcp_client').par.Servers Sequence - Default:
0
op('mcp_client').par.Servers0servername Str - Default:
"" (Empty String)
op('mcp_client').par.Servers0enabled Toggle - Default:
False
op('mcp_client').par.Servers0status Str - Default:
"" (Empty String)
op('mcp_client').par.Servers0toolcount Int - Default:
0- Range:
- 0 to 1
- Slider Range:
- 0 to 1
op('mcp_client').par.Servers0description Str - Default:
"" (Empty String)
op('mcp_client').par.Enabledisableall Toggle - Default:
False
Install / Debug
Section titled “Install / Debug”op('mcp_client').par.Status2 Str - Default:
"" (Empty String)
op('mcp_client').par.Installdeps Pulse - Default:
False
op('mcp_client').par.Checkdeps Pulse - Default:
False
op('mcp_client').par.Autosync Toggle - Default:
False
op('mcp_client').par.Calltool Pulse - Default:
False
op('mcp_client').par.Toolname Str - Default:
"" (Empty String)
op('mcp_client').par.Toolarguments Str - Default:
"" (Empty String)
Changelog
Section titled “Changelog”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