Date : 28/01/2026 00:55 Status : EN ATTENTE VALIDATION
Créer un serveur MCP (Model Context Protocol) qui expose à Claude Code :
┌─────────────────────────────────────────────────────────────┐
│ Claude Code │
│ │ │
│ MCP Protocol │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ mcp-claude-tools │ │
│ │ (Node.js/TypeScript) │ │
│ └───────────┬─────────────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │claude-memory│ │connectors-api│ │ (futur) │ │
│ │ :5510 │ │ :5400 │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
Recherche sémantique dans la mémoire Claude.
{
name: "memory_search",
description: "Recherche sémantique dans la mémoire Claude (docs, tasks, backlog, scripts...)",
parameters: {
query: string, // La question/recherche
namespace?: string, // Filtre: claude, tasks, backlog, docs, scripts, all
limit?: number, // Nombre de résultats (défaut: 5)
threshold?: number // Seuil similarité 0.3-0.9 (défaut: 0.5)
}
}
Liste les namespaces disponibles et leurs stats.
{
name: "memory_namespaces",
description: "Liste les namespaces de la mémoire vectorielle avec stats"
}
Appelle n'importe quelle API via Connectors Hub.
{
name: "connector_fetch",
description: "Appelle une API externe via Connectors Hub",
parameters: {
connector: string, // github, proxmox, nextcloud, jellyfin, supabase, mailjet, ssh...
method: string, // GET, POST, PUT, DELETE
path: string, // Endpoint (ex: /user/repos, /api2/json/nodes)
instance?: string, // Instance spécifique si plusieurs
body?: object, // Corps de la requête (POST/PUT)
query?: object // Query params
}
}
Liste les connecteurs et instances disponibles.
{
name: "connector_list",
description: "Liste les connecteurs configurés et leurs instances"
}
Exécute une commande SSH via le connecteur SSH.
{
name: "ssh_execute",
description: "Exécute une commande sur un serveur distant via SSH",
parameters: {
instance: string, // Nom de l'instance SSH (ex: "PVE", "prod-portainer")
command: string // Commande à exécuter
}
}
Le MCP stockera le token d'accès après login initial :
// Config dans ~/.claude/mcp-claude-tools.json
{
"connectors": {
"baseUrl": "http://192.168.1.12:5400",
"email": "gouroubleu@gmail.com",
"accessToken": "eyJ..." // Stocké après premier login
},
"memory": {
"baseUrl": "http://192.168.1.12:5510"
}
}
/stock_8to/33800-stack/projects/mcp-claude-tools/
├── package.json
├── tsconfig.json
├── src/
│ ├── index.ts # Entry point MCP
│ ├── tools/
│ │ ├── memory.ts # memory_search, memory_namespaces
│ │ ├── connectors.ts # connector_fetch, connector_list
│ │ └── ssh.ts # ssh_execute
│ ├── clients/
│ │ ├── memory-client.ts # Client API claude-memory
│ │ └── connectors-client.ts # Client API connectors
│ └── config.ts # Gestion config
├── conf.gouroubleu.yml # Config déploiement (optionnel)
└── README.md
Après création, ajouter dans ~/.claude/settings.json :
{
"mcpServers": {
"claude-tools": {
"command": "node",
"args": ["/stock_8to/33800-stack/projects/mcp-claude-tools/dist/index.js"],
"env": {
"CONNECTORS_EMAIL": "gouroubleu@gmail.com",
"CONNECTORS_PASSWORD": "MyUlia75$w"
}
}
}
}
Claude: Je cherche comment configurer le VPN WireGuard...
→ Appel memory_search("configuration VPN WireGuard", namespace="all")
→ Retourne les chunks pertinents de memory/freebox.md, tasks/vpn-profiles...
Claude: Quel est le status des VMs Proxmox ?
→ Appel connector_fetch("proxmox", "GET", "/api2/json/nodes/pve/qemu")
→ Retourne la liste des VMs avec leur état
Claude: Redémarre le container connectors-api
→ Appel ssh_execute("prod-portainer", "docker restart connectors-api")
→ Retourne le résultat
En attente de ta validation pour commencer l'implémentation.