Tutorial

How to Connect MCP to Your Enterprise Knowledge Base

Wire Scavio MCP alongside your enterprise KB (Confluence, SharePoint, Notion) so Claude Code can search internal + external from one interface.

Enterprise agent workflows in 2026 need unified search across internal docs (Confluence, SharePoint, Notion) and the external web. This tutorial registers Scavio MCP next to your internal KB MCP so Claude Code runs federated search from one prompt.

Prerequisites

  • Claude Code latest
  • A Scavio API key
  • Your enterprise KB MCP (e.g. @confluence/mcp, @notion/mcp)
  • Node.js 20+

Walkthrough

Step 1: Install both MCPs

Scavio plus your KB MCP.

Bash
npm install -g @scavio/mcp @confluence/mcp

Step 2: Register both in .mcp.json

Claude Code discovers tools from all registered servers.

JSON
{
  "mcpServers": {
    "scavio": { "command": "scavio-mcp", "env": { "SCAVIO_API_KEY": "..." } },
    "confluence": { "command": "confluence-mcp", "env": { "CONFLUENCE_TOKEN": "..." } }
  }
}

Step 3: Write a federated search skill

Claude Code searches KB first, falls back to 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.

Step 4: Control precedence with tags

Internal-only queries skip Scavio. Public-research queries skip KB.

// Prompt pattern
[internal]: only search Confluence
[public]: only search Scavio
[any]: search both

Step 5: Verify with a test prompt

Test that federated search returns blended results.

Text
> [any] What is our pricing compared to competitors?

Python Example

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'))

JavaScript Example

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 []; }

Expected Output

JSON
Claude Code answers cite both Confluence pages and external sources inline. Internal hits prioritized, external fills gaps.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Claude Code latest. A Scavio API key. Your enterprise KB MCP (e.g. @confluence/mcp, @notion/mcp). Node.js 20+. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Wire Scavio MCP alongside your enterprise KB (Confluence, SharePoint, Notion) so Claude Code can search internal + external from one interface.