Skip to content

Instantly share code, notes, and snippets.

View medhatelmasry's full-sized avatar

Medhat Elmasry medhatelmasry

View GitHub Profile
@medhatelmasry
medhatelmasry / Program.cs
Created October 22, 2025 23:30
AI Toolkit Sematic Kernel Client
using System.Text;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var model = "mistral-7b-v02-int4-cpu";
var baseUrl = "http://localhost:5272/v1/";
var apikey = "unused";
// Create a chat completion service
@medhatelmasry
medhatelmasry / Program.cs
Last active October 23, 2025 17:17
AI Toolkit OpenAI Client - Program.cs
using OpenAI;
using OpenAI.Chat;
using System.ClientModel;
using System.Text;
var model = "mistral-7b-v02-int4-cpu";
var baseUrl = "http://localhost:5272/v1/"; // root URL for local OpenAI-like server
var apikey = "unused";
OpenAIClientOptions options = new OpenAIClientOptions();
@medhatelmasry
medhatelmasry / fifa-world-cup.json
Last active October 2, 2025 02:20
List of men and women FIFA Soccer World Cups (JSON)
[
{
"GameId": 1,
"Year": 1930,
"Gender": "Men",
"City": "Montevideo",
"Country": "Uruguay",
"Continent": "South America",
"Winner": "Uruguay"
},
@medhatelmasry
medhatelmasry / ZodiacMcpTool.cs
Created September 29, 2025 20:24
ZodiacMcpTool
public class ZodiacMcpTool {
[Function("ZodiacMcpTool")]
public IActionResult Run(
[McpToolTrigger(McpToolDefinitions.ZodiacTool.Name, McpToolDefinitions.ZodiacTool.Description)]
ToolInvocationContext context,
[McpToolProperty(McpToolDefinitions.ZodiacTool.Param.Name, McpToolDefinitions.DataTypes.Number, McpToolDefinitions.ZodiacTool.Param.Description)]
int year)
{
return new OkObjectResult($"Hi. I am {McpToolDefinitions.ZodiacTool.Name}!. The zodiac animal for the year {year} is: {GetZodiacAnimal(year)}");
}
@medhatelmasry
medhatelmasry / MultiplyNumbersMcpTool.cs
Created September 29, 2025 20:22
MultiplyNumbersMcpTool
public class MultiplyNumbersMcpTool {
[Function("MultiplyNumbersMcpTool")]
public IActionResult Run(
[McpToolTrigger(McpToolDefinitions.MultiplyNumbersTool.Name, McpToolDefinitions.MultiplyNumbersTool.Description)]
ToolInvocationContext context,
[McpToolProperty(McpToolDefinitions.MultiplyNumbersTool.Param1.Name, McpToolDefinitions.DataTypes.Number, McpToolDefinitions.MultiplyNumbersTool.Param1.Description)]
int firstNumber,
[McpToolProperty(McpToolDefinitions.MultiplyNumbersTool.Param2.Name, McpToolDefinitions.DataTypes.Number, McpToolDefinitions.MultiplyNumbersTool.Param2.Description)]
int secondNumber) {
return new OkObjectResult($"Hi. I am {McpToolDefinitions.MultiplyNumbersTool.Name}!. The result of {firstNumber} multiplied by {secondNumber} is: {firstNumber * secondNumber}");
@medhatelmasry
medhatelmasry / ReverseMessageMcpTool.cs
Created September 29, 2025 20:21
ReverseMessageMcpTool
public class ReverseMessageMcpTool {
[Function("ReverseMessageMcpTool")]
public IActionResult Run(
[McpToolTrigger(McpToolDefinitions.ReverseMessageTool.Name, McpToolDefinitions.ReverseMessageTool.Description)]
ToolInvocationContext context,
[McpToolProperty(McpToolDefinitions.ReverseMessageTool.Param.Name, McpToolDefinitions.DataTypes.String, McpToolDefinitions.ReverseMessageTool.Param.Description)]
string message
) {
string reversedMessage = new string(message.ToCharArray().Reverse().ToArray());
return new OkObjectResult($"Hi. I'm {McpToolDefinitions.ReverseMessageTool.Name}!. The reversed message is: {reversedMessage}");
@medhatelmasry
medhatelmasry / McpToolDefinitions.cs
Last active September 29, 2025 20:20
McpToolDefinitions
public static class McpToolDefinitions {
public static class ReverseMessageTool
{
public const string Name = "ReverseMessageTool";
public const string Description = "Echoes back message in reverse.";
public static class Param {
public const string Name = "Message";
public const string Description = "The Message to reverse";
@medhatelmasry
medhatelmasry / BeverageTools.cs
Created September 21, 2025 01:17
BeverageTools
[McpServerToolType]
public class BeverageTool
{
private readonly BeverageService _beverageService;
private readonly ApplicationDbContext _db;
public BeverageTool(ApplicationDbContext db)
{
_db = db;
_beverageService = new BeverageService(_db);
@medhatelmasry
medhatelmasry / BeverageService.cs
Created September 20, 2025 23:52
BeverageService
public class BeverageService(ApplicationDbContext db) {
public async Task<string> GetBeveragesJson() {
var beverages = await db.Beverages.ToListAsync();
return System.Text.Json.JsonSerializer.Serialize(beverages);
}
public async Task<string> GetBeverageByIdJson(int id) {
var beverage = await db.Beverages.FindAsync(id);
return System.Text.Json.JsonSerializer.Serialize(beverage);
}
@medhatelmasry
medhatelmasry / ApplicationDbContext.cs
Created September 20, 2025 23:52
ApplicationDbContext
public class ApplicationDbContext : DbContext {
public DbSet<Beverage> Beverages => Set<Beverage>();
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Beverage>().HasData(GetBeverages());
}