Créez un workflow d'enrichissement de leads utilisant MCP en configurant Scavio comme serveur de recherche dans Claude Desktop ou Claude Code, puis en demandant à l'agent de rechercher et d'enrichir les enregistrements d'entreprises à partir d'un CSV ou d'une liste. L'approche MCP élimine le besoin de code personnalisé — vous décrivez les données dont vous avez besoin et l'agent exécute les recherches, analyse les résultats et formate la sortie enrichie. Ce tutoriel configure le MCP, conçoit le prompt d'enrichissement et montre comment traiter un lot de leads.
Prérequis
- Claude Desktop ou Claude Code installé
- Une clé API Scavio provenant de scavio.dev
- Un CSV ou une liste de noms d'entreprises à enrichir
- Une familiarité de base avec la configuration du serveur MCP
Parcours
Étape 1: Configurer Scavio en tant que serveur MCP
Ajoutez le point de terminaison MCP de Scavio à votre configuration Claude Desktop ou Claude Code pour que l'agent puisse appeler les outils de recherche.
// .mcp.json or claude_desktop_config.json:
{
"mcpServers": {
"scavio": {
"url": "https://mcp.scavio.dev/mcp",
"headers": { "x-api-key": "your_scavio_api_key" }
}
}
}Étape 2: Concevoir le prompt d'enrichissement
Créez un prompt structuré qui indique précisément à l'agent quels champs renseigner pour chaque entreprise.
# Enrichment prompt for Claude:
ENRICHMENT_PROMPT = """
For each company in the list below, search Google to find:
1. Company domain (official website URL)
2. One-line description (what they do)
3. Founding year
4. Estimated company size (employees)
5. Recent funding (if any, from last 2 years)
6. Key technology signals (languages, frameworks, cloud)
Output as a JSON array with fields:
{domain, description, founded, size, funding, tech_signals}
Companies to enrich:
- Vercel
- Supabase
- Resend
- Linear
"""Étape 3: Traiter les résultats par lot
Une fois que l'agent renvoie les données enrichies, validez la sortie et enregistrez-la pour votre CRM ou votre outil de prospection.
import json
def validate_enrichment(data: list) -> list:
valid = []
for record in data:
if record.get('domain') and record.get('description'):
valid.append(record)
else:
print(f'Incomplete record: {record}')
return valid
def save_enriched(records: list, output_path: str = 'enriched_leads.json'):
with open(output_path, 'w') as f:
json.dump(records, f, indent=2)
print(f'Saved {len(records)} enriched leads to {output_path}')
# After Claude returns the enriched JSON:
# enriched = json.loads(claude_response)
# valid = validate_enrichment(enriched)
# save_enriched(valid)Étape 4: Automatiser avec l'API pour les lots plus volumineux
Pour les lots de plus de 10 entreprises, utilisez directement l'API Scavio pour éviter les limites de débit MCP et traiter en parallèle.
import requests, os
from concurrent.futures import ThreadPoolExecutor
API_KEY = os.environ['SCAVIO_API_KEY']
def enrich_company_api(name: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': f'{name} company about funding tech stack'}, timeout=15)
results = resp.json().get('organic_results', [])
return {
'name': name,
'domain': results[0].get('link', '').split('/')[2] if results else '',
'snippets': [r.get('snippet', '') for r in results[:3]],
}
companies = ['Vercel', 'Supabase', 'Resend', 'Linear']
with ThreadPoolExecutor(max_workers=3) as pool:
enriched = list(pool.map(enrich_company_api, companies))
for e in enriched:
print(f'{e["name"]}: {e["domain"]}')Exemple Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def enrich(name):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{name} company about'}).json()
results = data.get('organic_results', [])
return {'name': name, 'domain': results[0].get('link', '').split('/')[2] if results else '', 'snippet': results[0].get('snippet', '') if results else ''}
for c in ['Vercel', 'Supabase', 'Linear']:
print(enrich(c))Exemple JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function enrich(name) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({platform: 'google', query: `${name} company about`})
});
const results = (await r.json()).organic_results || [];
return {name, domain: results[0]?.link ? new URL(results[0].link).hostname : '', snippet: results[0]?.snippet || ''};
}
Promise.all(['Vercel', 'Supabase'].map(enrich)).then(console.log);Sortie attendue
A JSON array of enriched lead records with domain, description, funding data, and tech signals for each company, ready for CRM import.