Chaque serveur MCP que vous connectez ajoute des descriptions d'outils à votre fenêtre de contexte LLM. Une configuration globale avec 10 serveurs peut ajouter plus de 5 000 tokens de descriptions d'outils à chaque requête, même lorsque l'agent a seulement besoin de la recherche. Les configurations MCP par projet chargent uniquement les outils nécessaires à chaque projet. Ce tutoriel montre comment configurer le serveur MCP Scavio (mcp.scavio.dev/mcp) par projet afin de ne payer que pour les tokens de contexte que vous utilisez réellement.
Prérequis
- Un client compatible MCP (Claude Desktop, Cursor ou Cline)
- Une clé API Scavio provenant de scavio.dev
- Connaissances de base en configuration JSON
- Au moins deux projets nécessitant des ensembles d'outils différents
Parcours
Étape 1: Auditez votre utilisation actuelle des tokens MCP
Vérifiez combien de serveurs MCP vous avez configurés globalement. Chaque serveur ajoute des descriptions d'outils qui consomment des tokens de contexte à chaque requête.
# Check your current MCP configuration
import json, os
# Common MCP config locations
config_paths = [
os.path.expanduser('~/.config/claude/claude_desktop_config.json'),
os.path.expanduser('~/.cursor/mcp.json'),
'.mcp.json', # Project-level
]
for path in config_paths:
if os.path.exists(path):
with open(path) as f:
config = json.load(f)
servers = config.get('mcpServers', {})
print(f'{path}:')
print(f' Servers: {len(servers)}')
for name, cfg in servers.items():
print(f' - {name}')
# Estimate token cost (rough: ~200 tokens per tool description)
est_tools = len(servers) * 5 # ~5 tools per server average
est_tokens = est_tools * 200
print(f' Estimated tool description tokens: ~{est_tokens}')
else:
print(f'{path}: not found')Étape 2: Créez des configurations MCP par projet
Au lieu d'une configuration globale unique, créez des fichiers .mcp.json par projet qui n'incluent que les serveurs nécessaires à chaque projet.
import json
def create_project_mcp(project_path: str, servers: dict, description: str = ''):
"""Create a project-scoped MCP configuration."""
config = {'mcpServers': servers}
config_path = os.path.join(project_path, '.mcp.json')
with open(config_path, 'w') as f:
json.dump(config, f, indent=2)
tool_count = len(servers)
est_tokens = tool_count * 5 * 200
print(f'Created {config_path}')
print(f' Servers: {tool_count}')
print(f' Est. token overhead: ~{est_tokens}')
if description:
print(f' Purpose: {description}')
# Project 1: E-commerce research - needs search only
create_project_mcp('/projects/ecommerce-research', {
'scavio': {
'url': 'https://mcp.scavio.dev/mcp',
'headers': {'Authorization': 'Bearer ${SCAVIO_API_KEY}'}
}
}, 'E-commerce product research with multi-platform search')
# Project 2: Content pipeline - needs search + file tools
create_project_mcp('/projects/content-pipeline', {
'scavio': {
'url': 'https://mcp.scavio.dev/mcp',
'headers': {'Authorization': 'Bearer ${SCAVIO_API_KEY}'}
},
'filesystem': {
'command': 'npx',
'args': ['-y', '@modelcontextprotocol/server-filesystem', '/projects/content-pipeline/output']
}
}, 'Content generation with search grounding')Étape 3: Comparez les coûts en tokens globaux vs par projet
Calculez les économies de tokens obtenues par le périmétrage. Un projet qui n'a besoin que de la recherche économise des milliers de tokens par requête par rapport à une configuration globale avec 10 serveurs.
def compare_token_costs(global_servers: int, scoped_servers: int,
avg_tools_per_server: int = 5,
tokens_per_tool: int = 200,
requests_per_day: int = 100) -> dict:
global_tokens = global_servers * avg_tools_per_server * tokens_per_tool
scoped_tokens = scoped_servers * avg_tools_per_server * tokens_per_tool
savings_per_request = global_tokens - scoped_tokens
daily_savings = savings_per_request * requests_per_day
# At ~$3/1M input tokens (GPT-4o rate)
cost_per_token = 3.0 / 1_000_000
monthly_savings = daily_savings * 30 * cost_per_token
return {
'global_tokens_per_request': global_tokens,
'scoped_tokens_per_request': scoped_tokens,
'savings_per_request': savings_per_request,
'daily_token_savings': daily_savings,
'monthly_cost_savings': monthly_savings,
}
# Scenario: global has 10 servers, project only needs 1 (Scavio)
result = compare_token_costs(global_servers=10, scoped_servers=1)
print('Token Savings Analysis')
print('=' * 40)
print(f'Global config: {result["global_tokens_per_request"]:,} tokens/request')
print(f'Scoped config: {result["scoped_tokens_per_request"]:,} tokens/request')
print(f'Savings: {result["savings_per_request"]:,} tokens/request')
print(f'Daily savings: {result["daily_token_savings"]:,} tokens')
print(f'Monthly cost savings: ${result["monthly_cost_savings"]:.2f}')Étape 4: Configurez le serveur MCP Scavio pour un projet
Créez un .mcp.json minimal qui ne configure que le serveur MCP de recherche Scavio. Cela donne accès au projet à 6 plateformes avec un minimum de surcharge en tokens.
# Minimal Scavio-only MCP config for any project
scavio_only_config = {
'mcpServers': {
'scavio': {
'url': 'https://mcp.scavio.dev/mcp',
'headers': {
'Authorization': 'Bearer ${SCAVIO_API_KEY}'
}
}
}
}
def setup_scavio_mcp(project_dir: str):
config_path = os.path.join(project_dir, '.mcp.json')
with open(config_path, 'w') as f:
json.dump(scavio_only_config, f, indent=2)
print(f'Scavio MCP configured at {config_path}')
print(f'Platforms available: Google, Amazon, YouTube, Walmart, Reddit, TikTok')
print(f'Endpoint: mcp.scavio.dev/mcp')
print(f'Cost: $0.005 per search credit')
print(f'Token overhead: ~1,000 tokens (vs ~10,000 with 10 global servers)')
# Setup for multiple projects
for project in ['ecommerce-tool', 'content-agent', 'research-bot']:
project_path = f'/projects/{project}'
if os.path.isdir(project_path):
setup_scavio_mcp(project_path)
else:
print(f'Would configure: {project_path}/.mcp.json')Exemple Python
import json, os
def create_scavio_mcp(project_dir):
config = {'mcpServers': {'scavio': {
'url': 'https://mcp.scavio.dev/mcp',
'headers': {'Authorization': 'Bearer ${SCAVIO_API_KEY}'}
}}}
path = os.path.join(project_dir, '.mcp.json')
with open(path, 'w') as f:
json.dump(config, f, indent=2)
print(f'Created {path}')
print(f' 1 server, ~1,000 token overhead')
print(f' 6 platforms: Google, Amazon, YouTube, Walmart, Reddit, TikTok')
create_scavio_mcp('.')Exemple JavaScript
const fs = require('fs');
const path = require('path');
function createScavioMcp(projectDir) {
const config = { mcpServers: { scavio: {
url: 'https://mcp.scavio.dev/mcp',
headers: { Authorization: 'Bearer ${SCAVIO_API_KEY}' }
}}};
const configPath = path.join(projectDir, '.mcp.json');
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
console.log(`Created ${configPath}`);
console.log(' 1 server, ~1,000 token overhead');
console.log(' 6 platforms: Google, Amazon, YouTube, Walmart, Reddit, TikTok');
}
createScavioMcp('.');Sortie attendue
Token Savings Analysis
========================================
Global config: 10,000 tokens/request
Scoped config: 1,000 tokens/request
Savings: 9,000 tokens/request
Daily savings: 900,000 tokens
Monthly cost savings: $81.00
Scavio MCP configured at /projects/ecommerce-tool/.mcp.json
Platforms available: Google, Amazon, YouTube, Walmart, Reddit, TikTok
Endpoint: mcp.scavio.dev/mcp
Cost: $0.005 per search credit
Token overhead: ~1,000 tokens (vs ~10,000 with 10 global servers)