Aller au contenu principal

Implémenter un client MCP

Maintenant que notre serveur MCP fonctionne, il est temps de construire le côté client. Le client est ce qui permet à notre application de communiquer avec le serveur MCP et d’accéder à ses fonctionnalités.

Les deux méthodes essentielles

Notre client doit implémenter deux méthodes clés : list_tools() et call_tool().

list_tools()

async def list_tools(self) -> list[types.Tool]:
    result = await self.session().list_tools()
    return result.tools

call_tool()

async def call_tool(
    self, tool_name: str, tool_input: dict
) -> types.CallToolResult | None:
    return await self.session().call_tool(tool_name, tool_input)

Tester le client

async with MCPClient(
    command="uv", args=["run", "mcp_server.py"]
) as client:
    result = await client.list_tools()
    print(result)

Flux complet de l’application

Quand un utilisateur pose une question sur un document :

1. Notre code utilise le client pour obtenir les outils disponibles
2. Ces outils sont envoyés à Claude avec la question de l'utilisateur
3. Claude décide d'utiliser l'outil read_doc_contents
4. Notre code utilise le client pour exécuter cet outil
5. Le résultat est renvoyé à Claude
6. Claude formule sa réponse finale

Le client agit comme le pont entre la logique de notre application et le serveur MCP.