Showing posts with label AI. Show all posts
Showing posts with label AI. Show all posts

Tuesday, February 24, 2026

Create a Simple API for MCP Server Tool Client Setup

Ask: Create a API project with some sample endpoints and these endpoints should be consumed by some AI agent using MCP standards.

To Solve this use case, we will utilize .Net project library with MCP standards included. 

For example purpose, i will create below endpoints

Endpoints
1) GET /hello
     Description: Returns default greeting.
     Body (JSON): { "message": "Hello, World!" }

2) GET /hello/{name}
    Description: Returns greeting for provided name.
    Path param: name (string)
    Body (JSON): { "message": "Hello, {name}!" }

3) POST /hello
    Description: Returns greeting using provided JSON payload.
    Request body (JSON): { "name": "<string>" }
    Body (JSON): { "message": "Hello, <string>!" }

Example validation: if name missing or empty return 400 Bad Request with { "error": "name is required" }


Steps to Create Project:

1. Go to Visual Studio Developer command and Type below command to add .Net core project template

     dotnet new install Microsoft.McpServer.ProjectTemplates



2. Go to Visual Studio IDE and add new project then select "MCP server App" as template then complete project creation




3. Open Github Copilot using your credentials, type the prompt as below "Convert this project as MCP Server and MCP Tool based for the Hello World Sample usage for below endpoints

Endpoints
1) GET /hello
     Description: Returns default greeting.
     Body (JSON): { "message": "Hello, World!" }

2) GET /hello/{name}
    Description: Returns greeting for provided name.
    Path param: name (string)
    Body (JSON): { "message": "Hello, {name}!" }

3) POST /hello
    Description: Returns greeting using provided JSON payload.
    Request body (JSON): { "name": "<string>" }
    Body (JSON): { "message": "Hello, <string>!" }.

Additionally add new web project as MCP client to consume these endpoints"




4. Wait for some time the project would have been ready with Github. If there are any build errors or correction, you can keep continue with Github copilot in chat. Note: choose options as Agent and your preferred model to get code generated automatically.

5. Go to Project solution and add existing project, you should see in same folder other projects would have been added. Include those into solution, so now you can see API project for MCP server, Web Project for MCP Client

6. Now on the api endpoint, go to /swagger and you can see all the MCP tools default endpoints 

                                             

7. Now we can call the /tools to see existing endpoint, hello_world is the one we created




8. Go to /start-server to trigger the MCP server to initiate locally


9. Now call the tool as /call-tool to trigger the endpoint and pass the payload as 

{
  "toolName": "hello_world",
  "parameters": "balaji"
}

you will see the output as 

{
  "result": "Hello, balaji!"
}



10. Now your MCP server tool setup is ready to consume by other agents as hello world example. 













Friday, September 19, 2025

Web - AI Based Regex Generator

Problem Statement: 

I want to dynamically generate RegEx based on human provided input with simple .Net, C# web application. 

Implementation:

- Create web application using .Net C#, Web API

- As prerequisite need to get the Open AI Service details. If it's not already exists follow this

  • Go to Portal.Azure.Com
  • Search for Azure OpenAI 


  • Create new Open AI and click to go to Azure AI Foundry
  • In Azure AI Foundry, Left side click Home. This is your Open AI API Key to use in code below
  • In Azure AI Foundry, Left side click PlayGrounds/Chat, you should be able to setup new Chatbot with new deployment model (For ex: GPT3.5Turbo, GPT5 etc,.). This is your Deployment Model Name to use in code below.
  • Click the View Code on Chat, to get the Endpoint details. This is your Chat Completion Endpoint to use in code below.



- In index.cshtml, simply add textbox and post call
  

<h2>Balaji - AI-Powered Regex Validator - POC</h2>

<form method="post">

    <label for="rule">Enter validation rule (human text):</label><br />

    <input type="text" id="rule" name="Rule" value="@Model.Rule" size="50" /><br /><br />

     <button type="submit">Generate Regex</button><br /><br />

     @if (!string.IsNullOrEmpty(Model.GeneratedRegex))

    {

        <div><strong>Generated Regex:</strong> @Model.GeneratedRegex</div>

         <br />

        <label for="inputText">Enter text to validate:</label>

        <br />

        <input type="text" id="inputText" name="InputText" value="@Model.InputText" size="50" />

         <br />

         <br />

        <div id="result">@Model.ValidationResult</div>

    }

</form>



 - In Index.cshtml.cs, add below logic to generate the validation from AI code. 


using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.RazorPages;

using System.Net.Http;

using System.Text;

using System.Text.Json;

using System.Threading.Tasks;

 

namespace POCRegexBuilderAI.Pages

{

    public class IndexModel : PageModel

    {

        [BindProperty]

        public string Rule { get; set; }

        [BindProperty]

        public string InputText { get; set; }

        public string GeneratedRegex { get; set; }

        public string ValidationResult { get; set; }

 

        public async Task<IActionResult> OnPostAsync()

        {

            if (!string.IsNullOrEmpty(Rule))

            {

                // Call OpenAI API to generate regex

                var regex = await GenerateRegexFromRule(Rule);

                GeneratedRegex = regex;

 

                if (!string.IsNullOrEmpty(InputText) && !string.IsNullOrEmpty(regex))

                {

                    try

                    {

                        var isValid = System.Text.RegularExpressions.Regex.IsMatch(InputText, regex);

                        ValidationResult = isValid ? " Valid input" : " Invalid input";

                    }

                    catch

                    {

                        ValidationResult = "⚠️ Invalid regex pattern.";

                    }

                }

            }

             return Page();

        }

        private async Task<string> GenerateRegexFromRule(string rule)

        {

            var apiKey = "1.ReplaceYourOpenAIKey";

            var prompt = $"Convert this rule to regex: {rule}";

            var requestBody = new

            {

                model = "gpt-35-turbo", //2.Replace with your deployment model

                messages = new[]

                {

                new { role = "user", content = prompt }

            }

            };

             using var client = new HttpClient();

            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

             var chatCompletionUrl = "https://api.openai.com/v1/chat/completions";//3.Replace with your chatmodel endpoint

             var content = new StringContent(JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json");

            var response = await client.PostAsync(chatCompletionUrl, content);

            var responseString = await response.Content.ReadAsStringAsync();

 

            using var doc = JsonDocument.Parse(responseString);

            var regex = doc.RootElement.GetProperty("choices")[0].GetProperty("message").GetProperty("content").GetString();

             return regex.Trim();

        }

     }

}

 

- Now simply try with human text ("Zipcode with alphabet numeric with Min 3 and Max 5 character") to convert into Regex to apply in any textbox UI as output. It will show the validation simply as below