unity-mcp/Server/src/cli/commands/tool.py

62 lines
1.7 KiB
Python

"""Tool CLI commands for listing custom tools."""
import sys
import click
from cli.utils.config import get_config
from cli.utils.output import format_output, print_error
from cli.utils.connection import run_list_custom_tools, UnityConnectionError
def _list_custom_tools() -> None:
config = get_config()
try:
result = run_list_custom_tools(config)
if config.format != "text":
click.echo(format_output(result, config.format))
return
if not isinstance(result, dict) or not result.get("success", True):
click.echo(format_output(result, config.format))
return
tools = result.get("tools")
if tools is None:
data = result.get("data", {})
tools = data.get("tools") if isinstance(data, dict) else None
if not isinstance(tools, list):
click.echo(format_output(result, config.format))
return
click.echo(f"Custom tools ({len(tools)}):")
for i, tool in enumerate(tools):
name = tool.get("name") if isinstance(tool, dict) else str(tool)
click.echo(f" [{i}] {name}")
except UnityConnectionError as e:
print_error(str(e))
sys.exit(1)
@click.group("tool")
def tool():
"""Tool management - list custom tools for the active Unity project."""
pass
@tool.command("list")
def list_tools():
"""List custom tools registered for the active Unity project."""
_list_custom_tools()
@click.group("custom_tool")
def custom_tool():
"""Alias for tool management (custom tools)."""
pass
@custom_tool.command("list")
def list_custom_tools():
"""List custom tools registered for the active Unity project."""
_list_custom_tools()