MCP——Azure上的FastMCP+FastAPI
该项目是模型上下文协议(MCP)的演示,使用 FastMCP 以及轻量级的FastAPI桥。
它展示了简单的天气工具,如 get_forecast 通过MCP和标准HTTP端点,它被设计用于部署在Azure容器应用程序上,这是一个无服务器平台,在空闲时可扩展到零。
______________________________________________________________________
特性
- FastMCP服务器(
mcp_weather.py)
- 通过提供MCP工具 stdio 运输。 - 包括a get_forecast(latitude, longitude) 查询美国国家气象局API的工具。
- FastAPI桥(
main.py)
- 将MCP工具封装到REST端点中以进行测试或集成。 - 示例端点:
GET /get_forecast?latitude=42.36&longitude=-71.06- 云部署
- 集装箱化 uv Python 3.11。 - 可通过无服务器自动扩展部署到Azure容器应用程序。
______________________________________________________________________
地方发展
# Install dependencies
uv venv
uv sync
uv run python main.py在浏览器中打开:
http://localhost:8000/get_forecast?latitude=42.36&longitude=-71.06docker build -t test-mcp-app .
docker run -p 8000:8000 test-mcp-app测试端点:
curl "http://localhost:8000/get_forecast?latitude=42.36&longitude=-71.06"部署到Azure(无服务器)
# Login to Azure
az login
# Create a resource group
az group create --name TestResourceGroup --location eastus2
# Create a container registry (Basic tier is cheapest)
az acr create \
--name mcpdemoacr \
--resource-group TestResourceGroup \
--sku Basic
# Log in to the container registry
az acr login --name mcpdemoacr
# Build the Docker image locally
docker build -t test-mcp-app .
# Tag and push the image to ACR
docker tag test-mcp-app mcpdemoacr.azurecr.io/test-mcp-app:v1
docker push mcpdemoacr.azurecr.io/test-mcp-app:v1
# Create a Container Apps environment (serverless)
az containerapp env create \
--name MCPDemoEnv \
--resource-group TestResourceGroup \
--location eastus2
# Create the Container App (serverless, scales to zero)
az containerapp create \
--name test-mcp-app \
--resource-group TestResourceGroup \
--environment MCPDemoEnv \
--image mcpdemoacr.azurecr.io/test-mcp-app:v1 \
--target-port 8000 \
--ingress external \
--min-replicas 0 \
--max-replicas 1 \
--registry-server mcpdemoacr.azurecr.io \
--registry-username $(az acr credential show --name mcpdemoacr --query "username" -o tsv) \
--registry-password $(az acr credential show --name mcpdemoacr --query "passwords[0].value" -o tsv)
检索您的实时应用程序URL:
az containerapp show \
--name test-mcp-app \
--resource-group TestResourceGroup \
--query "properties.configuration.ingress.fqdn" -o tsv
