Associer Agents IA et MCP pour accéder au monde extérieur

Fait partie de la série Agents IA et serveur MCP au service du web agentique

Quand nous avons utilisé notre MCP manuellement, nous avons cliqué sur un bouton appelé "Liste des outils". Cela nous permet de voir tous les outils disponibles que le MCP peut fournir.

Et si notre Agent IA pouvait faire cela automatiquement au démarrage et injecter les outils dans sa propriété tools ? J'adore cette idée !

Heureusement, l'AI SDK propose un moyen de se connecter à un serveur MCP, de lister ses outils et de les injecter dans la propriété tools de l'Agent IA.

Avant cela, nous devons ajouter une configuration d'exécution Nitro pour indiquer l'URL du MCP.

ts
import { defineNitroConfig } from 'nitropack/config'

export default defineNitroConfig({
  runtimeConfig: {
    openAiApiKey: '',
    mcpEndpoint: '',
  },
  // ...
})

Dans votre fichier .env, définissez la variable MCP_ENDPOINT vers l'URL du MCP :

ini
MCP_ENDPOINT=http://localhost:3000/mcp

Ensuite, nous pouvons connecter notre Agent IA au MCP en injectant les outils du MCP dans la propriété tools de l'agent.

ts
import { createOpenAI } from '@ai-sdk/openai'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
import { convertToModelMessages, experimental_createMCPClient, stepCountIs, streamText } from 'ai'
import { defineEventHandler, defineLazyEventHandler, readBody } from 'h3'
import { useRuntimeConfig } from 'nitropack/runtime'

export default defineLazyEventHandler(() => {
  const runtimeConfig = useRuntimeConfig()

  const model = createOpenAI({
    apiKey: runtimeConfig.openAiApiKey,
  })

  return defineEventHandler(async (event) => {
    const { messages } = await readBody(event)

    const httpTransport = new StreamableHTTPClientTransport(
      new URL(runtimeConfig.mcpEndpoint)
    )
    const httpClient = await experimental_createMCPClient({
      transport: httpTransport
    })
    const tools = await httpClient.tools()

    return streamText({
      model: model('gpt-5-nano'),
      system: `You are a helpful assistant. You can use the tool to add two numbers together.`,
      stopWhen: stepCountIs(2),
      tools,
      messages: convertToModelMessages(messages),
    }).toUIMessageStreamResponse()
  })
})

La ligne la plus intéressante est const tools = await httpClient.tools(). Elle récupère la liste des outils depuis le MCP, comme lorsque nous avons cliqué sur "Liste des outils", et les injecte dans la propriété tools de l'Agent IA. Grâce à experimental_createMCPClient, l'AI SDK appellera les outils via le client HTTP lorsque l'IA en fera la demande.

Note

Sous le capot, ce ne sont que quelques requêtes HTTP vers le serveur MCP en utilisant le transport HTTP officiel basé sur fetch.

Comme prévu, il n'y a aucune différence par rapport à l'utilisation d'outils directement avec le MCP.

L'Agent IA utilisant un outil et générant une réponse.

Nous pouvons désormais améliorer facilement le MCP sans modifier le code de l'Agent IA, permettant à tout le monde d'utiliser le MCP dans sa propre application IA pour interagir avec nos outils, ou même d'ajouter un serveur MCP externe à notre Agent IA.

J'adore !

Pd

Merci de me lire ! Je m'appelle Estéban, et j'adore écrire sur le développement web et le parcours humain qui l'entoure.

Je code depuis plusieurs années maintenant, et j'apprends encore de nouvelles choses chaque jour. J'aime partager mes connaissances avec les autres, car j'aurais aimé avoir accès à des ressources aussi claires et complètes lorsque j'ai commencé à apprendre la programmation.

Si vous avez des questions ou souhaitez discuter, n'hésitez pas à commenter ci-dessous ou à me contacter sur Bluesky, X, et LinkedIn.

J'espère que vous avez apprécié cet article et appris quelque chose de nouveau. N'hésitez pas à le partager avec vos amis ou sur les réseaux sociaux, et laissez un commentaire ou une réaction ci-dessous—cela me ferait très plaisir ! Si vous souhaitez soutenir mon travail, vous pouvez me sponsoriser sur GitHub !

Continuer la lectureUne application IA puissante réalisée avec Nitro et Nuxt UI

Réactions

Discussions

Ajouter un commentaire

Vous devez être connecté pour accéder à cette fonctionnalité.