Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous connectez un serveur d’outils compatible MCP avec un espace de travail d’inférence KAITO (AI ToolChain Operator) sur Azure Kubernetes Service (AKS), ce qui permet d’appeler des outils sécurisés et modulaires pour les applications LLM. Vous allez également apprendre à valider l’appel d’outil de bout en bout en intégrant le modèle au serveur MCP et en surveillant l’exécution de la fonction en temps réel via des réponses structurées.
Protocole de contexte de modèle (MCP)
En tant qu’extension de l’inférence KAITO avec l’appel d’outils, le protocole MCP (Model Context Protocol) fournit un moyen standardisé de définir et d’exposer des outils pour les modèles de langage à appeler.
L’appel d’outils avec MCP facilite la connexion de modèles de langage à des services et actions réels sans couplage étroit de logique dans le modèle lui-même. Au lieu d’incorporer chaque fonction ou appel d’API dans votre code d’application, MCP vous permet d’exécuter un serveur d’outils autonome qui expose des outils ou API standardisés que n’importe quel LLM compatible peut utiliser. Cette séparation propre signifie que vous pouvez mettre à jour les outils indépendamment, les partager entre les modèles et les gérer comme n’importe quel autre microservice.
Vous avez la possibilité d'utiliser vos propres serveurs internes (BYO) ou de connecter des serveurs MCP externes de manière fluide avec l'espace de travail d'inférence KAITO sur AKS.
MCP avec l’opérateur de chaîne d’outils IA (KAITO) sur AKS
Vous pouvez inscrire un serveur MCP externe dans un format uniforme piloté par le schéma et le servir à n’importe quel point de terminaison d’inférence compatible, y compris ceux déployés avec un espace de travail KAITO. Cette approche permet de externaliser la logique métier, de découpler le comportement du modèle à partir de l’exécution de l’outil et de réutiliser les outils entre les agents, les modèles et les environnements.
Dans ce guide, vous inscrivez un serveur MCP prédéfini, testez les appels réels émis par un LLM s’exécutant dans un espace de travail d’inférence KAITO et confirmez l’intégralité du chemin d’exécution de l’outil (de l’invite de modèle à l’appel de fonction MCP) fonctionne comme prévu. Vous avez la possibilité de mettre à l’échelle ou d’échanger des outils indépendamment de votre modèle.
Prerequisites
- Cet article suppose que vous avez un cluster AKS existant. Si vous n’avez pas de cluster, créez-en un à l’aide d’Azure CLI, d’Azure PowerShell ou du portail Azure.
- Votre cluster AKS s’exécute sur Kubernetes version
1.33ou une version ultérieure. Pour mettre à niveau votre cluster, consultez Mettre à niveau votre cluster AKS. - Installez et configurez Azure CLI version
2.77.0ou ultérieure. Pour déterminer votre version, exécutezaz --version. Pour installer ou mettre à jour, consultez Installer Azure CLI. - Vous disposez du module complémentaire opérateur de chaîne d'outils AI activé sur votre cluster et d’un espace de travail KAITO avec prise en charge de l'appel d'outils déployé sur votre cluster.
- Un serveur MCP externe disponible à une URL accessible (par exemple
https://mcp.example.com/mcp) qui retourne un/list_toolsvalide et a un transportstream.
Se connecter à un serveur MCP de référence
Dans cet exemple, nous allons utiliser un serveur MCP time de référence, qui fournit des fonctionnalités de conversion de fuseau horaire et permet à LLMs d’obtenir des informations d’heure actuelles et d’effectuer des conversions à l’aide de noms standardisés.
Transférer le service d’inférence KAITO
Vérifiez que votre espace de travail KAITO est prêt et récupérez le point de terminaison du service d’inférence à l’aide de la
kubectl getcommande.kubectl get svc workspace‑phi‑4-mini-toolcallNote
La sortie peut être une
ClusterIPou une adresse interne. Vérifiez les ports sur lesquels le service écoute. L’API d’inférence KAITO par défaut est sur le port80pour HTTP. S’il s’agit uniquement d’un usage interne, vous pouvez effectuer un transfert de port localement.Transférer le service d’inférence à des fins de test à l’aide de la
kubectl port-forwardcommande.kubectl port-forward svc/workspace‑phi‑4‑mini-toolcall 8000:80Vérifiez le point de terminaison
/v1/modelspour confirmer quePhi-4-mini-instructLLM est disponible à l'aide decurl.curl http://localhost:8000/v1/modelsVotre
Phi-4-mini-instructAPI d’inférence compatible OpenAI sera disponible à l’adresse suivante :http://localhost:8000/v1/chat/completions
Vérifiez que le serveur MCP de référence est valide
Cet exemple part du principe que le serveur MCP time est hébergé sur https://mcp.example.com.
Vérifiez que le serveur retourne des outils en utilisant
curl.curl https://mcp.example.com/mcp/list_toolsSortie attendue :
{ "tools": [ { "name": "get_current_time", "description": "Get the current time in a specific timezone", "arguments": { "timezone": "string" } }, { "name": "convert_time", "description": "Convert time between two timezones", "arguments": { "source_timezone": "string", "time": "string", "target_timezone": "string" } } ] }
Connecter le serveur MCP à l’espace de travail KAITO à l’aide de la demande d’API
KAITO récupère automatiquement les définitions d’outils des outils déclarés dans les requêtes d’API ou inscrits dynamiquement dans le runtime d’inférence (vLLM + chargeur d’outils MCP).
Dans ce guide, nous créons un environnement virtuel Python pour envoyer une requête d'appel d'outil au point de terminaison d'inférence en utilisant la définition MCP Phi-4-mini-instruct et en pointant vers le serveur.
Définissez un nouveau répertoire de travail pour ce projet de test.
mkdir kaito-mcp cd kaito-mcpCréez un environnement virtuel Python et activez-le afin que tous les packages soient locaux pour votre projet de test.
uv venv source .venv/bin/activateUtilisez l’infrastructure Autogen open source pour tester la fonctionnalité appelant l’outil et installer ses dépendances :
uv pip install "autogen-ext[openai]" "autogen-agentchat" "autogen-ext[mcp]"Créez un fichier de test nommé
test.py:- Se connecte au serveur MCP Time et charge l’outil
get_current_time. - Se connecte à votre service d'inférence KAITO à l'adresse
localhost:8000. - Envoie un exemple de requête comme « Quelle heure est-il en Europe/Paris ? »
- Active la sélection automatique et l’appel de l’outil
get_current_time.
import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console from autogen_core import CancellationToken from autogen_core.models import ModelFamily, ModelInfo from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.tools.mcp import (StreamableHttpMcpToolAdapter, StreamableHttpServerParams) from openai import OpenAI async def main() -> None: # Create server params for the Time MCP service server_params = StreamableHttpServerParams( url="https://mcp.example.com/mcp", timeout=30.0, terminate_on_close=True, ) # Load the get_current_time tool from the server adapter = await StreamableHttpMcpToolAdapter.from_server_params(server_params, "get_current_time") # Fetch model name from KAITO's local OpenAI-compatible API model = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy").models.list().data[0].id model_info: ModelInfo = { "vision": False, "function_calling": True, "json_output": True, "family": ModelFamily.UNKNOWN, "structured_output": True, "multiple_system_messages": True, } # Connect to the KAITO inference workspace model_client = OpenAIChatCompletionClient( base_url="http://localhost:8000/v1", api_key="dummy", model=model, model_info=model_info ) # Define the assistant agent agent = AssistantAgent( name="time-assistant", model_client=model_client, tools=[adapter], system_message="You are a helpful assistant that can provide time information." ) # Run a test task that invokes the tool await Console( agent.run_stream( task="What time is it in Europe/Paris?", cancellation_token=CancellationToken() ) ) if __name__ == "__main__": asyncio.run(main())- Se connecte au serveur MCP Time et charge l’outil
Exécutez le script de test dans votre environnement virtuel.
uv run test.pyDans la sortie de ce test, vous devez vous attendre à ce qui suit :
- Le modèle génère correctement un appel d’outil à l’aide du nom MCP et des arguments attendus.
- Autogen envoie l’appel de l’outil au serveur MCP, le serveur MCP exécute la logique et retourne un résultat.
- Le
Phi-4-mini-instructLLM interprète la sortie de l’outil brut et fournit une réponse en langage naturel.
---------- TextMessage (user) ---------- What time is it in Europe/Paris? ---------- ToolCallRequestEvent (time-assistant) ---------- [FunctionCall(id='chatcmpl-tool-xxxx', arguments='{"timezone": "Europe/Paris"}', name='get_current_time')] ---------- ToolCallExecutionEvent (time-assistant) ---------- [FunctionExecutionResult(content='{"timezone":"Europe/Paris","datetime":"2025-09-17T17:43:05+02:00","is_dst":true}', name='get_current_time', call_id='chatcmpl-tool-xxxx', is_error=False)] ---------- ToolCallSummaryMessage (time-assistant) ---------- The current time in Europe/Paris is 5:43 PM (CEST).
Expérimenter avec d’autres outils MCP
Vous pouvez tester les différents outils disponibles pour ce serveur MCP, tels que convert_time.
Dans votre
test.pyfichier de l’étape précédente, mettez à jour votreadapterdéfinition en procédant comme suit :adapter = await StreamableHttpMcpToolAdapter.from_server_params(server_params, "convert_time")Mettez à jour votre
taskdéfinition pour appeler le nouvel outil. Par exemple:task="Convert 9:30 AM New York time to Tokyo time."Enregistrez et exécutez le script Python.
uv run test.pySortie attendue :
9:30 AM in New York is 10:30 PM in Tokyo.
Résolution des problèmes
Le tableau suivant décrit les erreurs courantes lors du test de l’inférence KAITO avec un serveur MCP externe et comment les résoudre :
| Erreur | Guide pratique pour résoudre |
|---|---|
Tool not found |
Vérifiez que le nom de votre outil correspond à celui déclaré dans /mcp/list_tools. |
401 Unauthorized |
Si votre serveur MCP nécessite un jeton d’authentification, veillez à effectuer une mise à jour server_params pour inclure des en-têtes avec le jeton d’authentification. |
connection refused |
Vérifiez que le service d’inférence KAITO est correctement transféré (par exemple, vers localhost:8000). |
tool call ignored |
Passez en revue la documentation relative à l'appel d'outils de KAITO afin de repérer les modèles vLLM qui prennent en charge cet appel d'outils. |
Étapes suivantes
Dans cet article, vous avez appris à connecter un espace de travail KAITO à un serveur MCP de référence externe à l’aide d’Autogen pour activer l’appel d’outils via l’API compatible OpenAI. Vous avez également validé que le LLM pouvait découvrir, appeler et intégrer des résultats à partir d’outils compatibles MCP sur AKS. Pour en savoir plus, consultez les ressources suivantes :
- Déployez et testez des appels d’outils avec le module complémentaire de l’opérateur de chaîne d’outils IA sur AKS.
- Appel d’outils KAITO et documentation officielle MCP.