61284cc172
* Add resource discovery service and UI for managing MCP resources * Consolidate duplicate IsBuiltIn logic into StringCaseUtility.IsBuiltInMcpType * Add resource enable/disable enforcement and improve error response handling - Block execution of disabled resources in TransportCommandDispatcher with clear error message - Add parse_resource_response() utility to handle error responses without Pydantic validation failures - Replace inline response parsing with parse_resource_response() across all resource handlers - Export parse_resource_response from models/__init__.py for consistent usage * Block execution of disabled built-in tools in TransportCommandDispatcher with clear error message Add tool enable/disable enforcement before command execution. Check tool metadata and enabled state, returning error response if tool is disabled. Prevents execution of disabled tools with user-friendly error message. * Fire warning in the rare chance there are duplicate names * Handle rare case a resource name is null Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using System;
|
|
|
|
namespace MCPForUnity.Editor.Resources
|
|
{
|
|
/// <summary>
|
|
/// Marks a class as an MCP resource handler for auto-discovery.
|
|
/// The class must have a public static HandleCommand(JObject) method.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
|
|
public class McpForUnityResourceAttribute : Attribute
|
|
{
|
|
/// <summary>
|
|
/// The resource name used to route requests to this resource.
|
|
/// If not specified, defaults to the PascalCase class name converted to snake_case.
|
|
/// </summary>
|
|
public string ResourceName { get; }
|
|
|
|
/// <summary>
|
|
/// Human-readable description of what this resource provides.
|
|
/// </summary>
|
|
public string Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Create an MCP resource attribute with auto-generated resource name.
|
|
/// The resource name will be derived from the class name (PascalCase → snake_case).
|
|
/// Example: ManageAsset → manage_asset
|
|
/// </summary>
|
|
public McpForUnityResourceAttribute()
|
|
{
|
|
ResourceName = null; // Will be auto-generated
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create an MCP resource attribute with explicit resource name.
|
|
/// </summary>
|
|
/// <param name="resourceName">The resource name (e.g., "manage_asset")</param>
|
|
public McpForUnityResourceAttribute(string resourceName)
|
|
{
|
|
ResourceName = resourceName;
|
|
}
|
|
}
|
|
}
|