MCP Config
MCP Config is the central configuration hub for all MCP (Model Context Protocol) connections in LOPs. It manages both the external MCP servers you connect to as a client and the MCP servers you host from within TouchDesigner, with a layered config system that lets you scope servers to a single project, a folder of projects, or your entire machine.
Overview
Section titled “Overview”MCP Config provides two distinct configuration systems under one roof:
- Client configs define external MCP servers that LOPs connects to (consumed by the MCP Client operator).
- Hosted server configs define MCP servers that run from within TouchDesigner, either as built-in servers bundled with LOPs or as custom user servers stored on disk.
All configs are stored across four layers with clear priority ordering. When the same server name appears in multiple layers, the highest-priority layer wins. This lets you override global defaults at the project level or add temporary servers for a single session.
Config Layers
Section titled “Config Layers”MCP Config resolves server definitions from four layers, listed from highest to lowest priority:
| Layer | Scope | Storage | Persists? |
|---|---|---|---|
| Session | Current TD session only | In-memory | No — lost on restart |
| Project | Single .toe file | Internal DAT | Yes — saved with project |
| Folder | All .toe files in a folder | {project.folder}/.lops/mcp/ | Yes |
| User | All projects on this machine | {LOPs Python venv}/mcp/ | Yes |
When multiple layers define a server with the same name, the highest-priority layer takes precedence. This means you can define a global server at the User level and override its configuration in a specific project without editing the global file.
Input/Output
Section titled “Input/Output”Inputs
Section titled “Inputs”None — MCP Config is a standalone system component with no wire inputs.
Outputs
Section titled “Outputs”None — other operators (such as MCP Client) access MCP Config through its public API methods rather than wire connections.
Managing Client Servers
Section titled “Managing Client Servers”Client servers are external MCP servers that LOPs connects to. The MCP Config parameter page provides all the controls for managing them.
Adding Servers from Clipboard
Section titled “Adding Servers from Clipboard”The fastest way to add a server is to copy its JSON configuration and pulse Add from Clipboard. MCP Config auto-detects the format and normalizes it, so you can paste configs from any of these sources:
- Claude Desktop / Cursor / Windsurf format (
mcpServerskey) - Single server object (just
commandandargsat top level) - HTTP/SSE server (with
urlfield) - Nested transport format (transport details in a sub-object)
The Config Location menu controls where new servers are saved:
- LOPs Install Folder — saves to the User layer (global, all projects)
- Project Folder — saves to the Folder layer (shared by .toe files in the same directory)
- Custom Folder — saves to a folder you specify in the Custom Folder parameter
Viewing and Removing Servers
Section titled “Viewing and Removing Servers”Use the Select Server menu to browse all configured servers. Each entry shows the server name and which config layer it belongs to (e.g. my-server [user]). The read-only info strip below the menu displays the transport type, command or URL, and source layer for the selected server.
To remove a server, select it and pulse Remove Selected. MCP Config automatically detects which layer owns the server and removes it from that layer’s config file.
Pulse Refresh Server List to reload the registry from all config layers after making external changes to config files.
Editing Config Files Directly
Section titled “Editing Config Files Directly”Pulse Edit Config File to open the client_servers.json file for the currently selected config location in your system’s default editor. If the file does not exist yet, MCP Config creates it with an empty template. After editing, pulse Refresh Server List to pick up changes.
Hosted Servers
Section titled “Hosted Servers”The MCP Server Config section manages MCP servers that run from within TouchDesigner.
Built-in Servers
Section titled “Built-in Servers”LOPs ships with built-in hosted servers stored as base COMPs inside the MCP Config operator. When Auto Load Built-ins is enabled, these servers are loaded on startup and appear in the hosted server registry.
Each built-in server has a config table with metadata (name, description, transport, port) and a server_code DAT containing the FastMCP server implementation. Built-in servers are read-only — they cannot be saved or overwritten through the API.
User Hosted Servers
Section titled “User Hosted Servers”Custom hosted servers live as folders in {LOPs Python venv}/mcp/. Each server folder contains:
server_code.py— the FastMCP server implementationconfig.json— server metadata (name, description, category, version, transport, port)system_prompt.txt— optional system prompt for the server
User servers appear alongside built-ins in the hosted server registry and can be loaded, edited, and saved through the MCP Server operator.
Transport Types
Section titled “Transport Types”MCP Config supports three transport types defined by the MCP specification:
- stdio — launches a local process via
commandandargs. Most common for npm-based MCP servers. - streamable-http — connects to a remote HTTP endpoint via
url. Used for cloud-hosted or network MCP servers. - sse — connects to a Server-Sent Events endpoint via
url. Legacy HTTP transport.
Common aliases are normalized automatically: http and https both resolve to streamable-http.
Troubleshooting
Section titled “Troubleshooting”Clipboard paste shows “Invalid JSON”
Section titled “Clipboard paste shows “Invalid JSON””Make sure you copied the complete JSON block, including the outer braces. Trailing commas or unquoted keys will cause parse errors.
Clipboard paste shows “Could not detect MCP config format”
Section titled “Clipboard paste shows “Could not detect MCP config format””The pasted JSON does not match any known MCP config structure. It must contain an mcpServers key, a servers key, or top-level command/url fields.
Server not appearing after adding
Section titled “Server not appearing after adding”Pulse Refresh Server List to force a reload from all config layers. If using the Folder layer, confirm the .lops/mcp/ directory exists in your project folder.
Config path shows “(not configured)”
Section titled “Config path shows “(not configured)””The selected config location could not be resolved. For LOPs Install Folder, ensure ChatTD has a valid Python venv path configured. For Project Folder, ensure the project has been saved at least once so project.folder is defined.
Parameters
Section titled “Parameters”MCP Config
Section titled “MCP Config”op('mcp_config').par.Status Str - Default:
"" (Empty String)
op('mcp_config').par.Addfromclipboard Pulse Parse MCP server config JSON from clipboard and add to user config
- Default:
False
op('mcp_config').par.Customconfigfolder Folder Custom folder path (when "Custom Folder" selected above)
- Default:
"" (Empty String)
op('mcp_config').par.Editconfigfile Pulse Open the client_servers.json file in external editor
- Default:
False
op('mcp_config').par.Configpath Str Current resolved config path
- Default:
"" (Empty String)
op('mcp_config').par.Refreshclientservers Pulse Reload client server registry from all config layers
- Default:
False
op('mcp_config').par.Removeserver Pulse Remove the selected server from its config layer
- Default:
False
op('mcp_config').par.Serverinfo Str Details of the selected server
- Default:
"" (Empty String)
op('mcp_config').par.Autoloadbuiltins Toggle Load built-in hosted servers from base COMPs on startup
- Default:
False
Changelog
Section titled “Changelog”v0.1.12026-02-28
- Remove truncation of url and description columns in client_server_registry table
- Add transport alias mapping (http/https -> streamable-http) - Normalize transport types during config parsing
- Initial commit