Combine un servidor MCP de memoria con un servidor MCP de búsqueda para brindarle a su agente de IA recuperación de contexto persistente y recuperación de datos web en vivo en una sola conversación. Sin memoria, los agentes repiten búsquedas de hechos que ya encontraron. Sin búsqueda, los agentes alucinan cuando se les pregunta sobre la actualidad. La ejecución conjunta de ambos servidores permite al agente almacenar los resultados de la investigación en la memoria y solo buscar cuando encuentra preguntas realmente nuevas. Este tutorial configura ambos servidores en Claude Desktop y demuestra patrones para una búsqueda eficiente con memoria aumentada.
Requisitos previos
- Claude Desktop o Claude Code instalado
- Una clave API de Scavio de scavio.dev
- Un servidor MCP de memoria (por ejemplo, mem0 o servidor de gráficos de conocimiento local)
- Familiaridad básica con la configuración de MCP
Guia paso a paso
Paso 1: Configurar ambos servidores MCP
Agregue Scavio para búsqueda y su servidor de memoria al mismo archivo de configuración de MCP. Claude tendrá acceso a herramientas de ambos servidores simultáneamente.
// .mcp.json or claude_desktop_config.json:
{
"mcpServers": {
"scavio": {
"url": "https://mcp.scavio.dev/mcp",
"headers": { "x-api-key": "your_scavio_api_key" }
},
"memory": {
"command": "npx",
"args": ["@modelcontextprotocol/server-memory"]
}
}
}Paso 2: Establecer el patrón de búsqueda y luego almacenamiento
Indique al agente que primero verifique la memoria, busque solo si es necesario y almacene siempre los nuevos hallazgos.
# System prompt or custom command for Claude:
RESEARCH_PROMPT = """
When I ask a factual question:
1. Check memory for existing knowledge on this topic
2. If memory has a recent answer (stored within 7 days), use it
3. If not in memory or outdated, search Google via scavio
4. Store the key findings in memory with a timestamp
5. Answer using the combined context
Always cite whether the answer came from memory or fresh search.
"""Paso 3: Crear un flujo de trabajo para una sesión de investigación
Realice una sesión de investigación de varios turnos en la que el agente utiliza la memoria para evitar búsquedas redundantes.
# Example multi-turn session:
# Turn 1: 'What is Vercel's latest funding round?'
# -> Agent searches Google via scavio, finds Series E info
# -> Agent stores: {entity: 'Vercel', funding: 'Series E $250M', date: '2026-05-07'}
#
# Turn 2: 'How does Vercel compare to Netlify on pricing?'
# -> Agent recalls Vercel info from memory (no search needed)
# -> Agent searches for Netlify pricing (new topic)
# -> Stores Netlify pricing in memory
#
# Turn 3: 'Summarize both for my CTO'
# -> Agent uses memory for both, zero searches neededPaso 4: Verificar la persistencia de la memoria
Pruebe que los datos almacenados sobrevivan en las conversaciones reiniciando Claude y consultando temas investigados previamente.
# After restarting Claude Desktop, test recall:
# 'What do you remember about Vercel funding?'
# -> Should retrieve from memory server without searching
#
# Programmatic verification via API:
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
# This search should NOT happen if memory is working:
def verify_memory_reduces_searches(topic: str):
# First call: search and store
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': topic}, timeout=15)
result = resp.json().get('organic_results', [])
print(f'Search returned {len(result)} results - store these in memory')
return result
verify_memory_reduces_searches('Vercel series e funding 2026')Ejemplo en Python
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
memory = {}
def search_with_memory(query):
if query in memory:
print(f'Memory hit: {query}')
return memory[query]
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}).json()
results = data.get('organic_results', [])[:3]
memory[query] = results
print(f'Searched and cached: {query}')
return results
search_with_memory('Vercel funding 2026')
search_with_memory('Vercel funding 2026') # memory hitEjemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const memory = new Map();
async function searchWithMemory(query) {
if (memory.has(query)) { console.log('Memory hit'); return memory.get(query); }
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform: 'google', query})
});
const results = (await r.json()).organic_results?.slice(0, 3) || [];
memory.set(query, results);
return results;
}
await searchWithMemory('Vercel funding 2026');
await searchWithMemory('Vercel funding 2026'); // memory hitSalida esperada
A dual-MCP setup where Claude uses memory for previously researched topics and only calls the search API for new queries, reducing total API calls by 40-60% in typical research sessions.