using System; using System.Collections.Generic; using System.Threading.Tasks; using ModelContextProtocol.Client; using ModelContextProtocol.Protocol.Transport; using ModelContextProtocol.Protocol.Types; using Newtonsoft.Json; namespace LinkToolAddin.client; public class SseMcpClient : McpClient { private SseClientTransportOptions options; private IClientTransport transport; public SseMcpClient(string url) { options = new SseClientTransportOptions { Endpoint = new Uri(url), }; transport = new SseClientTransport(options); } public async Task> GetToolListAsync() { // 创建 MCP Client IMcpClient client = await McpClientFactory.CreateAsync(transport); var tools = await client.ListToolsAsync(); return tools; } public async Task CallToolAsync(string toolName,Dictionary parameters = null) { IMcpClient client = await McpClientFactory.CreateAsync(transport); CallToolResponse result = await client.CallToolAsync(toolName,parameters); return result; } }