A side-by-side look at the Open WebSearch and Octen MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Open WebSearch for search & data extraction work as a local process; choose Octen MCP for search & data extraction as a local process. You can also run both side by side in one mcpServers block.
search, fetchLinuxDoArticle, fetchCsdnArticle.OCTEN_API_KEY.search, news_search, broad_search.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Search & Data Extraction | Search & Data Extraction |
| Quality signal | 72/100 · Great | 64/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | OCTEN_API_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1,869 | 21 |
| Directory activity | 5 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 6 | 6 |
| Full listing | View Open WebSearch | View Octen MCP |
searchSearch the web using multiple engines (e.g., Baidu, Bing, DuckDuckGo, CSDN, Exa, Brave, Juejin(掘金), Startpage, Sogou(搜狗)) with no API key required. searchMode meanings: omit or set auto to use the server configured SEARCH_MODE; request forces request-based search; playwright forces browser-based search.fetchLinuxDoArticleFetch full article content from a linux.do post URLfetchCsdnArticleFetch full article content from a csdn post URLfetchGithubReadmeFetch README content from a GitHub repository URLfetchWebContentFetch content from a public HTTP(S) URL (supports Markdown files and normal web pages)fetchJuejinArticleFetch full article content from a Juejin(掘金) post URLsearchSearch the live web and return ranked results (title, url, snippet) — fast, fresh, real-time web search for one focused lookup. Set `topic` to `news` for news-focused results. Pass `highlight` to get a ranked snippet per result, or `full_content` to pull the cleaned page body inline (heavier — costs more context). Narrow with domain / text include-exclude filters, a `language` filter (ISO 639-1 codes), and a time window (published/crawled `start_time`/`end_time`, or a relative `time_range`). Set `include_images` to return image URLs per result.
USE FOR a single focused lookup: one fact, one entity, one document. If the question spans several independent subtopics, load and use `broad_search` instead — a sequence of search calls is slower and gives worse coverage than one fan-out. To read a page you already have the URL for, use `extract`.
keywords: web search, search the web, look up, find, check, fact, current information, latest, news, source, url, real-timenews_searchSearch recent news and return ranked articles (title, url, snippet) — current events, headlines, timely reporting. This is `search` locked to `topic: news`; same options as `search` (domain / text filters, `language` filter, time window, highlight / full_content, media) except `topic`, which is fixed to news.
For a single news lookup this is the right tool. For a multi-angle news question ("what shipped across the industry this month", "how are different outlets covering X"), use `broad_search` with topic=news instead of looping news_search.
keywords: news search, latest news, headlines, current events, breaking news, recent, today, this week, press coveragebroad_searchSearch the web across many angles in one call — for comparisons, research, surveys, and questions with several distinct parts. Expands your question into multiple sub-queries and runs them concurrently.
USE WHEN the question has multiple distinct parts or entities that one search cannot cover:
- comparing vendors / products / pricing across many sources
- literature reviews, market or landscape surveys
- open-ended "what are the options for X" / "how do people solve Y"
- a question that clearly decomposes into 3+ independent sub-questions
- multi-angle questions about recent events ("what shipped across the industry this month") — set topic=news, do NOT loop news_search
DO NOT USE for:
- a single fact, entity, or document → use `search`
- re-running a disappointing search → do NOT call broad_search twice; follow up with a targeted `search` or `extract` on the specific gaps
- reading a page you already have the URL for → use `extract`
- a straight A-vs-B comparison of two known entities → two targeted `search` calls are cheaper and more controllable
COST: fans out into `max_queries` concurrent searches — roughly Nx the cost and notably higher latency than a single `search`. When in doubt, prefer `search`.
QUERY: pass one natural-language question (max 500 chars). Resolve pronouns and references from the conversation first — "how does it compare to the other one" is a useless query. Do NOT pre-split into sub-queries; that is this tool's job. For broader coverage raise `max_queries` rather than calling repeatedly. Per-sub-query options (count, topic, `language` filter, domain / text filters, time window, highlight / full_content, media) match `search` and apply to every sub-query.
RESULTS are grouped per sub-query and NOT deduplicated — the same URL may appear under several sub-queries.
max_queries: 3-5 focused comparison (2-3 entities) | 5-10 multi-facet research | 10-20 landscape scan | 20-30 exhaustive survey
For a single focused lookup use `search`; to read a specific page use `extract`.
keywords: web search, search the web, look up, find information, research, compare, comparison, versus, alternatives, options, landscape, survey, market research, pricing, latest, current information, multi-part questionextractRead one or more web pages by URL and return clean, LLM-ready content (markdown or text). By default (no `query`) it returns each page's full content — this is what you want in almost all cases. Only pass `query` when the user explicitly asks to fetch relevance-ranked snippets for a specific topic; doing so returns highlights INSTEAD of the full body, so the content will be partial. Every result also includes a `category` (topical) and `page_structure` (typology) classification. Bare hosts like 'octen.ai' are auto-normalized to https. Cached when fresh.
Pick `mode` by how hard the URLs are: ordinary sites → standard (or omit), known hard sites → advanced, mixed/unsure → auto. If a standard result failed or came back empty/skeletal, retry just those URLs with mode "advanced".
Use this when you already have the URL(s). To find pages first, use `search` or `broad_search`.
keywords: read page, fetch url, scrape, page content, article text, parse webpage, extract, read article, url content, open linkimage_searchFind images on the web by text query OR by a reference image — returns ranked results (title, source page, dimensions, thumbnail, description, summary). In Beta; contact us to request beta access. Pass exactly one of: a text `query`, an `image_url` (a picture already on the web), or `image_data` (base64, for a picture you hold). Never more than one. Set `topic` to `design` for UI design references — each result then carries a structured style `summary` and an `html_snippet` for building/restyling frontends. Use this when the user wants pictures, photos, diagrams, screenshots, or visual references — not for general text web search.
keywords: find images, image search, photos, pictures, screenshots, visual reference, diagram, icon, illustration, UI design, reference imagevideo_searchFind videos on the web by text query — returns ranked results (title, source page, cover image, duration, matching segment, authors, description). In Beta; contact us to request beta access. Pass a text `query`. Use this when the user wants to find videos, clips, footage, tutorials, or a specific moment within a video — not for general text web search.
keywords: find videos, video search, clips, footage, youtube, tutorial video, watch, movie, video clipPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"aas-ee-open-websearch": {
"command": "npx",
"args": [
"-y",
"open-websearch@latest"
]
}
}
}
{
"mcpServers": {
"octen-mcp": {
"command": "npx",
"args": [
"-y",
"octen-mcp"
],
"env": {
"OCTEN_API_KEY": "YOUR_OCTEN_API_KEY_HERE"
}
}
}
}