AnySearch MCP Server Skill
Skill by
ara.so — MCP Skills collection.
AnySearch MCP Server is a unified real-time search engine for AI agents, providing general web search, 23 vertical domain searches (finance, academic, security, legal, code, etc.), parallel batch search, and full-page URL content extraction via the MCP protocol.
What It Does
- General Web Search: Natural language queries across the web
- Vertical Domain Search: Structured queries in 23 specialized domains
- Batch Search: Execute up to 5 independent queries in parallel
- URL Extraction: Fetch and convert full page content to Markdown
- Anonymous Access: Works without API key (lower rate limits)
Installation
Streamable HTTP (Recommended - No Proxy)
For agents supporting MCP spec 2025-03-26+ (OpenCode, Claude Desktop 2025.6+):
json
{
"mcp": {
"anysearch": {
"type": "streamable-http",
"url": "https://api.anysearch.com/mcp",
"headers": {
"Authorization": "Bearer ${ANYSEARCH_API_KEY}"
}
}
}
}
Claude Desktop (
claude_desktop_config.json
):
json
{
"mcpServers": {
"anysearch": {
"type": "streamable-http",
"url": "https://api.anysearch.com/mcp",
"headers": {
"Authorization": "Bearer ${ANYSEARCH_API_KEY}"
}
}
}
}
stdio Transport (Via mcp-remote Proxy)
Claude Desktop (
claude_desktop_config.json
):
json
{
"mcpServers": {
"anysearch": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.anysearch.com/mcp",
"--header",
"Authorization: Bearer ${ANYSEARCH_API_KEY}"
]
}
}
}
json
{
"servers": {
"anysearch": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.anysearch.com/mcp",
"--header",
"Authorization: Bearer ${ANYSEARCH_API_KEY}"
]
}
}
}
Cline (VS Code settings):
json
{
"mcpServers": {
"anysearch": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.anysearch.com/mcp",
"--header",
"Authorization: Bearer ${ANYSEARCH_API_KEY}"
]
}
}
}
SSE Transport (Via supergateway Proxy)
Start the proxy server:
bash
npx -y supergateway \
--streamableHttp https://api.anysearch.com/mcp \
--outputTransport sse \
--port 8000 \
--oauth2Bearer ${ANYSEARCH_API_KEY}
json
{
"mcpServers": {
"anysearch": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Windsurf (
~/.codeium/windsurf/mcp_config.json
):
json
{
"mcpServers": {
"anysearch": {
"serverUrl": "http://localhost:8000/sse"
}
}
}
API Key Configuration
Optional but recommended. Get a free key at:
https://anysearch.com/console/api-keys
Priority order:
- header / flag
- environment variable
- file with
- Anonymous access (lower rate limits)
Set environment variable:
bash
export ANYSEARCH_API_KEY="your-api-key-here"
ANYSEARCH_API_KEY=your-api-key-here
Available Tools
- General or Vertical Domain Search
Execute a search query. For vertical searches, you MUST call
first.
Parameters:
| Parameter | Type | Required | Description |
|---|
| string | Yes | Search query (format depends on domain) |
| string | No | Vertical domain (e.g., , ) |
| string | No | Sub-domain routing key (required for vertical) |
| object | No | Extra params per sub_domain schema |
| array | No | Filter: , , , , etc. |
| string | No | or (required when sub_domain requires) |
| integer | No | 1-100, default 10 |
| string | No | , , , |
General Web Search Example:
json
{
"query": "quantum computing breakthroughs 2025",
"max_results": 5,
"freshness": "month"
}
Vertical Search Example (Stock):
Then use the discovered
and
:
json
{
"query": "AAPL",
"domain": "finance",
"sub_domain": "finance.us_stock",
"max_results": 5
}
News Search Example:
json
{
"query": "artificial intelligence",
"content_types": ["news"],
"freshness": "week",
"max_results": 10
}
Academic Search Example:
json
{
"query": "10.1038/s41586-019-1666-5",
"domain": "academic",
"sub_domain": "academic.doi"
}
- Query Vertical Domain Directory
MUST be called before vertical search to discover available sub_domains and their query formats.
Parameters:
| Parameter | Type | Required | Description |
|---|
| string | One of | Single domain to query |
| array | One of | Batch up to 5 domains |
Single Domain Example:
Multiple Domains Example:
json
{
"domains": ["finance", "academic", "security"]
}
Returns Markdown table with:
- : Routing key for search
- : What the sub_domain searches
- : Exact format required (e.g., raw ticker, DOI)
- : JSON schema for optional parameters
- : If , must set in search
- Parallel Search Execution
Execute 2-5 independent search queries in parallel. Single failure doesn't block others.
Parameters:
| Parameter | Type | Required | Description |
|---|
| array | Yes | 1-5 query objects, each with same fields as |
Example:
json
{
"queries": [
{
"query": "AAPL",
"domain": "finance",
"sub_domain": "finance.us_stock"
},
{
"query": "python async http client",
"domain": "code",
"sub_domain": "code.general"
},
{
"query": "CVE-2024-1234",
"domain": "security",
"sub_domain": "security.cve"
}
]
}
- URL Content Extraction
Fetch full page content from a URL and return as Markdown. HTML pages only, truncated at 50,000 characters.
Parameters:
| Parameter | Type | Required | Description |
|---|
| string | Yes | Target URL ( or ) |
Example:
json
{
"url": "https://en.wikipedia.org/wiki/Quantum_computing"
}
Supported Domains
23 vertical domains available:
- - Code repositories, packages, documentation
- - Technology news, products, reviews
- - Fashion trends, brands, products
- - Flights, hotels, destinations
- - Home improvement, furniture, decor
- - Products, prices, reviews
- - Games, platforms, news
- - Movies, reviews, showtimes
- - Songs, artists, albums
- - Stocks, crypto, markets, companies
- - Papers, patents, research
- - Laws, regulations, cases
- - Companies, industries, markets
- - Patents, trademarks, copyrights
- - CVEs, vulnerabilities, threats
- - Courses, schools, materials
- - Medical, wellness, drugs
- - Religious texts, organizations
- - Geographic data, maps, places
- - Climate, conservation, ecology
- - Energy sources, efficiency, policy
- - User-generated content, forums
Common Usage Patterns
Pattern 1: General Web Search
When user asks an open-ended question:
json
{
"query": "best practices for microservices architecture",
"max_results": 10
}
Pattern 2: Recent News
When user wants current information:
json
{
"query": "SpaceX launches",
"content_types": ["news"],
"freshness": "week",
"max_results": 5
}
Pattern 3: Vertical Search Workflow
When user mentions structured identifiers (stock ticker, CVE, DOI, etc.):
Step 1: Identify the domain and call
Step 2: Parse the response to find the correct
and
Step 3: Execute search with exact format
json
{
"query": "CVE-2024-1234",
"domain": "security",
"sub_domain": "security.cve"
}
Pattern 4: Multi-Intent Queries
When user has multiple independent questions:
json
{
"queries": [
{
"query": "TSLA",
"domain": "finance",
"sub_domain": "finance.us_stock"
},
{
"query": "electric vehicle market trends",
"freshness": "month"
}
]
}
Pattern 5: Deep Content Extraction
When search results provide URLs but user needs full content:
Step 1: Search
json
{
"query": "kubernetes best practices",
"max_results": 3
}
Step 2: Extract top result
json
{
"url": "https://kubernetes.io/docs/concepts/configuration/overview/"
}
Pattern 6: Code Search
When user needs code examples:
json
{
"query": "react hooks useEffect",
"domain": "code",
"sub_domain": "code.general",
"max_results": 10
}
Pattern 7: Academic Research
When user references DOI or research topic:
json
{
"query": "10.1038/nature12373",
"domain": "academic",
"sub_domain": "academic.doi"
}
Decision Flow
Use this logic to choose the right tool:
User query
|
+-- Has structured identifiers? (ticker, CVE, DOI, IATA, patent, etc.)
| YES -> 1) list_domains(domain) -> discover sub_domain & query_format
| 2) search with domain + sub_domain + exact format
|
+-- Multiple independent questions?
| YES -> batch_search with array of queries
|
+-- Need full article/page content beyond snippets?
| YES -> search -> extract(url) from results
|
+-- Filter by content type or freshness?
| YES -> search with content_types and/or freshness params
|
+-- Otherwise -> search (general, natural language)
Vertical Search Requirements
Before executing vertical search, you MUST:
- Call for the target domain
- Follow exactly (e.g., raw ticker "AAPL", not "Apple stock")
- Use correct that matches user intent
- Set if the sub_domain requires it (check field)
- Include if the schema requires additional fields
Troubleshooting
Issue: "Invalid query format for vertical search"
Cause: Query doesn't match the
from
Solution:
- Call for the domain
- Check the field
- Transform user input to match exact format (e.g., extract ticker symbol from natural language)
Issue: "Missing required zone parameter"
Cause: Sub_domain requires
but it wasn't provided
Solution:
- Check response for field
- If , add to search call
Issue: "Anonymous rate limit exceeded"
Cause: No API key configured, hitting lower anonymous limits
Solution:
- Get free API key from https://anysearch.com/console/api-keys
- Set environment variable
- Restart agent to pick up new key
Issue: "SSE/stdio proxy not working"
Cause: Proxy server not running or incorrect configuration
Solution for SSE:
- Ensure proxy is running:
npx -y supergateway --streamableHttp https://api.anysearch.com/mcp --outputTransport sse --port 8000 --oauth2Bearer ${ANYSEARCH_API_KEY}
- Check proxy is accessible:
curl http://localhost:8000/sse
- Verify agent config points to
http://localhost:8000/sse
Solution for stdio:
- Use proxy (simpler, auto-detects transport)
- Verify can download packages
- Check agent restart picked up new config
Issue: "No results for vertical search"
Cause: Wrong
selected or malformed query
Solution:
- Review output again
- Match user intent to field of sub_domains
- Verify query matches exactly
- Try general search first to validate the entity exists
Issue: "Extract returns truncated content"
Cause: Page content exceeds 50,000 character limit
Solution:
- This is expected behavior for very long pages
- Use search results snippets for overview
- Extract multiple specific URLs if needed
- For extremely long docs, consider asking user which sections to prioritize
Configuration Quick Reference
| Agent | Transport | Proxy? | Config File |
|---|
| OpenCode | Streamable HTTP | No | |
| Claude Desktop 2025.6+ | Streamable HTTP | No | claude_desktop_config.json
|
| Claude Desktop (legacy) | stdio | Yes (mcp-remote) | claude_desktop_config.json
|
| VS Code Copilot | stdio | Yes (mcp-remote) | |
| Cline | stdio | Yes (mcp-remote) | VS Code settings |
| Cursor | SSE | Yes (supergateway) | |
| Windsurf | SSE | Yes (supergateway) | |
Best Practices
- Always call before vertical search - Don't assume you know the sub_domains
- Use batch_search for multiple intents - More efficient than sequential calls
- Prefer general search for exploratory queries - Vertical search requires exact formats
- Extract URLs sparingly - Search snippets are often sufficient
- Set appropriate - Default 10 is good, reduce for speed, increase for thoroughness
- Use for time-sensitive queries - News, events, recent developments
- Never include API keys in chat - Always use environment variables
- Check zone requirements - CN sub_domains require parameter
Security Notes
- All queries and URLs are sent to
https://api.anysearch.com
- Do not use for sensitive data (passwords, personal info, trade secrets)
- API keys grant higher rate limits - protect them as secrets
- Anonymous access works but has lower limits