LinkToolAddin/host/CallMcp.cs
2025-05-14 00:54:06 +08:00

28 lines
1.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using LinkToolAddin.server;
using log4net;
using Newtonsoft.Json;
namespace LinkToolAddin.host
{
public class CallMcp
{
private static readonly ILog log = LogManager.GetLogger(typeof(CallMcp));
public static async Task<string> CallInnerMcpTool(string jsonRpcString)
{
log.Info("通过反射调用内部MCP工具");
var jsonRpcEntity = JsonConvert.DeserializeObject<JsonRpcEntity>(jsonRpcString);
Type type = Type.GetType("LinkToolAddin.client."+jsonRpcEntity.Method.Split('.')[0]);
MethodInfo method = type.GetMethod(jsonRpcEntity.Method.Split('.')[1],BindingFlags.Public | BindingFlags.Static);
var task = method.Invoke(null, new object[] { jsonRpcEntity.Params }) as Task<JsonRpcResultEntity>;
JsonRpcResultEntity result = await task;
return JsonConvert.SerializeObject(result);
}
}
}