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 CallInnerMcpTool(string jsonRpcString) { log.Info("通过反射调用内部MCP工具"); var jsonRpcEntity = JsonConvert.DeserializeObject(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 result = await task; return JsonConvert.SerializeObject(result); } } }