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
--headeroption. - Cursor, VS Code, Windsurf and Gemini CLI: the entry's
headersfield.
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.