?
Guideavancé

MCP Servers : connecter Claude à vos outils

Créer et configurer des serveurs MCP pour étendre les capacités de Claude Code.

Qu'est-ce que MCP ?

Le Model Context Protocol (MCP) est un protocole ouvert créé par Anthropic qui permet à Claude Code de se connecter à des services externes. Un serveur MCP expose des "outils" (tools) que Claude peut appeler pour interagir avec des APIs, bases de données, ou tout autre système.

Architecture

Claude Code <-> Client MCP <-> Serveur MCP <-> Service externe

Le protocole utilise JSON-RPC sur stdio ou SSE (Server-Sent Events). Claude Code agit comme client MCP et peut se connecter à plusieurs serveurs simultanément.

Configuration

Les serveurs MCP se configurent dans .claude/settings.json :

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_..."
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://..."
      }
    }
  }
}

Serveurs MCP populaires

  • GitHub : Créer des issues, PRs, lire des repos
  • PostgreSQL : Requêter et modifier des bases de données
  • Filesystem : Accès contrôlé à des répertoires spécifiques
  • Slack : Envoyer des messages, lire des canaux
  • Google Drive : Lire et créer des documents
  • Brave Search : Recherche web

Créer un serveur MCP custom

Un serveur MCP minimal en TypeScript :

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "mon-serveur", version: "1.0.0" });

server.tool(
  "get-weather",
  "Obtenir la météo d'une ville",
  { city: z.string() },
  async ({ city }) => {
    const data = await fetchWeather(city);
    return { content: [{ type: "text", text: JSON.stringify(data) }] };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

Bonnes pratiques

  • Principe du moindre privilège : N'exposez que les outils nécessaires
  • Validation des entrées : Utilisez zod ou un schéma strict pour chaque outil
  • Gestion d'erreurs : Retournez des messages d'erreur clairs
  • Documentation : Décrivez chaque outil clairement pour que Claude comprenne quand l'utiliser
  • Variables d'environnement : Ne hardcodez jamais les credentials

Scope de configuration

  • Projet (.claude/settings.json) : Partagé avec l'équipe, committé dans git
  • Utilisateur (~/.claude/settings.json) : Personnel, tokens et credentials privés

Sources

claude-codeMCPintégration