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+):
OpenCode (~/.opencode/config.json or opencode.json):
{
"mcp": {
"anysearch": {
"type": "streamable-http",
"url": "https://api.anysearch.com/mcp",
"headers": {
"Authorization": "Bearer ${ANYSEARCH_API_KEY}"
}
}
}
}
Claude Desktop (claude_desktop_config.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):
{
"mcpServers": {
"anysearch": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.anysearch.com/mcp",
"--header",
"Authorization: Bearer ${ANYSEARCH_API_KEY}"
]
}
}
}
VS Code Copilot (.vscode/mcp.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):
{
"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:
npx -y supergateway \
--streamableHttp https://api.anysearch.com/mcp \
--outputTransport sse \
--port 8000 \
--oauth2Bearer ${ANYSEARCH_API_KEY}
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"anysearch": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Windsurf (~/.codeium/windsurf/mcp_config.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:
Authorizationheader /--api_keyflagANYSEARCH_API_KEYenvironment variable.envfile withANYSEARCH_API_KEY=<key>- Anonymous access (lower rate limits)
Set environment variable:
export ANYSEARCH_API_KEY="your-api-key-here"
Or create .env file:
ANYSEARCH_API_KEY=your-api-key-here
Available Tools
search - General or Vertical Domain Search
Execute a search query. For vertical searches, you MUST call list_domains first.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search query (format depends on domain) |
domain |
string | No | Vertical domain (e.g., finance, academic) |
sub_domain |
string | No | Sub-domain routing key (required for vertical) |
sub_domain_params |
object | No | Extra params per sub_domain schema |
content_types |
array | No | Filter: web, news, code, doc, etc. |
zone |
string | No | cn or intl (required when sub_domain requires) |
max_results |
integer | No | 1-100, default 10 |
freshness |
string | No | day, week, month, year |
General Web Search Example:
{
"query": "quantum computing breakthroughs 2025",
"max_results": 5,
"freshness": "month"
}
Vertical Search Example (Stock):
First, call list_domains:
{
"domain": "finance"
}
Then use the discovered sub_domain and query_format:
{
"query": "AAPL",
"domain": "finance",
"sub_domain": "finance.us_stock",
"max_results": 5
}
News Search Example:
{
"query": "artificial intelligence",
"content_types": ["news"],
"freshness": "week",
"max_results": 10
}
Academic Search Example:
{
"query": "10.1038/s41586-019-1666-5",
"domain": "academic",
"sub_domain": "academic.doi"
}
list_domains - Query Vertical Domain Directory
MUST be called before vertical search to discover available sub_domains and their query formats.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
domain |
string | One of | Single domain to query |
domains |
array | One of | Batch up to 5 domains |
Single Domain Example:
{
"domain": "finance"
}
Multiple Domains Example:
{
"domains": ["finance", "academic", "security"]
}
Returns Markdown table with:
sub_domain: Routing key for searchdescription: What the sub_domain searchesquery_format: Exact format required (e.g., raw ticker, DOI)params_schema: JSON schema for optional parameterszone: IfCN, must setzone: "cn"in search
batch_search - Parallel Search Execution
Execute 2-5 independent search queries in parallel. Single failure doesn't block others.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
queries |
array | Yes | 1-5 query objects, each with same fields as search |
Example:
{
"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"
}
]
}
extract - 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 |
|---|---|---|---|
url |
string | Yes | Target URL (http:// or https://) |
Example:
{
"url": "https://en.wikipedia.org/wiki/Quantum_computing"
}
Supported Domains
23 vertical domains available:
code- Code repositories, packages, documentationtech- Technology news, products, reviewsfashion- Fashion trends, brands, productstravel- Flights, hotels, destinationshome- Home improvement, furniture, decorecommerce- Products, prices, reviewsgaming- Games, platforms, newsfilm- Movies, reviews, showtimesmusic- Songs, artists, albumsfinance- Stocks, crypto, markets, companiesacademic- Papers, patents, researchlegal- Laws, regulations, casesbusiness- Companies, industries, marketsip- Patents, trademarks, copyrightssecurity- CVEs, vulnerabilities, threatseducation- Courses, schools, materialshealth- Medical, wellness, drugsreligion- Religious texts, organizationsgeo- Geographic data, maps, placesenvironment- Climate, conservation, ecologyenergy- Energy sources, efficiency, policyugc- User-generated content, forums
Common Usage Patterns
Pattern 1: General Web Search
When user asks an open-ended question:
{
"query": "best practices for microservices architecture",
"max_results": 10
}
Pattern 2: Recent News
When user wants current information:
{
"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 list_domains
{
"domain": "security"
}
Step 2: Parse the response to find the correct sub_domain and query_format
Step 3: Execute search with exact format
{
"query": "CVE-2024-1234",
"domain": "security",
"sub_domain": "security.cve"
}
Pattern 4: Multi-Intent Queries
When user has multiple independent questions:
{
"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
{
"query": "kubernetes best practices",
"max_results": 3
}
Step 2: Extract top result
{
"url": "https://kubernetes.io/docs/concepts/configuration/overview/"
}
Pattern 6: Code Search
When user needs code examples:
{
"query": "react hooks useEffect",
"domain": "code",
"sub_domain": "code.general",
"max_results": 10
}
Pattern 7: Academic Research
When user references DOI or research topic:
{
"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
list_domainsfor the target domain - Follow
query_formatexactly (e.g., raw ticker "AAPL", not "Apple stock") - Use correct
sub_domainthat matches user intent - Set
zone: "cn"if the sub_domain requires it (checkzonefield) - Include
sub_domain_paramsif the schema requires additional fields
Troubleshooting
Issue: "Invalid query format for vertical search"
Cause: Query doesn't match the query_format from list_domains
Solution:
- Call
list_domainsfor the domain - Check the
query_formatfield - Transform user input to match exact format (e.g., extract ticker symbol from natural language)
Issue: "Missing required zone parameter"
Cause: Sub_domain requires zone: "cn" but it wasn't provided
Solution:
- Check
list_domainsresponse forzonefield - If
zone: "CN", add"zone": "cn"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
ANYSEARCH_API_KEYenvironment 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
supergatewayproxy 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
mcp-remoteproxy (simpler, auto-detects transport) - Verify
npxcan download packages - Check agent restart picked up new config
Issue: "No results for vertical search"
Cause: Wrong sub_domain selected or malformed query
Solution:
- Review
list_domainsoutput again - Match user intent to
descriptionfield of sub_domains - Verify query matches
query_formatexactly - 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 | opencode.json |
| 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) | .vscode/mcp.json |
| Cline | stdio | Yes (mcp-remote) | VS Code settings |
| Cursor | SSE | Yes (supergateway) | .cursor/mcp.json |
| Windsurf | SSE | Yes (supergateway) | mcp_config.json |
Best Practices
- Always call
list_domainsbefore 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
max_results- Default 10 is good, reduce for speed, increase for thoroughness - Use
freshnessfor time-sensitive queries - News, events, recent developments - Never include API keys in chat - Always use environment variables
- Check zone requirements - CN sub_domains require
zone: "cn"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