Editor/Commands/IMCPCommand.cs
using System.Threading.Tasks;
using System.Text.Json;
using System.Collections.Generic;

namespace Braxnet.Commands;

public interface IMCPCommand
{
	string Name { get; }
	Task<object> ExecuteAsync( JsonRpcRequest request, string sessionId, string protocolVersion );
}

public interface IMCPTool
{
	string Name { get; }
	string Title { get; }
	string Description { get; }
	JsonElement InputSchema { get; }
	JsonElement OutputSchema { get; }
	Task<CallToolResult> ExecuteAsync( Dictionary<string, object> arguments, string sessionId );
}

[System.AttributeUsage( System.AttributeTargets.Class )]
public class MCPCommandAttribute : System.Attribute
{
	public string Name { get; }

	public MCPCommandAttribute( string name )
	{
		Name = name;
	}
}

[System.AttributeUsage( System.AttributeTargets.Class )]
public class MCPToolAttribute : System.Attribute
{
	public string Name { get; }
	public string Title { get; }
	public string Description { get; }

	public MCPToolAttribute( string name, string title, string description )
	{
		Name = name;
		Title = title;
		Description = description;
	}
}