Skip to content

Connecting a client

While the editor is open, UEAgent serves MCP over Streamable HTTP at http://127.0.0.1:55561/mcp (the port is set in Editor Preferences > Plugins > UEAgent). Any MCP client that speaks Streamable HTTP can connect.

Every client below except Claude Code loads all the tools up front, so the examples ask for the compact tool list with ?tools=compact. Remove it to give a client every tool.

Compact tool list

For a client that cannot take the whole catalog, the server lists three meta-tools instead:

Tool
find_tools Searches the tools by words and/or domain; with no arguments, lists the domains
describe_tool One tool's description and input schema
call_tool Runs a tool by name, with the same checks and readback as a direct call

Ask for it per client with the URL http://127.0.0.1:55561/mcp?tools=compact, or for every client by starting the editor with the environment variable UEAGENT_TOOLS=compact (then ?tools=full gives one client the whole list back).

Claude Code

From the editor's status bar, MCP ยท 55561 > Connect Claude Code to this project writes the unreal entry of the project's .mcp.json. Or, for yourself only:

claude mcp add --transport http unreal http://127.0.0.1:55561/mcp

Claude Code loads tools on demand, so it takes the full list.

Cursor

.cursor/mcp.json in the project, or ~/.cursor/mcp.json for every project:

{
  "mcpServers": {
    "unreal": {
      "url": "http://127.0.0.1:55561/mcp?tools=compact"
    }
  }
}

VS Code (GitHub Copilot, agent mode)

.vscode/mcp.json (the root key is servers, not mcpServers):

{
  "servers": {
    "unreal": {
      "type": "http",
      "url": "http://127.0.0.1:55561/mcp?tools=compact"
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json (the key is serverUrl), then Refresh in the MCP panel:

{
  "mcpServers": {
    "unreal": {
      "serverUrl": "http://127.0.0.1:55561/mcp?tools=compact"
    }
  }
}

Claude Desktop

Its config file only starts local processes, so mcp-remote bridges to the server (it needs Node.js). In claude_desktop_config.json (Settings > Developer > Edit Config):

{
  "mcpServers": {
    "unreal": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://127.0.0.1:55561/mcp?tools=compact", "--allow-http"]
    }
  }
}

Quit Claude Desktop completely and open it again to load the change.

Gemini CLI

gemini mcp add -t http unreal "http://127.0.0.1:55561/mcp?tools=compact"

Or in .gemini/settings.json, with httpUrl (in Gemini CLI, url means the older SSE transport):

{
  "mcpServers": {
    "unreal": {
      "httpUrl": "http://127.0.0.1:55561/mcp?tools=compact"
    }
  }
}

Codex

codex mcp add unreal --url "http://127.0.0.1:55561/mcp?tools=compact"

Or in ~/.codex/config.toml:

[mcp_servers.unreal]
url = "http://127.0.0.1:55561/mcp?tools=compact"

With an auth token

When an Auth token is set, every request needs the header Authorization: Bearer <token>. Keep the token in an environment variable, such as UEAGENT_TOKEN, rather than in a file you commit:

  • Claude Code: the entry that Connect Claude Code writes already sends Bearer ${UEAGENT_TOKEN}.
  • Codex: bearer_token_env_var = "UEAGENT_TOKEN" in the server's table.
  • Claude Desktop: mcp-remote's --header option.
  • Cursor, VS Code, Windsurf and Gemini CLI: the entry's headers field.

Several clients at once

Several clients, and several agents, can share one editor. Every tool call runs on the editor's game thread through a single queue, so calls from different clients never run at the same time.