From b6dc66682baa5c7c588b45f0b8b9e45c7a3aecc7 Mon Sep 17 00:00:00 2001 From: Reagan Lopez Date: Fri, 21 Nov 2025 22:09:10 -0800 Subject: [PATCH] Add csharp example for superagent mcp Noticed that this works only with latest MCP Marketplace version 2.2.0.1113 The service version 2.1.0.925 was throwing an error. Signed-off-by: Reagan Lopez --- example/csharp/CSharpClientExample/Program.cs | 158 +++++++++++++++++- 1 file changed, 153 insertions(+), 5 deletions(-) diff --git a/example/csharp/CSharpClientExample/Program.cs b/example/csharp/CSharpClientExample/Program.cs index 1b42bd5d..75ab0e11 100644 --- a/example/csharp/CSharpClientExample/Program.cs +++ b/example/csharp/CSharpClientExample/Program.cs @@ -36,7 +36,7 @@ //using var channel = GrpcChannel.ForAddress("http://localhost:5006"); var client = new SuperBuilder.SuperBuilderClient(channel); -Console.WriteLine("\n\n-------- Say Hello Test -------"); +Console.WriteLine("\n\n-------- Say Hello -------"); // Make a gRPC call try @@ -58,14 +58,14 @@ var updateResponse = await client.GetSoftwareUpdateAsync(new SayHelloRequest { Name = "SuperBuilder C# Client!" }); Console.WriteLine("Server Reply: " + updateResponse.Message); -Console.WriteLine("\n\n-------- Health Check Test -------"); +Console.WriteLine("\n\n-------- Health Check -------"); var checkHealthResponse = await client.CheckHealthAsync(new CheckHealthRequest { TypeOfCheck = "RAG" }); Console.WriteLine("\nServer Reply: " + checkHealthResponse.Status); // CHAT TEST -Console.WriteLine("\n\n-------- Chat Test -------"); +Console.WriteLine("\n\n-------- Chat -------"); var chatRequest = new ChatRequest { Name = "SuperBuilder C# Client!", @@ -82,7 +82,7 @@ var r = client.Chat(chatRequest); await foreach (var response in r.ResponseStream.ReadAllAsync()) { - Console.WriteLine("Received chat message: " + response.Message); + Console.WriteLine("Response chunk: " + response.Message); fullResponse += response.Message; } } @@ -97,4 +97,152 @@ finally { Console.WriteLine($"Full response: {fullResponse}"); -} \ No newline at end of file +} + +Console.WriteLine("\n\n-------- Get All MCP Servers -------"); +var getRequest = new GetMCPServersRequest(); + +try +{ + var getResponse = await client.GetMCPServersAsync(getRequest); + + Console.WriteLine("\n=== GetMCPServers Response ==="); + foreach (var srv in getResponse.Servers) + { + Console.WriteLine($"ID: {srv.Id}"); + Console.WriteLine($"Name: {srv.ServerName}"); + Console.WriteLine($"Command: {srv.Command}"); + Console.WriteLine($"Args: {srv.Args}"); + Console.WriteLine($"Url: {srv.Url}"); + Console.WriteLine($"Env: {srv.Env}"); + Console.WriteLine("-----------------------------"); + } +} +catch (Exception ex) +{ + Console.WriteLine("GetMCPServers failed:"); + Console.WriteLine(ex); +} + +Console.WriteLine("\n\n-------- Add an MCP Server -------"); +var addRequest = new AddMCPServerRequest +{ + Server = new MCPServer + { + Id = 1, // Server will assign its own ID if needed + ServerName = "mcp-server-fetch", + Command = "cmd", + Args = "/c uvx mcp-server-fetch", + Env = "" // NOTE: Add proxy if required + } +}; + +try +{ + var addResponse = await client.AddMCPServerAsync(addRequest); + + Console.WriteLine("=== AddMCPServer Response ==="); + Console.WriteLine($"Success: {addResponse.Success}"); + Console.WriteLine($"Message: {addResponse.Message}"); +} +catch (Exception ex) +{ + Console.WriteLine("AddMCPServer failed:"); + Console.WriteLine(ex); +} + + + +Console.WriteLine("\n\n-------- Add an MCP Agent -------"); +var addAgentRequest = new AddMCPAgentRequest +{ + Agent = new MCPAgent + { + Id = 1, // Server can assign if needed + Name = "FetchAgent", + Desc = "Fetch details of a webpage", + Message = "Follow the users instructions", + // Link the agent to the server(s) by ID + ServerIds = { 1 } + } +}; + +try +{ + var addAgentResponse = await client.AddMCPAgentAsync(addAgentRequest); + + Console.WriteLine("\n=== AddMCPAgent Response ==="); + Console.WriteLine($"Success: {addAgentResponse.Success}"); + Console.WriteLine($"Message: {addAgentResponse.Message}"); +} +catch (Exception ex) +{ + Console.WriteLine("AddMCPAgent failed:"); + Console.WriteLine(ex); +} + +Console.WriteLine("\n\n-------- Start an MCP Agent -------"); +var startAgentRequest = new StartMCPAgentRequest +{ + AgentName = "FetchAgent" +}; + +try +{ + var startAgentResponse = await client.StartMCPAgentAsync(startAgentRequest); + + Console.WriteLine("\n=== StartMCPAgent Response ==="); + Console.WriteLine($"Success: {startAgentResponse.Success}"); + Console.WriteLine($"Message: {startAgentResponse.Message}"); +} +catch (Exception ex) +{ + Console.WriteLine("StartMCPAgent failed:"); + Console.WriteLine(ex); +} + +Console.WriteLine("\n\n-------- Chat with SuperAgent MCP -------"); +var promptOptions = new PromptOptions +{ + SuperAgentPrompt = new PromptOptions.Types.SuperAgentPrompt() +}; + +// Build ChatRequest +var request = new ChatRequest +{ + Name = "client", + Prompt = "What is this website about https://github.com/intel/intel-ai-assistant-builder", + SessionId = 1, + PromptOptions = promptOptions // <-- REQUIRED +}; + +// Optionally add conversation history +request.History.Add(new ConversationHistory +{ + Role = "user", + Content = "Hi there" +}); + +var fullChatResponse = ""; +try +{ + var r = client.Chat(request); + await foreach (var response in r.ResponseStream.ReadAllAsync()) + { + Console.WriteLine("Response chunk: " + response.Message); + fullChatResponse += response.Message; + } +} +catch (Exception ex) +{ + Console.WriteLine($"Unexpected error: {ex.Message}"); + Console.WriteLine($"Sending stop generation now..."); + var stopRequest = new StopChatRequest { }; + var stopResponse = client.StopChat(stopRequest); + Console.WriteLine($"Generation stopped"); +} +finally +{ + Console.WriteLine($"Full response: {fullChatResponse}"); +} +Console.WriteLine("\n=== Done ==="); \ No newline at end of file