Tools/EditorSceneTool.cs
using System.Collections.Generic;
using System.ComponentModel;
using System.Text.Json;
using System.Threading.Tasks;
using ModelContextProtocol.Server;
using SandboxModelContextProtocol.Server.Services.Interfaces;
using SandboxModelContextProtocol.Server.Services.Models;

namespace SandboxModelContextProtocol.Server.Tools;

[McpServerToolType]
public class EditorSceneTool( IToolService editorToolService )
{
	private readonly IToolService _editorToolService = editorToolService;

	[McpServerTool, Description( "Gets the scene in the active editor session." )]
	public async Task<CallToolResponse> GetActiveEditorScene()
	{
		var command = new CallToolRequest()
		{
			Name = nameof( GetActiveEditorScene ),
		};

		return await _editorToolService.CallTool( command );
	}

	[McpServerTool, Description( "Loads a scene in a new editor session from a path." )]
	public async Task<CallToolResponse> LoadEditorSceneFromPath( string path )
	{
		var command = new CallToolRequest()
		{
			Name = nameof( LoadEditorSceneFromPath ),
			Arguments = new Dictionary<string, JsonElement>()
			{
				{ "path", JsonSerializer.SerializeToElement( path ) },
			},
		};

		return await _editorToolService.CallTool( command );
	}
}