Le problème
Les serveurs MCP (Model Context Protocol) ont besoin de clés API pour appeler des services externes, mais la gestion sécurisée de ces secrets dans les déploiements MCP est un problème non résolu pour la plupart des équipes. Les erreurs courantes incluent le codage en dur des clés dans le code du serveur MCP, leur passage comme variables d'environnement en texte clair dans Docker, ou leur stockage dans des fichiers de configuration versionnés. Ces pratiques créent des vulnérabilités de sécurité que les équipes de conformité signalent lors des revues, bloquant les déploiements MCP en production.
La solution Scavio
Implémentez un modèle de gestion sécurisée des secrets MCP utilisant des variables d'environnement injectées à l'exécution depuis un gestionnaire de secrets (AWS Secrets Manager, HashiCorp Vault, ou même un fichier .env local exclu de git). Le serveur MCP lit les clés API depuis les variables d'environnement, jamais depuis le code ou les fichiers de configuration. Pour le serveur MCP de Scavio sur mcp.scavio.dev/mcp, la clé API est passée comme en-tête, la gardant complètement hors de la base de code du serveur MCP.
Avant
Avant : Une équipe avait des clés API codées en dur dans 4 configurations de serveur MCP commit sur GitHub. Un audit de sécurité a signalé les 4. La rotation des clés compromises a pris 2 jours et a cassé 3 intégrations en aval. Le déploiement MCP a été bloqué en production pendant 3 semaines pendant la remédiation.
Après
Après : Tous les secrets MCP sont stockés dans AWS Secrets Manager et injectés comme variables d'environnement au démarrage du conteneur. La rotation des clés est automatisée avec zéro temps d'arrêt. L'audit de sécurité a été validé dès la première revue. Les serveurs MCP ont atteint la production en 1 semaine.
À qui cela s'adresse
Ingénieurs DevOps et équipes de sécurité déployant des serveurs MCP en production. Toute personne ayant échoué à un audit de sécurité à cause de clés API codées en dur dans l'infrastructure agent.
Avantages clés
- Zéro secret codé en dur dans le code du serveur MCP ou les fichiers de configuration
- Rotation automatisée des clés sans nécessité de redémarrer le serveur MCP
- Réussir les audits de sécurité dès la première revue avec une gestion documentée des secrets
- L'injection de variables d'environnement fonctionne avec Docker, K8s et serverless
- La clé API Scavio reste dans les en-têtes, jamais dans le code source du serveur MCP
Exemple Python
import os
import requests
# Secret injected via environment variable at runtime
# Never hardcode: API_KEY = "sk-abc123" # DO NOT DO THIS
API_KEY = os.environ["SCAVIO_API_KEY"]
def mcp_search_handler(query: str, platform: str = "google") -> dict:
"""MCP tool handler that reads API key from environment."""
r = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": platform, "query": query},
timeout=10,
)
return r.json()
# For AWS Secrets Manager rotation:
import json
try:
import boto3
client = boto3.client("secretsmanager")
secret = json.loads(client.get_secret_value(SecretId="scavio-api-key")["SecretString"])
API_KEY = secret["api_key"]
except ImportError:
pass # Fall back to env var in non-AWS environments
result = mcp_search_handler("secure mcp deployment patterns")
print(f"Results: {len(result.get("organic", []))}")Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
if (!API_KEY) throw new Error("SCAVIO_API_KEY environment variable is required");
async function mcpSearchHandler(query, platform = "google") {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform, query }),
});
return res.json();
}
// For secret rotation without restart:
async function getRotatedKey() {
// AWS Secrets Manager, Vault, or any secret store
// Cache with TTL to avoid per-request lookups
const cached = globalThis.__scavioKeyCache;
if (cached && Date.now() - cached.ts < 300000) return cached.key;
// Fetch fresh key from secret manager here
const freshKey = process.env.SCAVIO_API_KEY; // placeholder
globalThis.__scavioKeyCache = { key: freshKey, ts: Date.now() };
return freshKey;
}
const result = await mcpSearchHandler("secure mcp deployment patterns");
console.log(`Results: ${(result.organic || []).length}`);Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA
YouTube
Recherche de vidéos avec transcriptions et métadonnées
Amazon
Recherche de produits avec prix, notes et avis