Files
pfm/PostFundManagement.Application/Extensions/Mcp.cs
T
2026-10-30 10:16:27 +02:00

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;
}
}