Servidor MCP en Recuperación de agentes en Foundry local

La plataforma Recuperación de agentes incluye un servidor integrado del Protocolo de contexto del modelo (MCP) que expone capacidades de recuperación RAG como herramientas. Cualquier agente o cliente de IA compatible con MCP puede conectarse para buscar entre las colecciones incorporadas.

Importante

Recuperación de agentes en Foundry local está actualmente en VERSIÓN PRELIMINAR. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

¿Qué es el Protocolo de Contexto Modelo?

MCP es un estándar abierto para conectar agentes de inteligencia artificial a herramientas externas y orígenes de datos. Define un protocolo basado en JSON-RPC 2.0 donde:

  • Un servidor expone herramientas (funciones a las que pueden llamar los agentes) y recursos (puntos de conexión de datos).
  • Un cliente detecta e invoca esas herramientas.

Esta arquitectura plug-and-play permite a los agentes conectarse a nuevos orígenes de datos sin modificaciones de código. Simplemente registre un nuevo servidor MCP.

Implementación del servidor MCP de recuperación agéntica

El servidor indexed-sources-mcp-server MCP integrado se ejecuta en el puerto 8080 y expone herramientas de búsqueda que consultan las colecciones ingeridas. También admite el consumo de servidores MCP externos registrándolos como orígenes de conocimiento, lo que permite a los agentes acceder a herramientas y datos desde cualquier servicio compatible con MCP.

Detalles del protocolo

El servidor MCP usa las siguientes especificaciones de protocolo:

Propiedad Value
Transporte MCP a través de HTTP transmisible
Punto final POST /edgeai/mcp
Puerto 8080
Formato de mensaje JSON-RPC 2.0

Todas las llamadas a herramientas pasan por un único punto de conexión. El method campo del cuerpo de JSON-RPC determina la operación (initialize, tools/list, tools/call).

Herramientas de búsqueda integradas

El servidor MCP integrado expone seis herramientas de búsqueda que consultan las colecciones ingeridas:

Herramienta de búsqueda Description Más adecuado para
search_hybrid Búsqueda combinada con vectores densos y dispersos, con reordenación Búsqueda de uso general predeterminada (recomendada)
search_vector Búsqueda vectorial semántica pura (vectores densos) Cuando las palabras de consulta difieren del lenguaje de documento
search_text Búsqueda dispersa/de palabras clave mediante representaciones aprendidas de BGE-M3 Términos exactos, códigos, nombres de producto
search_image Búsqueda de imágenes mediante representaciones vectoriales visuales Búsqueda de imágenes por descripción de texto
search_multimodal Búsqueda híbrida en paralelo + búsqueda por imágenes Consultas que necesitan resultados de texto e imagen
get_available_collections Enumera las colecciones accesibles para el usuario autenticado. Descubrimiento, selección de colección

Parámetros comunes

Todas las herramientas de búsqueda (excepto get_available_collections) aceptan:

Parámetro Tipo Predeterminado Description
query string (required) Buscar texto de consulta
collection_names list[string] ["edgeragapp"] Colecciones para buscar
top_n integer 5 Número de resultados (1–50)
strictness integer 1 Umbral de relevancia (0–5). 0 devuelve todos los resultados; Valores más altos filtran de forma más agresiva
filters string null Expresión de filtro booleano milvus (por ejemplo, file_path like "%manual%")

Puede consultar varias colecciones en una sola solicitud pasando varios nombres en collection_names. Los resultados se devuelven con clave por nombre de colección:

{
  "my-docs": { "results": [...], "metadata": {...} },
  "other-docs": { "results": [...], "metadata": {...} }
}

Conexión al servidor MCP

Puede conectarse al servidor MCP mediante cualquier cliente compatible con MCP. El proceso de conexión implica un establecimiento de sesión en el que el cliente inicializa una sesión, enumera las herramientas disponibles y, a continuación, invoca las herramientas según sea necesario.

Desde un cliente compatible con MCP

La mayoría de los clientes MCP (por ejemplo, Claude Desktop, agentes personalizados) controlan automáticamente el ciclo de vida de la sesión. Configúrelos mediante URL: https://<cluster-domain>/edgeai/mcp.

Conexión manual mediante curl

MCP requiere un protocolo de enlace de sesión con estos tres pasos:

# 1. Initialize — capture the Mcp-Session-Id from response headers
curl -si -X POST https://<cluster-domain>/edgeai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'

# 2. List available tools
curl -s -X POST https://<cluster-domain>/edgeai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: <session-id-from-step-1>" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. Call a tool
curl -s -X POST https://<cluster-domain>/edgeai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: <session-id-from-step-1>" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_hybrid","arguments":{"query":"How do I reset my device?","top_n":5}}}'

Redirección de puertos (desarrollo)

También puede conectarse al servidor MCP mediante el reenvío de puertos a su equipo local. Este método es útil para el desarrollo y las pruebas con herramientas como Postman o curl sin necesidad de administrar tokens de autenticación.

kubectl port-forward deployment/indexed-sources-mcp-server-deployment 8080:8080 -n arc-rag
# Then use http://localhost:8080/edgeai/mcp (no Authorization header needed)

Registro de servidores MCP externos

Los agentes de Agentic Retrieval pueden conectarse a servidores externos MCP registrándolos como fuentes de conocimiento con kind: remote_mcp. Este registro permite a los agentes acceder a herramientas y datos desde cualquier servicio compatible con MCP.

Use el siguiente comando para crear un origen de conocimiento para el servidor MCP externo:

curl -X POST https://<cluster-domain>/edgeai/knowledgesources \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "name": "my-external-mcp",
    "kind": "remote_mcp",
    "auth_type": "unauthenticated",
    "description": "External MCP server for custom tools",
    "remote_mcp_parameters": {
      "server_url": "https://external-mcp-server.example.com/mcp",
      "server_label": "my-external-server"
    }
  }'

Autenticación y seguridad

Puede conectarse al servidor MCP mediante la autenticación de token de portador o sin autenticación (para el reenvío de puertos).

Control de acceso

Contexto Autenticación
Acceso externo (entrada) Token de portador requerido. Autenticación forzada solo en tools/call; paso a través de initialize y tools/list.
Redirección de puertos No se requiere autenticación.
Reenvío de tokens El token de portador se reenvía a los servicios descendentes para cumplimiento de RBAC en el acceso a la colección.

Tipos de autenticación admitidos para servidores MCP externos

Tipo de autenticación Description
microsoft_entra_id Reenvía el token JWT del autor de la llamada al servidor MCP.
unauthenticated No es necesaria la autenticación del servidor MCP.

Advertencia

Consideración de seguridad (GAP-02): Cuando los agentes se conectan a servidores MCP externos, es posible que el token de portador del autor de la llamada se reenvíe al servidor externo. Asegúrese de confiar en todos los servidores MCP externos registrados. Se está revisando este comportamiento para reforzarlo.