59 lines
2.0 KiB
C#
59 lines
2.0 KiB
C#
using PostFundManagement.Application.Abstractions.Mcp;
|
|
using PostFundManagement.Application.Mcp;
|
|
using Result = FluentResults.Result;
|
|
|
|
namespace PostFundManagement.Application.Extensions;
|
|
|
|
public static class Mcp
|
|
{
|
|
public static Records<T> ToMcpResult<T>(this Result<T> result)
|
|
{
|
|
if (result.IsSuccess)
|
|
return Records<T>.Ok(result.Value);
|
|
|
|
var errorMsg = string.Join("; ", result.Errors.Select(e => e.Message));
|
|
var errorList = result.Errors.Select(e => e.Message).ToList();
|
|
|
|
return Records<T>.Fail(errorMsg, errorList);
|
|
}
|
|
|
|
public static McpToolResult ToMcpResult(this Result result, string successMessage = "Operation completed successfully.")
|
|
{
|
|
if (result.IsSuccess)
|
|
return McpToolResult.Ok(successMessage);
|
|
|
|
var errorMsg = string.Join("; ", result.Errors.Select(e => e.Message));
|
|
var errorList = result.Errors.Select(e => e.Message).ToList();
|
|
|
|
return McpToolResult.Fail(errorMsg, errorList);
|
|
}
|
|
|
|
public static IServiceCollection AddApplicationMcpTools(this IServiceCollection services)
|
|
{
|
|
services.AddScoped<GrantsMcpTools>();
|
|
services.AddScoped<ProjectsMcpTools>();
|
|
services.AddScoped<ExecutionMcpTools>();
|
|
services.AddScoped<GovernanceMcpTools>();
|
|
services.AddScoped<EvidenceMcpTools>();
|
|
services.AddScoped<CommunicationsMcpTools>();
|
|
services.AddScoped<UsersMcpTools>();
|
|
|
|
services.AddScoped<IInAppMcpClient, InAppMcpClient>();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static IMcpServerBuilder WithApplicationMcpTools(this IMcpServerBuilder builder)
|
|
{
|
|
builder.WithTools<GrantsMcpTools>()
|
|
.WithTools<ProjectsMcpTools>()
|
|
.WithTools<ExecutionMcpTools>()
|
|
.WithTools<GovernanceMcpTools>()
|
|
.WithTools<EvidenceMcpTools>()
|
|
.WithTools<CommunicationsMcpTools>()
|
|
.WithTools<UsersMcpTools>();
|
|
|
|
return builder;
|
|
}
|
|
}
|