28 lines
1.0 KiB
C#
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.tool"+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);
|
|
}
|
|
}
|
|
} |