C# McpClientText測試 的程式範例

  • 38
  • 0
  • MCP
  • 2025-06-02

C# 用ConSole 檔案測試 MCP 的範例版本

HIHI,蟲子來了,此次給的版本依然是透過open gpt 提供的 範本修正,目前符合版本為0.1.0-preview.11
讓使用者可以不用透過 AI 判斷值接呼叫,當然你也可以自訂一個專屬你的AI agent 替專屬你的MCP Tools 做調用。註解之處,就是自訂一個MCP  AI agent ,來判斷使用者輸入的意圖。

using ModelContextProtocol.Client;
using ModelContextProtocol.Protocol.Transport;

Console.WriteLine("Hello, World!");
// 設定連線參數


try
        {


    Console.WriteLine("Starting MCP Client...");

    // 1. 建立 SSE transport,Endpoint 請用 Uri
    var transport = new SseClientTransport(new SseClientTransportOptions
    {
        Name = "MCPTEST",
        Endpoint = new Uri("http://localhost:5993/sse")
    });

    // 2. 建立並連線到 MCP Server
    await using var mcpClient = await McpClientFactory.CreateAsync(transport);

    // 3. 列出可用工具
    var tools = await mcpClient.ListToolsAsync();
    Console.WriteLine("Found tools:");
    foreach (var t in tools)
    {
        Console.WriteLine($"{t.Name} - {t.Description}");
    }

    // 4. 呼叫工具:用 CallToolAsync 取代 InvokeAsync
    var result = await mcpClient.CallToolAsync(
       toolName: "CallHRAIagent",
       arguments: new Dictionary<string, object?>             // arguments
       {
           ["inputprompt"] = ""
       }
    );

    // 5. 讀取結果文字
    var content = result.Content;
    Console.WriteLine($"CallHRAIagent → {content}");
}
        catch (Exception ex)
        {
            Console.WriteLine($"Client error: {ex}");
        }
//try
//{
//    using var client = new HttpClient();
//    // 添加認證標頭(如果需要)
//    // client.DefaultRequestHeaders.Add("x-api-key", "your-api-key");

//    var request = new HttpRequestMessage(HttpMethod.Get, "http://test9999/mcpservices/sse");
//    request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/event-stream"));

//    using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
//    response.EnsureSuccessStatusCode();

//    using var stream = await response.Content.ReadAsStreamAsync();
//    using var reader = new System.IO.StreamReader(stream);

//    Console.WriteLine("連接到 SSE 伺服器,接收事件...");
//    while (!reader.EndOfStream)
//    {
//        var line = await reader.ReadLineAsync();
//        if (!string.IsNullOrEmpty(line) && line.StartsWith("data:"))
//        {
//            var data = line.Substring("data:".Length).Trim();
//            Console.WriteLine($"收到事件資料: {data}");
//            // 在此解析 MCP 工具列表或回應(例如 JSON 格式)
//        }
//    }
//}
//catch (Exception ex)
//{
//    Console.WriteLine($"錯誤: {ex.Message}");
//}

Console.WriteLine("按任意鍵退出...");
Console.ReadKey();