问题所在
连接多个MCP服务器的AI代理需要在运行时决定对给定查询使用哪个工具。硬编码工具选择逻辑脆弱且难以维护。
Scavio 解决方案
让代理通过MCP的tools/list协议发现可用工具,基于查询上下文选择最佳工具。工具返回空结果时自动降级到备选工具。
之前
MCP路由之前,开发者硬编码工具选择逻辑:"如果查询包含产品,用Amazon;如果包含讨论,用Reddit。"添加新平台需要重写路由代码。
之后
实施MCP路由后,代理在启动时发现所有可用工具,基于查询上下文选择最佳工具。新工具添加无需代码修改。
适用人群
构建需要跨多个搜索平台动态工具路由的生产系统的AI代理开发者。
核心优势
- 动态工具发现消除硬编码路由
- 代理按查询上下文选择最佳平台
- 工具返回空结果时透明降级
- MCP服务器添加新工具时零代码修改
- 单MCP服务器覆盖5个平台
Python 示例
Python
# Claude Desktop / Cursor MCP config (mcp_config.json)
# {
# "mcpServers": {
# "scavio": {
# "url": "https://mcp.scavio.dev/mcp",
# "headers": { "x-api-key": "your_scavio_api_key" }
# }
# }
# }
#
# The agent automatically discovers 11 tools:
# google_search, reddit_search, youtube_search,
# amazon_search, walmart_search, google_news,
# google_maps, google_jobs, google_shopping,
# google_finance, google_scholar
#
# Routing happens at the LLM level:
# - User asks about product prices -> agent picks amazon_search
# - User asks about tutorials -> agent picks youtube_search
# - User asks about community opinion -> agent picks reddit_searchJavaScript 示例
JavaScript
// For programmatic MCP client setup:
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(
new URL('https://mcp.scavio.dev/mcp'),
{ requestInit: { headers: { 'x-api-key': process.env.SCAVIO_API_KEY } } }
);
const client = new Client({ name: 'my-agent', version: '1.0.0' });
await client.connect(transport);
// Discover all available tools
const { tools } = await client.listTools();
console.log(`Discovered ${tools.length} tools`);
// Call a specific tool
const result = await client.callTool({ name: 'google_search', arguments: { query: 'best crm 2026' } });使用的平台
包含知识图谱、PAA和AI概览的网页搜索
来自任何subreddit的社区、帖子及线程评论
YouTube
包含转录和元数据的视频搜索
Amazon
包含价格、评分和评论的产品搜索
Walmart
包含定价和配送数据的产品搜索