Skip to content

feat(integrations): add AnySearch MCP integration for real-time web & vertical search - #639

Open
huaigu wants to merge 1 commit into
OpenHands:mainfrom
huaigu:feat/add-anysearch-mcp-integration
Open

huaigu wants to merge 1 commit into
OpenHands:mainfrom
huaigu:feat/add-anysearch-mcp-integration

Conversation

@huaigu

@huaigu huaigu commented Sep 22, 2026 •

Copy link
Copy Markdown
  • A human has tested these changes.

Why

OpenHands users currently have limited options for real-time web and vertical domain information retrieval. Adding AnySearch to the extensions integrations catalog introduces:

  1. Native Streamable HTTP Transport: Connects directly to https://api.anysearch.com/mcp without requiring any local binaries, Node runtime installations, or container setup.
  2. Zero-Config Anonymous Access: Users can start immediately without entering credentials, while also supporting optional API keys for increased quotas.
  3. Comprehensive Search & Extraction:
    • search: High-relevance web search across 17 vertical domains (academic, code, finance, legal, security, etc.) with specialized filters.
    • batch_search: Parallel execution of up to 5 queries in a single round-trip.
    • extract: Clean Markdown content extraction from target URLs for LLM analysis.
    • get_sub_domains: Dynamic discovery of vertical search capabilities and query parameters.

Summary

  • Added integrations/catalog/anysearch.json defining AnySearch Streamable HTTP MCP integration with optional Bearer authentication.
  • Rebuilt integrations/catalog-index.js via npm run build:integrations.

Issue Number

Fixes #638

How to Test

1. Catalog Schema and Sync Tests

uv run --group test pytest tests/test_catalog_schema.py tests/test_integration_catalog_in_sync.py

Expected: 105 passed.

2. Verification of Live MCP Endpoints (Anonymous Smoke Test)

All four MCP tools can be verified immediately without credentials:

# 1. MCP Initialization & Tool Discovery
curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"openhands","version":"1.0"}}}'

curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# 2. General Search
curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search","arguments":{"query":"OpenHands agentic framework"}}}'

# 3. Vertical Domain Capability Discovery
curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"get_sub_domains","arguments":{"domain":"finance"}}}'

# 4. Parallel Batch Search (Multi-query)
curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"batch_search","arguments":{"queries":[{"query":"OpenHands"},{"query":"AnySearch"}]}}}'

# 5. Full-page Markdown Content Extraction
curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"extract","arguments":{"url":"https://github.com/OpenHands/OpenHands"}}}'

3. Optional Bearer Authentication Test

curl -s -X POST https://api.anysearch.com/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <OPTIONAL_ANYSEARCH_API_KEY>" \
  -d '{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"search","arguments":{"query":"OpenHands"}}}'

Video/Screenshots

Validated against live production endpoint https://api.anysearch.com/mcp. All JSON-RPC methods (initialize, tools/list, search, batch_search, extract, get_sub_domains) succeed with HTTP 200 responses. Catalog schema and sync test suite passed 105/105.

Live MCP tools/list response (4 tools registered; description and inputSchema omitted for brevity)
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "tools": [
      { "name": "batch_search" },
      { "name": "extract" },
      { "name": "get_sub_domains" },
      { "name": "search" }
    ]
  }
}

Notes

None.

@github-actions github-actions Bot added the type: feat A new feature label Sep 22, 2026
@huaigu

huaigu commented Sep 22, 2026

Copy link
Copy Markdown
Author

Hi team! Quick note on CI: the only red check is Validate PR description, which is waiting on linked issue #638 to receive an enhancement label (I lack permissions to label issues as an external contributor).

All 105 catalog schema and sync tests pass cleanly, and the PR is ready for review whenever someone has a moment. Thank you!

@huaigu

huaigu commented Sep 24, 2026

Copy link
Copy Markdown
Author

cc @neubig @enyst @VascoSch92

Hi team! Friendly ping on the AnySearch MCP integration PR (#639).

A quick summary of what it brings to the OpenHands catalog:

  1. Zero-config anonymous access: users can start immediately without entering credentials (with optional Bearer API key for higher quotas).
  2. Native Streamable HTTP (shttp): direct, lightweight connection to https://api.anysearch.com/mcp with no local binary or npx runtime dependencies.
  3. Search + Extraction capabilities: provides general web & 17 vertical domains search, parallel batch_search queries, and full-page Markdown extract.

The PR is fully additive (no existing behaviors modified), and all 105 catalog schema & sync tests pass cleanly. Could you help add the enhancement label to linked issue #638 so the readiness gate can turn green?

Thanks so much for your time and review!

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add AnySearch MCP server integration to catalog

1 participant