LinkToolAddin/host/CallMcp.cs

29 lines
1012 B
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 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);
string result = (string)method.Invoke(null, new object[] { jsonRpcEntity.Params });
// 将结果序列化为 JSON 字符串
return result;
}
}
}