Azure Functions MCP Server

Azure Functions MCP Server

An educational MCP server deployed as an Azure Function, exposing tools like addition, weather simulation, and temperature conversion for AI agents to invoke.

Category
访问服务器

README

Servidor MCP en Azure Functions

Proyecto educativo que implementa un servidor MCP (Model Context Protocol) desplegado como Azure Function.

El servidor expone herramientas (tools) que un agente de IA puede invocar automáticamente usando Azure OpenAI como modelo de lenguaje.


¿Qué es MCP?

Model Context Protocol es un protocolo estándar que permite a los LLMs (modelos de lenguaje) llamar a funciones externas de forma estructurada. El agente decide qué herramienta usar según la pregunta del usuario y recibe el resultado para formular su respuesta.

Usuario → Agente (Azure OpenAI) → Servidor MCP → Tool (función Python) → Respuesta

Estructura del proyecto

mcppppp/
├── function_app.py          # Punto de entrada de Azure Functions
├── host.json                # Configuración del runtime de Azure Functions
├── local.settings.json      # Variables de entorno locales (no subir a git)
├── requirements.txt         # Dependencias del servidor
├── server/
│   └── mcp_server.py        # Definición de las tools del servidor MCP
└── client/
    ├── main.py              # Agente que usa el servidor MCP
    └── .env                 # Credenciales del cliente (no subir a git)

Herramientas disponibles en el servidor MCP

Tool ¿Qué hace? Parámetros
add Suma dos números enteros a: int, b: int
get_weather Devuelve el tiempo de una ciudad (simulado) city: str
get_current_datetime Fecha y hora UTC del servidor
convert_temperature Convierte entre Celsius, Fahrenheit y Kelvin value: float, from_unit: str, to_unit: str
calculate_percentage Calcula el % de una parte sobre un total part: float, total: float

Requisitos previos

Antes de empezar necesitas tener instalado:

  • Python 3.11 o superiordescargar
  • Git — para clonar el repositorio
  • Credenciales de Azure OpenAI (endpoint, API key y nombre del deployment)

Instalación paso a paso

1. Clonar el repositorio

git clone <url-del-repositorio>
cd mcppppp

2. Crear el entorno virtual e instalar dependencias

# Crear entorno virtual
python -m venv .venv

# Activar el entorno virtual
source .venv/bin/activate        # Linux / macOS
# .venv\Scripts\activate         # Windows (PowerShell)

# Instalar las dependencias del servidor y del cliente
pip install -r requirements.txt
pip install agent-framework agent-framework-openai python-dotenv

3. Configurar las credenciales del cliente

Edita el fichero client/.env con tus credenciales de Azure OpenAI:

AZURE_OPENAI_ENDPOINT=https://TU-RECURSO.openai.azure.com/
AZURE_OPENAI_API_KEY=TU_API_KEY
AZURE_OPENAI_CHAT_MODEL=gpt-4o

# URL del servidor MCP (en local no hace falta cambiarla)
MCP_URL=http://localhost:7071/mcp

Importante: nunca subas el fichero .env a GitHub. Contiene credenciales privadas.


Cómo ejecutar el proyecto en local

Necesitas dos terminales abiertas al mismo tiempo.

Terminal 1 — Arrancar el servidor MCP

# Asegúrate de estar en la raíz del proyecto con el venv activo
source .venv/bin/activate

.venv/bin/uvicorn function_app:asgi_app --port 7071

Verás algo así cuando esté listo:

INFO:     Started server process [12345]
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:7071

El servidor MCP queda disponible en: http://localhost:7071/mcp

Terminal 2 — Ejecutar el agente (cliente)

# Entrar a la carpeta client
cd client

# Ejecutar el agente
../.venv/bin/python main.py

Resultado esperado

────────────────────────────────────────────────────────────
Consulta: Calcula 15 + 27 usando las herramientas disponibles.
────────────────────────────────────────────────────────────
Respuesta: El resultado de sumar 15 + 27 es 42.

────────────────────────────────────────────────────────────
Consulta: ¿Qué tiempo hace en Oslo, Noruega?
────────────────────────────────────────────────────────────
Respuesta: En Oslo hace 22°C y el cielo está despejado.

────────────────────────────────────────────────────────────
Consulta: Convierte 100 grados Fahrenheit a Celsius.
────────────────────────────────────────────────────────────
Respuesta: 100 °F equivalen a aproximadamente 37.78 °C.

Solución de problemas comunes

Error: address already in use (puerto 7071 ocupado)

# Liberar el puerto
fuser -k 7071/tcp
# Volver a arrancar el servidor

Error: No module named 'mcp'

# Asegúrate de tener el venv activado antes de instalar
source .venv/bin/activate
pip install -r requirements.txt

Error: 401 Unauthorized al llamar a Azure OpenAI

Revisa que AZURE_OPENAI_API_KEY en client/.env sea correcta y que el deployment AZURE_OPENAI_CHAT_MODEL exista en tu recurso de Azure.


Cómo funciona por dentro

client/main.py
  └─ Agent (Azure OpenAI)
       └─ MCPStreamableHTTPTool  ──POST──▶  http://localhost:7071/mcp
                                              └─ function_app.py (ASGI)
                                                   └─ server/mcp_server.py
                                                        ├─ add()
                                                        ├─ get_weather()
                                                        ├─ get_current_datetime()
                                                        ├─ convert_temperature()
                                                        └─ calculate_percentage()
  1. El agente recibe una pregunta en lenguaje natural.
  2. Azure OpenAI decide qué tool del servidor MCP invocar.
  3. El servidor ejecuta la función Python correspondiente.
  4. El resultado vuelve al agente, que formula la respuesta final.

Despliegue en Azure (opcional)

Si quieres desplegar el servidor en la nube:

# 1. Instalar Azure Functions Core Tools
# https://learn.microsoft.com/azure/azure-functions/functions-run-local

# 2. Iniciar sesión en Azure
az login

# 3. Crear la Function App (solo la primera vez)
az group create --name mcp-rg --location westeurope
az storage account create --name mcpstorage<sufijo> --location westeurope \
  --resource-group mcp-rg --sku Standard_LRS
az functionapp create --resource-group mcp-rg \
  --consumption-plan-location westeurope \
  --runtime python --runtime-version 3.11 --functions-version 4 \
  --name <NOMBRE_FUNCTION_APP> \
  --storage-account mcpstorage<sufijo> --os-type linux

# 4. Desplegar el código
func azure functionapp publish <NOMBRE_FUNCTION_APP>

Tras el despliegue, cambia MCP_URL en client/.env:

MCP_URL=https://<NOMBRE_FUNCTION_APP>.azurewebsites.net/mcp

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选