Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
149211 stories
·
33 followers

Mastodon CEO steps down as the social network restructures

1 Share
Eugen Rochko is stepping down as CEO of decentralized social network Mastodon. Felix Hlatky will now become the Executive Director as the company become structured as a nonprofit government by a board.
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

How to create agents that people actually want to use

1 Share
Ryan welcomes Assaf Elovic, head of AI at monday.com, to discuss creating AI tools that users will actually adopt, how they created their Monday Sidekick agent with the user experience in mind, and the opportunities that AI creates for better productivity and more efficiency.
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

How-to add an MCP tool to your Azure Foundry agent using dynamic sessions on Azure Container Apps

1 Share

Now available in preview, Azure Container Apps supports a new shell session pool type in dynamic sessions as well as MCP support for both shell and Python container types. With MCP enablement, you can bring the benefits of dynamics sessions to your AI agents by giving them the ability to execute code, run system commands, access file systems, and perform complex tasks in isolated, secure container environments that appear and disappear on demand.

 

The following is a tutorial on how to use an MCP enabled dynamic session as a tool used in an Azure Foundry agent giving it the capability to run remote shell commands. 

Setup

For this tutorial, we're going to use an ARM template to deploy our Container App Session Pool resource.

Begin by signing into Azure and creating a resource group.

az login

After you're logged in, set the following variables that will be used to deploy the resource. Replace the <> with your own values.

SUBSCRIPTION_ID=$(az account show --query id --output tsv) RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>

Create a resource group

az group create --name $RESOURCE_GROUP --location $LOCATION

1. Create a shell dynamic session with MCP enabled

Use an ARM template to create a shell session pool with MCP server enabled.

Create a deployment template file named deploy.json and copy the following into the file:

{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "String" }, "location": { "type": "String" } }, "resources": [ { "type": "Microsoft.App/sessionPools", "apiVersion": "2025-02-02-preview", "name": "[parameters('name')]", "location": "[parameters('location')]", "properties": { "poolManagementType": "Dynamic", "containerType": "Shell", "scaleConfiguration": { "maxConcurrentSessions": 5 }, "sessionNetworkConfiguration": { "status": "EgressEnabled" }, "dynamicPoolConfiguration": { "lifecycleConfiguration": { "lifecycleType": "Timed", "coolDownPeriodInSeconds": 300 } }, "mcpServerSettings": { "isMCPServerEnabled": true } } } ] }

Next, deploy the ARM template you just created.

az deployment group create --resource-group $RESOURCE_GROUP --template-file deploy.json --name $SESSION_POOL_NAME --location $LOCATION

Once completed, your resource will be provisioned and available in the portal.

 

Get the MCP server endpoint and credentials

Next, retrieve the MCP server endpoint from the deployed container app session pool.

az rest --method GET --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME?api-version=2025-02-02-preview" --query "properties.mcpServerSettings.mcpServerEndpoint" -o tsv

Then, request the API credentials for the MCP server

az rest --method POST --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME/fetchMCPServerCredentials?api-version=2025-02-02-preview" --query "apiKey" -o tsv

Keep the fetched values nearby and copied to be used in the next step to connect your MCP server as a tool in the Azure Foundry agent.

2. Create an Azure Foundry project and agent

Go to the Azure Foundry website and follow the steps below to create a project. Make sure you are in the New Foundry portal by turning it on in the top nav.

  1. Navigate to the top left nav bar and click an existing project and click Create new project
  2. Give your project a Name
  3. Click on Advanced options to choose and fill out the following
    1. Foundry resource
    2. Subscription
    3. Region
    4. Resource group
  4. After filling the previous options out, click Create

Once your project is created, follow the steps below to create an agent.

  1. Click on the Build tab on the top right navigation bar
  2. Navigate to the Agents section in the left nav
  3. Click on the Create agent button
  4. Give your agent a name and click Create

3. Connect your remote MCP server as a Tool to your agent

After your agent is created, you can connect a remote MCP server as a tool for your agent to use. Follow the steps below to connect an MCP server to your agent.

  1. Navigate to Tools on the left nav bar
  2. Click on the Connect a tool button
  3. Go to the Custom tab
  4. Click on the Model Context Protocol (MCP) option, click Create
  5. Fill out the form on the following screen and click Create. Use the MCP server endpoint and API credentials from the previous section.
    1. Name="your-unique-name"
    2. Remote MCP server endpoint="your-mcp-server-endpoint"
    3. Authentication type= "Key-based"
    4. Credential= Key:"x-ms-apikey" Value: "your-api-key"

Once the tool is created you will see a Use in an agent button. Click on that and choose the agent you previously created.

After choosing the agent you should now see a connected tool in your agent view.

4. Use the connected tool to run shell commands with your agent

Now that the tool is connected you can use the playground to prompt the agent with a question that will launch the shell environment.

Try the following prompt with your agent:

"Create a hello world flask app in a new remote environment. Then send a request to the app to show that it works."

Once prompted, the connected MCP server will use it's tools to launch a shell environment and create an environmentId. This is used to track your session by creating a unique GUID so future commands are run in the same session.

The Foundry agent will then ask for approval for each step as the connected MCP tool will execute a series of shell commands that will install Python and Flask.

Once all requests have been completed and approved, you'll notice it has run the necessary shell commands in the remote environment and sent a curl request to the app with a response of Hello, World!

In this tutorial, we demonstrated how to extend Azure AI Foundry agents using Azure Container Apps dynamic session pools. By enabling MCP support on a shell session pool, we created a secure, on-demand execution environment that allows AI agents to run remote shell commands. With this setup, your AI agents can now bridge the gap between conversation and action, providing users with interactive and useful experiences. 

 

 

Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Getting to Senior - Taking Ownership Without Leading Projects

1 Share

If you're an engineer looking to move into a senior role, you have likely heard that you need to demonstrate "ownership". Unfortunately, this crucial term is often poorly defined and leads to a major misconception: that ownership means being assigned a full project or a Tech Lead role. I want to dispel that myth and explain why ownership is actually a necessary behavior and mindset shift, applicable in almost every action you take, regardless of whether you’re leading a project.

  • Understand why ownership is a critical aspect of moving along your career track, especially for engineers moving from the associate or mid-level engineer role up to senior.
  • Uncover the misconception that ownership requires a specific scope of responsibility, such as owning a project or a deliverable.
  • Discover the crucial phrase that defines the ownership mindset: "What now?" or "What next?" which should guide you through every situation you encounter.
  • Learn why true ownership is not about inherently knowing every technical detail or executing every step, but about being willing to take responsibility and accountability for figuring out what happens next.
  • Explore how a senior engineer's ownership behavior means translating identified problems (like those found in a retro) into action or decisions, thereby ensuring things continue moving forward and don't stall out.
  • I explain that engineers show ownership by choosing to opt in to be held accountable for outcomes, rather than waiting for a manager to intervene or ask for a status update.

📮 Ask a Question

If you enjoyed this episode and would like me to discuss a question that you have on the show, drop it over at: developertea.com.

📮 Join the Discord

If you want to be a part of a supportive community of engineers (non-engineers welcome!) working to improve their lives and careers, join us on the Developer Tea Discord community by visiting https://developertea.com/discord today!

🧡 Leave a Review

If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.





Download audio: https://dts.podtrac.com/redirect.mp3/cdn.simplecast.com/audio/c44db111-b60d-436e-ab63-38c7c3402406/episodes/81f83b44-eaf0-4f5c-ab39-022ed44088ec/audio/d35df176-0579-4caa-9a18-189b61feeddc/default_tc.mp3?aid=rss_feed&feed=dLRotFGk
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Personification in language and AI. Dictums, maxims, and proverbs. Expensitive.

1 Share

1134. This week, we look at the poetic power of personification (the language quirk that gives human traits to nonhuman things) and why style guides advise against using it for AI. Then, we look at the different names for common sayings, defining a proverb and breaking down the four main types: maxim, adage, dictum, and truism.

The personification segment was written by Karen Lunde, a longtime writer and editor turned web designer and marketing mentor. Solo service business owners come to her for websites where beautiful design meets authentic words that actually build connections. Find her at chanterellemarketingstudio.com.

The proverbs segment was written by Jim Norrena, MFA, who has been writing, editing, and leading grammar and proofreading workshops for more than thirty-five years. He founded TypoSuction.com, an independent editorial service, and is a member of Bay Area Editors’ Forum. He also serves on the board of Professional Publishers Network. You can find him at LinkedIn.

🔗 Share your familect recording in a WhatsApp chat.

🔗 Watch my LinkedIn Learning writing courses.

🔗 Subscribe to the newsletter.

🔗 Take our advertising survey

🔗 Get the edited transcript.

🔗 Get Grammar Girl books

🔗 Join GrammarpaloozaGet ad-free and bonus episodes at Apple Podcasts or SubtextLearn more about the difference

| HOST: Mignon Fogarty

| VOICEMAIL: 833-214-GIRL (833-214-4475).

| Grammar Girl is part of the Quick and Dirty Tips podcast network.

  • Audio Engineer: Dan Feierabend
  • Director of Podcast: Holly Hutchings
  • Advertising Operations Specialist: Morgan Christianson
  • Marketing and Video: Nat Hoopes, Rebekah Sebastian

| Theme music by Catherine Rannus.

| Grammar Girl Social Media: YouTubeTikTokFacebook. ThreadsInstagramLinkedInMastodonBluesky.


Hosted by Simplecast, an AdsWizz company. See pcm.adswizz.com for information about our collection and use of personal data for advertising.





Download audio: https://dts.podtrac.com/redirect.mp3/media.blubrry.com/grammargirl/stitcher.simplecastaudio.com/e7b2fc84-d82d-4b4d-980c-6414facd80c3/episodes/37fecf1a-b3ec-48d1-a72d-5830b96e7db2/audio/128/default.mp3?aid=rss_feed&awCollectionId=e7b2fc84-d82d-4b4d-980c-6414facd80c3&awEpisodeId=37fecf1a-b3ec-48d1-a72d-5830b96e7db2&feed=XcH2p3Ah
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

LIVE from GitHub Universe: Privacy-First Smart Homes with Frenck from Home Assistant

1 Share

In this episode, recorded live at GitHub Universe 2025, Andrea sits down with Frank “Frenck” Nijhof, a GitHub Star and project lead for Home Assistant, one of the most active open source projects on the platform. They unpack how millions of households run privacy-first automations locally (no cloud required), why the Open Home Foundation exists to prevent vendor lock-in and e-waste, and how this famously welcoming community scaled to 21k+ contributors. Frank also shares insights about the development of “Assist,” an open, local-first voice assistant (with optional AI), as well as the new “Home Assist Green” hardware device, plus practical ways non-coders can meaningfully contribute to the project, too.

Links mentioned in the episode:

https://github.com/frenck

https://www.home-assistant.io

https://www.home-assistant.io/green

https://www.home-assistant.io/voice

https://www.home-assistant.io/assist

https://www.esphome.io

https://github.com/home-assistant

https://www.raspberrypi.com


Hosted by Simplecast, an AdsWizz company. See pcm.adswizz.com for information about our collection and use of personal data for advertising.





Download audio: https://afp-920613-injected.calisto.simplecastaudio.com/98910087-00ff-4e95-acd0-a3da5b27f57f/episodes/a5000fd5-f225-459e-b1d9-e86573a398a2/audio/128/default.mp3?aid=rss_feed&awCollectionId=98910087-00ff-4e95-acd0-a3da5b27f57f&awEpisodeId=a5000fd5-f225-459e-b1d9-e86573a398a2&feed=ioCY0vfY
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories