Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 153 additions & 5 deletions example/csharp/CSharpClientExample/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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!",
Expand All @@ -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;
}
}
Expand All @@ -97,4 +97,152 @@
finally
{
Console.WriteLine($"Full response: {fullResponse}");
}
}

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 ===");