Godot MCP
Drives the Godot 4 C# editor from an AI agent through RQL queries, scripts and screenshots
Shared MCP host that relays an AI client to the Unity-MCP, Godot-MCP or Unreal-MCP editor plugin
By Ivan Murzak (individual) C# Local · stdio Developer tools
32 popularity score ★ 18 ⇣ 13k pulls
Opens the app, which asks before it adds the server.
claude mcp add gamedev -- docker run -i --rm -p 8080:8080 -e MCP_BIND=any aigamedeveloper/mcp-server{
"mcpServers": {
"gamedev": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"8080:8080",
"-e",
"MCP_BIND=any",
"aigamedeveloper/mcp-server"
]
}
}
}{
"mcpServers": {
"gamedev": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"8080:8080",
"-e",
"MCP_BIND=any",
"aigamedeveloper/mcp-server"
]
}
}
}{
"servers": {
"gamedev": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"8080:8080",
"-e",
"MCP_BIND=any",
"aigamedeveloper/mcp-server"
]
}
}
}[mcp_servers.gamedev]
command = "docker"
args = ["run", "-i", "--rm", "-p", "8080:8080", "-e", "MCP_BIND=any", "aigamedeveloper/mcp-server"]gemini mcp add --scope user gamedev docker -- run -i --rm -p 8080:8080 -e MCP_BIND=any aigamedeveloper/mcp-serverOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/IvanMurzak/GameDev-MCP-Server.git
cd GameDev-MCP-Server
dotnet publish com.IvanMurzak.GameDev.MCP.Server.csproj -c Release -o publishclaude mcp add gamedev -- dotnet '<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll' --client-transport stdio --port 8080{
"mcpServers": {
"gamedev": {
"command": "dotnet",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll",
"--client-transport",
"stdio",
"--port",
"8080"
]
}
}
}{
"mcpServers": {
"gamedev": {
"command": "dotnet",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll",
"--client-transport",
"stdio",
"--port",
"8080"
]
}
}
}{
"servers": {
"gamedev": {
"type": "stdio",
"command": "dotnet",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll",
"--client-transport",
"stdio",
"--port",
"8080"
]
}
}
}[mcp_servers.gamedev]
command = "dotnet"
args = ["<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll", "--client-transport", "stdio", "--port", "8080"]gemini mcp add --scope user gamedev dotnet -- '<ABSOLUTE_PATH_TO_CLONE>/publish/gamedev-mcp-server.dll' --client-transport stdio --port 8080MCP_PLUGIN_PORT |
Optional: Port the engine plugin connects to, and the HTTP port in streamableHttp mode (--port). |
|---|---|
MCP_PLUGIN_CLIENT_TRANSPORT |
Optional: Client transport: stdio or streamableHttp (--client-transport). |
MCP_BIND |
Optional: Bind address: loopback, any (0.0.0.0) or a specific IP (--bind). |
MCP_PLUGIN_TOOL_TIMEOUT |
Optional: How long one tool call may run in the plugin, in ms (--tool-timeout). MCP_PLUGIN_CLIENT_TIMEOUT (10000) is used instead when larger. Raise it for builds or imports. |
MCP_ALLOWED_ORIGINS |
Optional: Extra browser origins to allow on top of loopback and the public URL. |
| Set together: streamablehttp | |
MCP_PLUGIN_IDLE_TIMEOUT_SECONDS |
Optional: How long an idle streamableHttp session is kept before eviction, in seconds (8 hours). |
REDIS_URL |
Optional: Redis address that keeps streamableHttp sessions across restarts. Ignored in stdio mode. |
| Set together: oauth | |
MCP_AUTH |
Optional: none or oauth. stdio defaults to none, streamableHttp to oauth once issuer and public URL are both set. |
MCP_AUTH_ISSUER |
Optional: OAuth authorization server URL, needed for oauth mode. |
MCP_PUBLIC_URL |
Optional: The server's public URL and token audience, needed for oauth mode. |
| Set together: crash-reports | |
MCP_SENTRY_DSN secret |
Optional: Sentry-compatible endpoint for crash reports. Unset means no reports are sent. |
MCP_SENTRY_ENVIRONMENT |
Optional: Environment name attached to crash reports. Only used with MCP_SENTRY_DSN. |
In a container, a setting goes in with -e NAME=value after docker run.
GameDev-MCP-Server sits between an MCP client and a game engine editor. The client talks to it over stdio or streamable HTTP. On the other side it opens a port (8080 by default) that an editor plugin from the same author, Unity-MCP, Godot-MCP or Unreal-MCP, joins over SignalR. There is no engine code here. One binary serves all three engines, and everything a client sees comes from the connected plugin, so with no plugin attached there is nothing to call.
The protocol logic lives in the author's NuGet packages McpPlugin.Server and ReflectorNet. You can get it as self-contained executables for each desktop OS, a Docker image, a .NET global tool or source. A `configure` subcommand writes a project-scoped client config for agents like claude-code, codex, cursor and vscode-copilot.
Locally, stdio mode needs no sign-in. In streamableHttp mode it can check OAuth 2.1 tokens from an issuer you name, which is how the hosted service at ai-game.dev runs it.
Each tool call gets one try. If it runs past MCP_PLUGIN_TOOL_TIMEOUT (five minutes by default) the client sees an error, though the editor may still be busy with it. Newer releases add opt-in crash reporting: set MCP_SENTRY_DSN and unhandled exceptions go to that Sentry-compatible endpoint. The code in src/Startup/ErrorReporting.cs deliberately ignores the usual SENTRY_DSN and strips headers, cookies, query strings and request bodies before sending. Program.cs also reads REDIS_URL, missing from the README's table, to keep streamableHttp sessions across restarts. The csproj pins McpPlugin.Server 8.19.0, newer than the README's compatibility table lists.
| Runtime | .NET 9+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
The plugin version must match the server: 9.2.5 and later pair with plugins on McpPlugin 8.x, older plugins need 9.2.4 or 8.0.3. The release zips are self-contained and need no .NET runtime. Docker works too. The .NET 9 SDK is needed for the dotnet tool or a source build. The plugin must reach the server's port (8080 by default).
Exposes no tools of its own; what a client can do depends entirely on the engine plugin connected. Server and plugin versions must match on the McpPlugin major version. The README's Docker command (`docker run -i --rm -p 8080:8080 aigamedeveloper/mcp-server`) sets no bind address, and the server binds to loopback unless MCP_BIND or --bind is given (src/Program.cs), so inside a container the plugin on the host may not reach the mapped port; the snippet here adds MCP_BIND=any. Writes logs to logs/server-log.txt beside the binary; Trace level logs every MCP message and is very verbose.
Suits Unity, Godot or Unreal developers who already use, or plan to use, one of Ivan Murzak's engine plugins and want a single standalone server process for them, run locally from a binary, Docker or dotnet. It is of no use on its own or with other engine plugins. Unity users can also look at Unity-MCP's own page (unity-mcp-2), which covers the Unity plugin and its tools; this page covers only the shared host process. Anyone wanting the author's cloud service should note that ai-game.dev is a separate hosted product.