2026-10-09 12:49:07 +02:00

36 lines
1.5 KiB
GDScript

@tool
extends RefCounted
## meta.* transport-level commands — server-side limit overrides.
static func register(registry: MCPToolkitCommandRegistry) -> void:
registry.add("meta.set_limits", func(parameters: Dictionary) -> Dictionary:
return _cmd_set_limits(parameters)
, MCPToolkitCommandOptions.new().mark_scene_independent())
## The sanctioned writer for `mcp_toolkit/limits/*` — `project.set_setting`
## deliberately refuses that prefix, routing limit changes here so the floor
## clamps are always applied (script/save read caps >= 64 KB, ws_buffer >= 256 KB).
static func _cmd_set_limits(parameters: Dictionary) -> Dictionary:
var script_cap = parameters.get("script_read_cap_kb", null)
var save_cap = parameters.get("save_read_cap_kb", null)
var ws_buf = parameters.get("ws_buffer_kb", null)
if script_cap != null:
ProjectSettings.set_setting("mcp_toolkit/limits/script_read_cap_kb",
maxi(int(script_cap), 64))
if save_cap != null:
ProjectSettings.set_setting("mcp_toolkit/limits/save_read_cap_kb",
maxi(int(save_cap), 64))
if ws_buf != null:
ProjectSettings.set_setting("mcp_toolkit/limits/ws_buffer_kb",
maxi(int(ws_buf), 256))
return MCPToolkitSuccess.ok({
"script_read_cap_kb": int(ProjectSettings.get_setting(
"mcp_toolkit/limits/script_read_cap_kb", 256)),
"save_read_cap_kb": int(ProjectSettings.get_setting(
"mcp_toolkit/limits/save_read_cap_kb", 256)),
"ws_buffer_kb": int(ProjectSettings.get_setting(
"mcp_toolkit/limits/ws_buffer_kb", 1024)),
})