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();