Full, lite, minimal, cli: designing MCP tool modes

by Fireal Software · ~8 min read

Different MCP clients have different appetites for tools. Claude Code with its 200K context can hold a 240-tool server without sweating. Copilot Chat starts warning at 30 tools and falls over at 60. Cursor is in the middle.

If you ship one fixed tool set, you either leave Claude Code with less than it wants or you lock out everyone else. Godot Catalyst ships four modes instead.

The four modes

Set GODOT_TOOL_MODE in the MCP server env. The value is read once at startup by src/config.ts.

export type ToolMode = "full" | "lite" | "minimal" | "cli";

Each mode registers a different subset:

How the gating works

src/tools/registry.ts has a single TOOL_MODE_MAP keyed by tool name to minimum mode:

const TOOL_MODE_MAP: Record<string, ToolMode> = {
  godot_create_node: "minimal",
  godot_create_resource: "lite",
  godot_parse_tscn: "cli",
  // Everything else defaults to "full"
};

And a shouldRegisterTool function that checks the current mode against the tool’s:

const MODE_RANK: Record<ToolMode, number> = {
  minimal: 0, lite: 1, full: 2, cli: -1,
};

export function shouldRegisterTool(toolName: string): boolean {
  const currentMode = CONFIG.TOOL_MODE;
  const toolMode = TOOL_MODE_MAP[toolName] || "full";
  if (toolMode === "cli") return true;          // CLI tools available in all modes
  if (currentMode === "cli") return false;      // CLI mode — only CLI tools
  return MODE_RANK[toolMode] <= MODE_RANK[currentMode];
}

Each tool file calls this at registration time. If the tool shouldn’t be in the current mode, it never gets registered. The MCP client never sees it. No runtime filtering overhead.

The minimal set

30 tools, picked to cover “scene + node + script” workflows completely:

Plus godot_reload_handlers (you always want hot reload) and the cli tools (they’re free in every mode).

This is the smallest set where “add a platformer player with movement logic” is possible end-to-end. Drop any of these and the task becomes awkward.

What lite adds

lite adds ~50 more tools over minimal. Highlights:

The idea: lite gives you everything you need for “normal Godot development”, but drops the specialist categories (2D/3D manipulation helpers, animation, audio, physics setup, shaders, themes, particles, tilemap cell ops, debug adapter, batch, input simulation, profiling, runtime eval, asset search, spatial, convention, analysis, networking, localization, visual testing, visualization, testing).

Everything dropped has a workaround via lower-level tools. You can still set up collision shapes in lite mode — just call godot_create_node and godot_set_node_properties by hand instead of the godot_setup_collision2d helper.

What full adds

full turns everything on. The extras are:

The full mode is the “I want Claude to be able to do anything in Godot” set. For Claude Code it’s free — the context overhead is negligible relative to the window. For smaller clients it’s overkill.

The cli mode is weird

cli isn’t a subset of the other modes. It’s a sideways track. Tools tagged cli are available in every mode (they’re the offline file parsers, docs tools, template generators — things that work without Godot running). But in cli mode only these tools are registered.

if (toolMode === "cli") return true;  // Always register CLI tools
if (currentMode === "cli") return false;  // In CLI mode, nothing else registers

The 14 CLI tools:

Use cases for cli:

No WebSocket connection is attempted in cli mode. No Godot installation required. This makes cli the fastest-starting mode by far (~200ms vs ~1-2s for other modes that try to reach port 6505).

Which mode to pick

If your client is Claude Code or Cursor with Tool Search support: full. You’re not gaining anything by limiting.

If your client is Cursor without Tool Search or Windsurf: lite. 80 tools is a sweet spot.

If your client is Copilot Chat, Cline on older models, or you’re on a tight context budget: minimal. 30 tools covers the 80% case.

If you’re running offline analysis, CI, or Claude sessions that don’t need the editor: cli.

You can override per-session. If Claude Code starts getting confused with 240 tools (rare but happens on complex tasks with lots of context already loaded), drop to lite temporarily:

GODOT_TOOL_MODE=lite npx godot-catalyst

The design constraint

The mode boundaries were picked to honor one rule: each mode should be complete for its target workflow. minimal should let you build any game. lite should be comfortable for day-to-day editor work. full should expose everything. cli should cover offline analysis.

If Claude hits “I can’t do X in minimal mode” on a common task, that’s a sign the minimal set is wrong, not that the user should switch modes. Mode switching is heavyweight (it restarts the server and reinitializes the MCP connection) and should be rare.

Turn Claude into a Godot co-developer

Godot Catalyst is an MCP server with 240+ tools for Godot 4.x. GDScript LSP, DAP debugging, offline parsing, asset pipelines. 7-day free trial, $25 one-time.

Try Godot Catalyst