You can add web search to Cursor by configuring the Scavio MCP server in your .mcp.json file. Once configured, Cursor's AI can call the scavio:search tool directly from chat to retrieve live search results.
Prerequisites
- Cursor 0.40+ installed
- Scavio API key from scavio.dev
- Node.js 18+ (for npx)
Walkthrough
Step 1: Create or edit .mcp.json in your project
The .mcp.json file lives in your project root or in ~/.cursor/ for global config.
# Project-level config (applies only to this project)
# Create at: /your-project/.mcp.json
# Global config (applies to all Cursor projects)
# Edit at: ~/.cursor/mcp.jsonStep 2: Add the Scavio MCP server entry
The npx command downloads and runs @scavio/mcp-server automatically.
{
"mcpServers": {
"scavio": {
"command": "npx",
"args": ["-y", "@scavio/mcp-server"],
"env": {
"SCAVIO_API_KEY": "your-scavio-api-key"
}
}
}
}Step 3: Verify MCP server is loaded in Cursor
Open Cursor, go to Settings > MCP. The scavio server should appear with a green status indicator.
# Cursor > Settings (Cmd+,) > MCP
# Look for: scavio - Connected
#
# If it shows 'Error', run this to test the server manually:
npx -y @scavio/mcp-server
# It should output: "Scavio MCP server started"Step 4: Test with a search query in Cursor chat
Open Cursor chat (Cmd+L) and ask a question that requires live data.
# In Cursor chat, type:
"Search for the latest Next.js 15 release notes and summarize the breaking changes"
# Expected: Cursor calls scavio:search, retrieves results, and summarizes them
# You'll see the tool call in the chat interface
# Test multi-platform:
"Search Amazon for mechanical keyboards under $100 and list the top 3"
"Search Reddit for opinions on Cursor vs VS Code in 2026"Python Example
# Test the same search the MCP server uses, directly via Python
import requests
API_KEY = "your-scavio-api-key"
def test_scavio_connection():
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": "Next.js 15 release notes", "num_results": 3},
headers={"x-api-key": API_KEY},
timeout=15
)
r.raise_for_status()
results = r.json().get("organic_results", [])
print(f"Connection OK. Got {len(results)} results.")
for res in results:
print(f" - {res.get('title')}")
if __name__ == "__main__":
test_scavio_connection()JavaScript Example
// Test the MCP server's underlying search call
const API_KEY = 'your-scavio-api-key';
async function testConnection() {
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': API_KEY },
body: JSON.stringify({ query: 'Next.js 15 release notes', num_results: 3 })
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(`Connection OK. Got ${data.organic_results?.length ?? 0} results.`);
for (const r of data.organic_results ?? []) console.log(` - ${r.title}`);
}
await testConnection();Expected Output
# In Cursor Settings > MCP:
# scavio - Connected
# In Cursor chat after asking "Search for Next.js 15 release notes":
# Tool call: scavio:search({"query": "Next.js 15 release notes"})
# Result: Next.js 15 introduces React 19 support, async request APIs...
# Python test output:
Connection OK. Got 3 results.
- Next.js 15 Release Notes - Vercel
- What's New in Next.js 15 | CSS-Tricks
- Next.js 15 Breaking Changes Migration Guide