mcp-on-azure

OfekBenEliezer/mcp-on-azure

3.3

If you are the rightful owner of mcp-on-azure and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MCP on Azure is a Model Context Server that integrates with Azure Blob Storage and Azure OpenAI to describe images.

Tools
2
Resources
0
Prompts
0

MCP on Azure – Model Context Server that reads from Blob Storage and describes images with Azure OpenAI

Production-ready sample for running a minimal MCP Server on Azure. It exposes two tools:

  • list_captain_files – list all blob names in a container
  • describe_blob – generate a short description for an image blob using Azure OpenAI (gpt-4o)

✨ What you get

  • A minimal MCP Server built with Express.js.
  • Secure access to Azure Blob Storage using a connection string.
  • Server-side calls to Azure OpenAI vision models for image description.
  • Example .env.example for easy setup.
  • PowerShell & cURL commands for quick testing.

🧱 Architecture



flowchart TD
  A[MCP Client] -->|HTTP| B[MCP Server]
  B -->|List/Fetch| C[Azure Blob Storage]
  B -->|Send image| D[Azure OpenAI gpt-4o Vision]
  D -->|Description| B
  B -->|JSON Response| A

MCP Client (Copilot, Inspector, etc.) sends HTTP requests.

This Server (Express.js) handles /tools endpoints.

Server fetches the file from Azure Blob Storage.

Sends it to Azure OpenAI GPT-4o for a short, clear description.

📦 Prerequisites

  • Node.js 18+ (or 20/22)
  • Azure Storage Account with a container (e.g., captain-azure) containing images
  • Azure OpenAI resource with a gpt-4o deployment
  • Access keys & endpoint for both services

🔐 Environment Variables (.env)

AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=<name>;AccountKey=<key>;EndpointSuffix=core.windows.net
CONTAINER_NAME=captain-azure
AZURE_OPENAI_ENDPOINT=https://<your-openai>.openai.azure.com
AZURE_OPENAI_KEY=<your-openai-key>
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o
AZURE_OPENAI_API_VERSION=2024-02-15-preview

🚀 Install & Run

git clone https://github.com/OfekBenEliezer/mcp-on-azure.git
cd mcp-on-azure
npm install
node server.js
# MCP Server running on: http://localhost:3333

📂 List blobs

PowerShell

Invoke-RestMethod -Uri "http://localhost:3333/tools/list_captain_files" `
  -Method Post `
  -ContentType "application/json"

cURL

curl -s -X POST http://localhost:3333/tools/list_captain_files \
  -H "Content-Type: application/json"

🖼 Describe a blob

PowerShell

Invoke-RestMethod -Uri "http://localhost:3333/tools/describe_blob" `
  -Method Post `
  -Body (@{ blobName = "CertWebinar.png" } | ConvertTo-Json) `
  -ContentType "application/json"

cURL

curl -s -X POST http://localhost:3333/tools/describe_blob \
  -H "Content-Type: application/json" \
  -d '{"blobName":"CertWebinar.png"}'

Expected output

{
  "description": "A short, clear sentence describing the image."
}

🛡️ Security Notes

  • Never commit keys or secrets.
  • If blobs are private, generate SAS URLs with short TTL.
  • Restrict CORS and ingress when running in production.
  • For enterprise scenarios, prefer Managed Identity over raw keys.

📜 License

MIT License – free to use, modify, and distribute with attribution.


👨‍✈️ Built by Captain Azure – Ofek Ben Eliezer