ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire un agent MCP sécurisé pour le système de fichiers et Git
Tutoriel

Comment construire un agent MCP sécurisé pour le système de fichiers et Git

Construisez un agent MCP qui lit en toute sécurité les fichiers et gère les dépôts Git. Inclut le sandboxing, la validation des chemins et la génération de code fondée sur la recherche.

Obtenez une clé API gratuiteDocumentation API

Les outils MCP pour le système de fichiers et Git donnent aux agents IA un accès direct à votre code source, ce qui est puissant mais dangereux sans garde-fous. Ce tutoriel construit un agent sécurisé capable de lire des fichiers, rechercher dans les bases de code et gérer les opérations Git tout en imposant le sandboxing des chemins, des valeurs par défaut en lecture seule et des listes d'opérations autorisées. Le grounding par recherche garantit que tout code généré s'appuie sur la documentation actuelle plutôt que sur des données d'entraînement obsolètes.

Prérequis

  • Claude Code installé
  • Node.js 18+ installé
  • Un dépôt Git avec lequel travailler
  • Une clé API Scavio pour le grounding par recherche

Parcours

Étape 1: Configurer les MCP système de fichiers et Git avec sandboxing

Mettez en place les serveurs MCP avec des chemins restreints. Le serveur système de fichiers n'accède qu'à un répertoire autorisé ; le serveur Git n'opère que sur des dépôts spécifiés.

Python
import json
from pathlib import Path

mcp_config = {
    'mcpServers': {
        'filesystem': {
            'command': 'npx',
            'args': ['-y', '@anthropic/mcp-filesystem',
                     '--allowed-dir', '/home/user/projects',
                     '--read-only'],
            'env': {}
        },
        'git': {
            'command': 'npx',
            'args': ['-y', '@anthropic/mcp-git',
                     '--repo-path', '/home/user/projects/my-repo',
                     '--allow-operations', 'status,log,diff,branch'],
            'env': {}
        }
    }
}

Path('.mcp.json').write_text(json.dumps(mcp_config, indent=2))
print('Filesystem MCP: read-only, sandboxed to /home/user/projects')
print('Git MCP: status, log, diff, branch only (no push, no force)')

Étape 2: Construire un middleware de validation des chemins

Ajoutez une couche de validation qui rejette toute tentative de traversée de chemin avant qu'elle n'atteigne le serveur MCP du système de fichiers.

Python
import os

ALLOWED_ROOT = '/home/user/projects'
BLOCKED_PATTERNS = ['.env', '.ssh', 'credentials', 'secrets', '.git/config']

def validate_path(requested_path: str) -> dict:
    resolved = os.path.realpath(requested_path)
    # Check sandbox
    if not resolved.startswith(ALLOWED_ROOT):
        return {'allowed': False, 'reason': f'Path escapes sandbox: {resolved}'}
    # Check blocked patterns
    for pattern in BLOCKED_PATTERNS:
        if pattern in resolved.lower():
            return {'allowed': False, 'reason': f'Blocked pattern: {pattern}'}
    # Check symlink attacks
    if os.path.islink(requested_path):
        target = os.readlink(requested_path)
        if not os.path.realpath(target).startswith(ALLOWED_ROOT):
            return {'allowed': False, 'reason': f'Symlink escapes sandbox'}
    return {'allowed': True, 'resolved': resolved}

# Test cases
test_paths = [
    '/home/user/projects/src/main.py',      # allowed
    '/home/user/projects/../.ssh/id_rsa',    # blocked
    '/home/user/projects/.env',              # blocked
    '/etc/passwd',                           # blocked
]

for p in test_paths:
    result = validate_path(p)
    status = 'ALLOWED' if result['allowed'] else f'BLOCKED ({result["reason"]})'
    print(f'  {p}: {status}')

Étape 3: Ajouter une assistance de code fondée sur la recherche

Lorsque l'agent doit générer ou modifier du code, recherchez d'abord la documentation actuelle pour éviter d'halluciner des API obsolètes.

Python
import requests

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']

def ground_code_generation(language: str, task: str) -> str:
    """Search for current docs before generating code."""
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': f'{language} {task} documentation 2026',
              'country_code': 'us', 'num_results': 3})
    results = resp.json().get('organic_results', [])
    context = '\n'.join(f'- {r["title"]}: {r.get("snippet", "")}' for r in results)
    return context

# Example: before generating Next.js code, check current API
context = ground_code_generation('Next.js', 'app router server components')
print('Grounding context for code generation:')
print(context)
print(f'\nCost: $0.005')

Exemple Python

Python
import os, json, requests
from pathlib import Path

ALLOWED_ROOT = '/home/user/projects'
SCAVIO_KEY = os.environ['SCAVIO_API_KEY']

def validate_path(path):
    resolved = os.path.realpath(path)
    if not resolved.startswith(ALLOWED_ROOT):
        return False
    blocked = ['.env', '.ssh', 'credentials', 'secrets']
    return not any(b in resolved.lower() for b in blocked)

def search_docs(query):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us', 'num_results': 3})
    return [r.get('snippet', '') for r in resp.json().get('organic_results', [])]

print(validate_path('/home/user/projects/src/main.py'))  # True
print(validate_path('/etc/passwd'))  # False
print(search_docs('python pathlib best practices 2026')[0][:80])

Exemple JavaScript

JavaScript
const ALLOWED_ROOT = '/home/user/projects';
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const path = require('path');

function validatePath(p) {
  const resolved = path.resolve(p);
  if (!resolved.startsWith(ALLOWED_ROOT)) return false;
  const blocked = ['.env', '.ssh', 'credentials'];
  return !blocked.some(b => resolved.toLowerCase().includes(b));
}

async function searchDocs(query) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query, country_code: 'us', num_results: 3 })
  });
  return (await resp.json()).organic_results?.map(r => r.snippet) || [];
}

console.log(validatePath('/home/user/projects/src/main.py')); // true
console.log(validatePath('/etc/passwd')); // false

Sortie attendue

JSON
  /home/user/projects/src/main.py: ALLOWED
  /home/user/projects/../.ssh/id_rsa: BLOCKED (Path escapes sandbox)
  /home/user/projects/.env: BLOCKED (Blocked pattern: .env)
  /etc/passwd: BLOCKED (Path escapes sandbox)

Grounding context for code generation:
- Next.js App Router Docs: Server Components run on the server...
- Vercel Blog: Next.js 16 App Router updates...
Cost: $0.005

Tutoriels associés

  • Comment construire un serveur MCP à partir d'une spécification Swagger
  • Comment ajouter Supabase MCP pour l'analyse de données basée sur l'IA
  • Comment sécuriser les outils d'agent financier MCP

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Claude Code installé. Node.js 18+ installé. Un dépôt Git avec lequel travailler. Une clé API Scavio pour le grounding par recherche. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Best Of

Meilleurs outils de recherche MCP pour Claude Code en 2026

Read more
Best Of

Meilleure API de recherche pour Claude Code en 2026

Read more
Use Case

Claude Code - Construction rapide d'agents (pattern 2 jours)

Read more
Use Case

Recherche dual-agent Claude Code + Codex

Read more
Workflow

Recherche Web Claude Code via Scavio MCP

Read more
Workflow

Sécuriser la recherche des agents financiers via le workflow MCP

Read more

Commencer

Construisez un agent MCP qui lit en toute sécurité les fichiers et gère les dépôts Git. Inclut le sandboxing, la validation des chemins et la génération de code fondée sur la recherche.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité