<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Taiseer Joudeh</title>
    <description>The latest articles on DEV Community by Taiseer Joudeh (@tjoudeh).</description>
    <link>https://dev.to/tjoudeh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F921596%2F0bbf91af-bade-4ea5-b75a-b7a03a200451.jpeg</url>
      <title>DEV Community: Taiseer Joudeh</title>
      <link>https://dev.to/tjoudeh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tjoudeh"/>
    <language>en</language>
    <item>
      <title>Building MCP Servers in .NET for AI Agents, a 10-part tutorial series</title>
      <dc:creator>Taiseer Joudeh</dc:creator>
      <pubDate>Fri, 06 Nov 2026 11:42:10 +0000</pubDate>
      <link>https://dev.to/tjoudeh/building-mcp-servers-in-net-for-ai-agents-a-10-part-tutorial-series-b4g</link>
      <guid>https://dev.to/tjoudeh/building-mcp-servers-in-net-for-ai-agents-a-10-part-tutorial-series-b4g</guid>
      <description>&lt;p&gt;If you're a .NET developer and you want to build an MCP server, it's hard to know where to start. Most examples stop at a "hello world" tool running on your own machine. I wanted a series that goes from that first tool all the way to a server that real users can sign in to and use from different AI clients.&lt;/p&gt;

&lt;p&gt;So I wrote one. It's 10 parts, it's free, and it's built on .NET 10 and ASP.NET Core from start to finish.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll build
&lt;/h2&gt;

&lt;p&gt;The whole series builds one sample app, &lt;strong&gt;BitOfTech Expenses&lt;/strong&gt;, an MCP server for expense reports and approvals. Each part adds to the one before it, so by the end you have a complete, working server and not a set of separate demos.&lt;/p&gt;

&lt;p&gt;By the end of the series, you'll have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working MCP server in C# with tools, resources and prompts, connected to a real database and an external API.&lt;/li&gt;
&lt;li&gt;The server hosted in ASP.NET Core and secured with Microsoft Entra ID, so each user only sees and runs the tools they're allowed to use.&lt;/li&gt;
&lt;li&gt;A deployment on Azure Container Apps that you can use from VS Code Copilot, Claude, your own .NET agent and Microsoft Foundry.&lt;/li&gt;
&lt;li&gt;A clear view of what it costs to run and how to protect it from common MCP security risks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 10 parts
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/02/what-is-model-context-protocol-introduction-dotnet-developers/" rel="noopener noreferrer"&gt;What is the Model Context Protocol? An Introduction for .NET Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/02/building-your-first-mcp-server-in-csharp/" rel="noopener noreferrer"&gt;Building Your First MCP Server in C#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/02/mcp-tools-resources-and-prompts-in-dotnet/" rel="noopener noreferrer"&gt;MCP Tools, Resources and Prompts in .NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/06/wiring-mcp-tools-to-azure-sql-and-external-apis/" rel="noopener noreferrer"&gt;Wiring MCP Tools to Azure SQL and External APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/08/hosting-mcp-server-aspnet-core-streamable-http/" rel="noopener noreferrer"&gt;Hosting an MCP Server in ASP.NET Core with Streamable HTTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/11/building-mcp-client-ai-agent-dotnet/" rel="noopener noreferrer"&gt;Building an MCP Client and AI Agent in .NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/13/securing-mcp-server-microsoft-entra-id/" rel="noopener noreferrer"&gt;Securing an MCP Server with Microsoft Entra ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/15/deploying-an-mcp-server-to-azure-container-apps/" rel="noopener noreferrer"&gt;Deploying an MCP Server to Azure Container Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/20/connecting-mcp-server-microsoft-foundry-agent-service/" rel="noopener noreferrer"&gt;Connecting an MCP Server to Microsoft Foundry Agent Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitoftech.net/2026/10/20/mcp-server-observability-cost-control-security/" rel="noopener noreferrer"&gt;Observability, Cost Control and MCP Security&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;p&gt;The series is for .NET developers who know C# and ASP.NET Core but are new to MCP. You don't need any AI or machine learning background. If you can build a Minimal API, you can follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The .NET 10 SDK and VS Code.&lt;/li&gt;
&lt;li&gt;Parts 1 to 3 run on your own machine, with no cloud account.&lt;/li&gt;
&lt;li&gt;From Part 4 onwards, you need an Azure subscription.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Source code
&lt;/h2&gt;

&lt;p&gt;Everything is on GitHub, with a git tag for each part. If you get stuck, you can check out the tag for the part you're on and compare it with your code.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/tjoudeh/building-mcp-servers-dotnet" rel="noopener noreferrer"&gt;https://github.com/tjoudeh/building-mcp-servers-dotnet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I verified every step before publishing, but MCP and its tooling change quickly. If something doesn't work for you, leave a comment here or open an issue on the repo, and I'll take a look.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>azure</category>
      <category>dotnet</category>
      <category>aspnet</category>
    </item>
    <item>
      <title>Practical Azure Container Apps with Dapr</title>
      <dc:creator>Taiseer Joudeh</dc:creator>
      <pubDate>Mon, 26 Sep 2022 09:20:24 +0000</pubDate>
      <link>https://dev.to/tjoudeh/practical-azure-container-apps-with-dapr-2hf2</link>
      <guid>https://dev.to/tjoudeh/practical-azure-container-apps-with-dapr-2hf2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post is originally posted at &lt;a href="https://medium.com/@taiseer.joudeh/practical-azure-container-apps-with-dapr-f2d9b5ea1f82"&gt;medium.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Azure Container Apps is a fully managed serverless container runtime for building and running cloud-native applications which focuses on the business logic of the apps rather than on cloud infrastructure management.&lt;/p&gt;

&lt;p&gt;Azure Container Apps is built upon the foundation consisting of open-source technology with CNCF projects like Kubernetes Event-Driven Autoscaling (&lt;a href="https://keda.sh/"&gt;KEDA&lt;/a&gt;), Distributed Application Runtime (&lt;a href="https://dapr.io/"&gt;Dapr&lt;/a&gt;), and &lt;a href="https://www.envoyproxy.io/"&gt;Envoy&lt;/a&gt; running on the Azure Kubernetes Service (&lt;a href="https://azure.microsoft.com/en-us/services/kubernetes-service/#overview"&gt;AKS&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;During the past month, I spent quite a time digging deeper and learning more about this serverless offering.&lt;/p&gt;

&lt;p&gt;Theoretical learning is great, but nothing beats a practical example! So I've created a simple microservice application (Tasks Management App) which consists of three microservices and each one has certain capabilities to show how Azure Container Apps and Dapr can simplify the building of a microservices application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Complete practical example on &lt;a href="https://bit.ly/ACATutorial"&gt;my blog&lt;/a&gt;. The &lt;a href="https://github.com/tjoudeh/TasksTracker.ContainerApps"&gt;source code&lt;/a&gt; is available on GitHub.
&lt;/h4&gt;

&lt;p&gt;The below architecture diagram shows the solution components and services I'm using in this practical example&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YTyqfCw5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ud4uslw1cv7kdr0wys5u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YTyqfCw5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ud4uslw1cv7kdr0wys5u.jpg" alt="Azure Container Apps Architecture Diagram" width="880" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To help understand how I build the application from scratch, I have written various companion blog posts to describe the source code and walk you through the steps. &lt;/p&gt;

&lt;p&gt;The application use cases and Azure Container Apps features I will be covered are below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An overview of Azure Container Apps Components and Dapr and their core features and capabilities (&lt;a href="https://bitoftech.net/2022/08/25/tutorial-building-microservice-applications-azure-container-apps-dapr/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Getting started with Azure Container Apps, build and push container image to Azure Container Registry, then deploy your first Backend API microservice (&lt;a href="https://bitoftech.net/2022/08/25/deploy-microservice-application-azure-container-apps/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Communication between two microservices (without Dapr) and different options for ingress configurations (&lt;a href="https://bitoftech.net/2022/08/25/communication-microservices-azure-container-apps/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Introducing Dapr into the application and how it will help simplify complex microservices scenarios such as service discovery, service-to-service invocation, and calling services asynchronously (&lt;a href="https://bitoftech.net/2022/08/29/dapr-integration-with-azure-container-apps/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Enable local debugging for multiple microservices applications within VS Code and configure Dapr locally (&lt;a href="https://bitoftech.net/2022/08/29/dapr-integration-with-azure-container-apps/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Using Dapr State Management Building Block to store application data into Azure Cosmos DB with simple configurations and without adding CosmosDB SDK to the application (&lt;a href="https://bitoftech.net/2022/08/29/azure-container-apps-state-store-with-dapr-state-management-api/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Using Dapr Pub/Sub Building Block to enable Async communication between microservices while using Azure Service Bus as a service broker, and see how Dapr will simplify the process on the producer and consumer too (&lt;a href="https://bitoftech.net/2022/09/02/azure-container-apps-async-communication-with-dapr-pub-sub-api-part-6/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Handling external events from different systems and showing the connectivity and interoperability capabilities when introducing Dapr Bindings (&lt;a href="https://bitoftech.net/2022/09/05/azure-container-apps-with-dapr-bindings-building-block/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Introducing Cron binding to trigger application code periodically based on a configurable interval and store processing results Azure Blob Storage using Dapr State Management API (&lt;a href="https://bitoftech.net/2022/09/05/azure-container-apps-with-dapr-bindings-building-block/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Configure Monitoring and Observability for all applications in the Azure Container App Environment and implement distributed tracing between services and resources using Application Insights (&lt;a href="https://bitoftech.net/2022/09/09/azure-container-apps-monitoring-and-observability-with-application-insights-part-8/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Use GitHub actions to continuously build, push images to ACR and deploy new Azure Container Apps revisions with code changes (&lt;a href="https://bitoftech.net/2022/09/13/continuous-deployment-for-azure-container-apps-using-github-actions-part-9/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Creating the IaC scripts to recreate the entire ACA environment with the supporting resources (Azure Service Bus, Cosmos DB, Azure storage, etc…) using Bicep (&lt;a href="https://bitoftech.net/2022/09/16/use-bicep-to-deploy-dapr-microservices-apps-to-azure-container-apps-part-10/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Configuring Autoscaling for Azure Container Apps using KEDA based on Azure Service Bus Queue length (&lt;a href="https://bitoftech.net/2022/09/22/azure-container-apps-auto-scaling-with-keda-part-11/"&gt;continue reading…&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Integrating Health probes in Azure Container Apps (TBA)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will be adding more posts such as Authentication, services invocation using gRPC, file storage mounting, and using vNETs during the coming period, so stay tuned and thanks for reading.&lt;/p&gt;

&lt;p&gt;Happy learning and coding!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/photos/bukjsECgmeU?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditShareLink"&gt;Featured Image Credit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>containerapps</category>
      <category>dotnet</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
