MetaMCP le permite compartir servidores MCP en múltiples modelos de IA. Conectar la búsqueda de Scavio a MetaMCP significa que Claude, GPT, Gemini y los modelos locales usan el mismo motor de búsqueda. Esto evita claves API duplicadas y una calidad de búsqueda inconsistente entre los agentes. La configuración tarda 5 minutos.
Requisitos previos
- MetaMCP instalado
- Python 3.8+ o Node.js 18+
- Una clave API de Scavio de scavio.dev
- Al menos dos clientes del modelo AI configurados
Guia paso a paso
Paso 1: Configurar Scavio como servidor MetaMCP
Agregue el servidor de búsqueda Scavio a su configuración MetaMCP.
import json, os
# MetaMCP configuration
metamcp_config = {
'servers': {
'scavio-search': {
'command': 'npx',
'args': ['-y', 'scavio-search-mcp'],
'env': {
'SCAVIO_API_KEY': os.environ.get('SCAVIO_API_KEY', 'your-key-here')
},
'description': 'Web search, extract, and TikTok data via Scavio API',
'shared_with': ['claude', 'gpt', 'gemini', 'local']
}
}
}
config_path = os.path.expanduser('~/.metamcp/config.json')
print(f'MetaMCP config path: {config_path}')
print(json.dumps(metamcp_config, indent=2))
print(f'\nThis shares one Scavio API key across all connected models.')
print(f'All models get: search, extract, and TikTok tools.')Paso 2: Verificar que la búsqueda funcione en todos los modelos
Pruebe que cada modelo conectado pueda utilizar la herramienta de búsqueda.
import requests
API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def test_search(label, query):
"""Simulate a model calling the shared search tool."""
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'country_code': 'us', 'num_results': 3}).json()
results = data.get('organic_results', [])
print(f' [{label}] "{query}" -> {len(results)} results')
if results:
print(f' Top: {results[0].get("title", "")[:50]}')
return len(results) > 0
print('=== MetaMCP Search Verification ===')
models = {
'Claude': 'latest anthropic sdk features',
'GPT': 'openai api new endpoints 2026',
'Gemini': 'google gemini api updates',
'Local': 'best local llm for coding',
}
successes = 0
for model, query in models.items():
if test_search(model, query):
successes += 1
print(f'\nAll models working: {successes}/{len(models)}')
print(f'Cost: ${len(models) * 0.005:.3f} (shared across all models)')Paso 3: Monitorear el uso y los costos compartidos
Realice un seguimiento de qué modelos utilizan la mayor cantidad de consultas de búsqueda.
from collections import defaultdict
from datetime import datetime
class SearchUsageTracker:
def __init__(self):
self.usage = defaultdict(lambda: {'queries': 0, 'cost': 0.0})
def log(self, model, query):
self.usage[model]['queries'] += 1
self.usage[model]['cost'] += 0.005
def report(self):
print(f'\n=== MetaMCP Search Usage - {datetime.now().strftime("%Y-%m-%d")} ===')
total_queries = 0
total_cost = 0
for model, data in sorted(self.usage.items()):
print(f' {model:10} | {data["queries"]:5} queries | ${data["cost"]:.3f}')
total_queries += data['queries']
total_cost += data['cost']
print(f' {"TOTAL":10} | {total_queries:5} queries | ${total_cost:.3f}')
print(f'\n Monthly estimate: ${total_cost * 30:.2f}')
print(f' vs separate keys: ${total_cost * 30 * 1.5:.2f} (50% overhead from duplication)')
tracker = SearchUsageTracker()
# Simulate usage
for _ in range(10): tracker.log('Claude', 'various queries')
for _ in range(15): tracker.log('GPT', 'various queries')
for _ in range(5): tracker.log('Gemini', 'various queries')
for _ in range(8): tracker.log('Local', 'various queries')
tracker.report()Ejemplo en Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}
def shared_search(model, query):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': query, 'country_code': 'us'}).json()
n = len(data.get('organic_results', []))
print(f'[{model}] {query}: {n} results')
shared_search('Claude', 'anthropic sdk 2026')
shared_search('GPT', 'openai api 2026')
print('Cost: $0.010 (shared key)')Ejemplo en JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function sharedSearch(model, query) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query, country_code: 'us' })
}).then(r => r.json());
console.log(`[${model}] ${query}: ${(data.organic_results || []).length} results`);
}
await sharedSearch('Claude', 'anthropic sdk 2026');Salida esperada
=== MetaMCP Search Verification ===
[Claude] "latest anthropic sdk features" -> 3 results
Top: Anthropic SDK 2026: What's New in Claude API
[GPT] "openai api new endpoints 2026" -> 3 results
Top: OpenAI API Updates May 2026
[Gemini] "google gemini api updates" -> 3 results
[Local] "best local llm for coding" -> 3 results
All models working: 4/4
Cost: $0.020 (shared across all models)
=== MetaMCP Search Usage ===
Claude | 10 queries | $0.050
GPT | 15 queries | $0.075
Gemini | 5 queries | $0.025
Local | 8 queries | $0.040
TOTAL | 38 queries | $0.190