Los flujos de trabajo de los agentes empresariales en 2026 necesitarán una búsqueda unificada en documentos internos (Confluence, SharePoint, Notion) y la web externa. Este tutorial registra Scavio MCP junto a su KB MCP interno para que Claude Code ejecute una búsqueda federada desde un solo mensaje.
Requisitos previos
- Código Claude más reciente
- Una clave API de Scavio
- Su KB MCP empresarial (por ejemplo, @confluence/mcp, @notion/mcp)
- Nodo.js 20+
Guia paso a paso
Paso 1: Instale ambos MCP
Scavio más su KB MCP.
npm install -g @scavio/mcp @confluence/mcpPaso 2: Registre ambos en .mcp.json
Claude Code descubre herramientas de todos los servidores registrados.
{
"mcpServers": {
"scavio": { "command": "scavio-mcp", "env": { "SCAVIO_API_KEY": "..." } },
"confluence": { "command": "confluence-mcp", "env": { "CONFLUENCE_TOKEN": "..." } }
}
}Paso 3: Escribir una habilidad de búsqueda federada
Claude Code busca primero en KB y vuelve a Scavio.
// ~/.claude/skills/federated-search.md
For every question:
1. Call confluence.search with the query.
2. If fewer than 3 results, call scavio.search for external web results.
3. Combine and cite sources inline.Paso 4: Controlar la precedencia con etiquetas
Las consultas solo internas omiten Scavio. Las consultas de investigación pública omiten KB.
// Prompt pattern
[internal]: only search Confluence
[public]: only search Scavio
[any]: search bothPaso 5: Verificar con un mensaje de prueba
Pruebe que la búsqueda federada devuelva resultados combinados.
> [any] What is our pricing compared to competitors?Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def federated(query, internal_first=True):
# internal search stub
internal = search_confluence(query) if internal_first else []
if len(internal) >= 3: return internal
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': query})
return internal + r.json().get('organic_results', [])[:5]
def search_confluence(q):
return [] # wire your own Confluence API client
print(federated('quarterly roadmap'))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function federated(query) {
const internal = await searchConfluence(query);
if (internal.length >= 3) return internal;
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query })
});
const d = await r.json();
return [...internal, ...(d.organic_results || []).slice(0, 5)];
}
async function searchConfluence(q) { return []; }Salida esperada
Claude Code answers cite both Confluence pages and external sources inline. Internal hits prioritized, external fills gaps.