Files
ExperionCrawler/dxf-graph/test_mcp_client.cs
windpacer 7330711499 chore: 프로젝트 파일 구조 정리 - 루트 파일 폴더별 이동, 테스트/구버전 삭제
루트 파일 정리:
- DXF/P&ID 관련 → dxf-graph/
- fastTable 관련 → fastTable/
- plan/ → plans/ 통합 (최신 버전 유지)
- 테스트 출력 파일, 구버전 프로젝트 삭제
- 불필요한 루트 문서 삭제
2026-05-10 17:39:58 +09:00

86 lines
2.9 KiB
C#

using System;
using System.Text;
using System.Text.Json;
using System.Net.Http;
using System.Threading.Tasks;
namespace TestMcpClient
{
public class McpResponse
{
public string? jsonrpc { get; set; }
public string? id { get; set; }
public McpErrorBody? error { get; set; }
public McpResult? result { get; set; }
}
public class McpErrorBody
{
public int? code { get; set; }
public string? message { get; set; }
}
public class McpResult
{
public McpContentItem[]? content { get; set; }
}
public class McpContentItem
{
public string type { get; set; } = string.Empty;
public string? text { get; set; }
public string? data { get; set; }
}
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
var request = new
{
jsonrpc = "2.0",
id = "test-1",
method = "tools/call",
@params = new { name = "extract_pid_tags", arguments = new { text = "P-10107-500A-F1A-H100 Pump", source_type = "dxf" } }
};
var json = JsonSerializer.Serialize(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
using var httpRequest = new HttpRequestMessage(HttpMethod.Post, "http://localhost:5001/mcp")
{
Content = content
};
httpRequest.Headers.Add("Accept", "application/json");
httpRequest.Headers.Add("mcp-protocol-version", "2025-03-26");
var response = await client.SendAsync(httpRequest);
Console.WriteLine($"Status: {response.StatusCode}");
if (response.IsSuccessStatusCode)
{
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine($"\nResponse body (first 500 chars):\n{body.Substring(0, Math.Min(500, body.Length))}");
var result = JsonSerializer.Deserialize<McpResponse>(body, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
Console.WriteLine($"\nDeserialized successfully!");
Console.WriteLine($"result: {result?.result != null}");
Console.WriteLine($"result.content: {result?.result?.content?.Length ?? 0}");
if (result?.result?.content != null)
{
var sb = new StringBuilder();
foreach (var item in result.result.content)
{
Console.WriteLine($" content item: type={item.type}, text length={item.text?.Length ?? 0}");
if (item.type == "text")
sb.AppendLine(item.text);
}
Console.WriteLine($"\nExtracted text:\n{sb.ToString()}");
}
}
}
}
}