MyWebSearch
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MODE | No | Server mode: both HTTP+STDIO, HTTP only, or STDIO only. Options: both, http, stdio | both |
| PORT | No | Server port (MCP HTTP/S; CLI daemon uses 3210 by default) | 3211 |
| LOG_LEVEL | No | quiet suppresses startup config logs (MCP stdio bare startup is silent by default; use LOG_LEVEL=normal for diagnostics). Options: normal, quiet | normal |
| PROXY_URL | No | Proxy server URL | http://127.0.0.1:7890 |
| USE_PROXY | No | Enable HTTP proxy | false |
| CORS_ORIGIN | No | CORS origin configuration | * |
| ENABLE_CORS | No | Enable CORS | false |
| EXA_API_KEY | No | Optional. Only needed for exa engine. Get a free key from https://dashboard.exa.ai/api-keys | |
| SEARCH_MODE | No | Search strategy. Currently only affects Bing: request only, request then Playwright fallback, or force Playwright. Options: request, auto, playwright | auto |
| FAKE_IP_CIDRS | No | Treat DNS answers in these CIDRs as synthetic fake-IP results and do not block them as private-network DNS answers. Literal private/local targets and other private-network DNS answers remain blocked | |
| PROXY_ENGINES | No | With USE_PROXY=true, only the engines in this whitelist route through the proxy; others stay direct. Empty = all engines proxied (legacy global behavior). Recommended for mainland China: PROXY_ENGINES=duckduckgo,exa,brave,startpage | |
| CONTEXT7_API_KEY | No | Optional API key for higher rate limits on Context7 docs tools | |
| PLAYWRIGHT_PACKAGE | No | Which Playwright client package to resolve when browser mode is enabled. Options: auto, playwright, playwright-core | auto |
| PLAYWRIGHT_HEADLESS | No | Whether Playwright Chromium runs in headless mode | true |
| MCP_TOOL_SEARCH_NAME | No | Custom name for the search tool | search |
| DEFAULT_SEARCH_ENGINE | No | Default search engine. Options: bing, duckduckgo, exa, brave, baidu, csdn, juejin, startpage, sogou | bing |
| ALLOWED_SEARCH_ENGINES | No | Limit which search engines can be used; if the default engine is not in this list, the first allowed engine becomes the default | |
| FETCH_WEB_INSECURE_TLS | No | Disable TLS certificate verification for fetchWebContent only. Use only when a target site has a broken certificate chain | false |
| PLAYWRIGHT_MODULE_PATH | No | Reuse an existing Playwright client package outside this project | |
| PLAYWRIGHT_WS_ENDPOINT | No | Valid Playwright ws:// / wss:// endpoint | |
| BING_IMPERSONATE_TARGET | No | Browser fingerprint target for Bing's HTTP mode. Any curl-cffi-node impersonate target (e.g. chrome131, chrome124, chrome116) | chrome131 |
| MCP_TOOL_FETCH_WEB_NAME | No | Custom name for generic web/Markdown fetch tool | fetchWebContent |
| PLAYWRIGHT_CDP_ENDPOINT | No | Valid Chromium CDP endpoint | |
| BING_PLAYWRIGHT_FALLBACK | No | In auto mode, when Bing's request mode hits an anti-bot page: true = launch a Playwright browser (slow, ~400MB); false = surface the error so the search service can cascade to lighter engines (e.g. duckduckgo/brave) via minResults | true |
| MCP_TOOL_FETCH_CSDN_NAME | No | Custom name for the CSDN article fetch tool | fetchCsdnArticle |
| MCP_TOOL_FETCH_GITHUB_NAME | No | Custom name for the GitHub README fetch tool | fetchGithubReadme |
| MCP_TOOL_FETCH_JUEJIN_NAME | No | Custom name for the Juejin article fetch tool | fetchJuejinArticle |
| PLAYWRIGHT_EXECUTABLE_PATH | No | Launch an existing Chromium/Chrome executable without installing bundled browsers | |
| OPEN_WEBSEARCH_QUIET_STARTUP | No | Suppress startup config logs (compatibility switch, equivalent to LOG_LEVEL=quiet) | false |
| STARTPAGE_PLAYWRIGHT_FALLBACK | No | false = do not launch a Playwright browser for Startpage's Anubis anti-bot warmup (saves ~400MB memory and seconds of latency); surface the error so minResults can cascade to lighter engines instead | true |
| PLAYWRIGHT_NAVIGATION_TIMEOUT_MS | No | Timeout for Playwright navigation and Bing result waits | 20000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
my-websearch provides 5 focused tools for web search, web extraction, Git repositories, documentation, and remote code symbols:
'search': Multi-engine web and code search. Use for finding pages, articles, issues, and code snippets across Bing, Baidu, DuckDuckGo, Brave, GitHub, grep.app, etc. Supports multi-query, timeRange (day/week/month/year), and site filters.
'fetchWebContent': Extract readable content and markdown from generic web pages and PDF files. Use for reading articles, blogs, documentation pages, or downloading and parsing PDF documents.
'fetchGithubContent': Fetch GitHub/Gitee content by URL: README, a single source file (/blob/), a directory tree (/tree/), an Issue (/issues/), or a PR (/pull/ on GitHub, /pulls/ on Gitee). Examples: https://github.com/owner/repo/blob/main/src/index.ts ; https://gitee.com/owner/repo/blob/master/README.md ; https://github.com/owner/repo/issues/42 ; https://gitee.com/owner/repo/pulls/4 — ref may be a branch, tag, or commit; one file or directory per call, not a whole-repo clone.
'queryDocs': Direct access to official documentation and code snippets for libraries and frameworks (Context7 with npm/PyPI and GitHub fallback). Always prefer queryDocs over general web search for official library APIs and examples.
'codeSymbol': Locate a symbol declaration plus references and call sites in a remote GitHub repo (signature + code block + line numbers). Requires GITHUB_TOKEN; pass the exact symbol name, e.g. repo="fastapi/fastapi", symbol="Depends".
Routing guidance:
Prefer 'queryDocs' for official package documentation (no proxy required).
Prefer 'fetchGithubContent' for GitHub/Gitee repos, files, issues, and PRs.
Prefer 'codeSymbol' when the exact symbol name is known and you need its definition or call sites.
Prefer 'fetchWebContent' for generic URLs and PDF files.
Use 'search' with site: operator (e.g. site:docs.python.org) or timeRange for targeted queries.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchB | Search the web across multiple engines (Chinese/English/Code). Supports multi-query fan-out ('queries'), timeRange filtering, site limits, fetchTop article content, and no API keys required. |
| fetchWebContentA | Fetch readable web content/docs/PDFs from public URLs. Auto-cleans ads, keeps code/tables. Batch urls (1-3), CSS selector scoping, bm25 focus, startIndex paging, cache, schema extract to JSON, citations, link retention. |
| fetchGithubContentA | Fetch GitHub/Gitee by URL: README, source file (/blob/, with lines), tree, issue, PR, commit, compare, or releases (releaseLimit for recent N). Example: https://github.com/o/r/blob/main/src/index.ts — ref can be branch/tag/commit; not a repo clone. |
| queryDocsB | Get official docs, API references, and code snippets for libraries/packages (e.g. 'react', 'fastapi', 'next.js'). Queries Context7 with fallback to npm/PyPI registry and GitHub README. Direct, no proxy needed. |
| codeSymbolA | Find a symbol declaration and references in a remote GitHub repo. Uses GitHub code search + raw files; returns signature, code block, and reference lines. Requires GITHUB_TOKEN. Example: repo="fastapi/fastapi", symbol="Depends". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| deep-research | Multi-source research with query fan-out, official docs, and citation-backed synthesis. |
| code-lookup | Look up official docs, source code, and release notes for a library API question. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| websearch-page-cache | Recently cached pages from fetchWebContent (metadata only). |
| websearch-docs-cache | Recently cached queryDocs results (metadata only). |
TDQS
Scored across 5 tools
Each tool targets a reasonably distinct need: general web search, generic URL/PDF extraction, GitHub-specific artifacts, library documentation lookup, and symbol-level code search. The main friction is between fetchWebContent and fetchGithubContent (both fetch content, and the boundary is only implied by URL type) and between queryDocs and search (docs lookup can fall back to GitHub READMEs). Descriptions largely resolve these, but an agent must read carefully to pick correctly for a github.com URL.
Four of five tools use camelCase verb_noun-ish names (fetchWebContent, fetchGithubContent, queryDocs, codeSymbol), giving a predictable pattern. The lone 'search' breaks the pattern by being a bare verb, a minor deviation rather than a systemic inconsistency.
Five tools is well-scoped for a web search/fetch server; each covers a genuinely different retrieval target (search, generic page, GitHub artifact, docs, symbol). No tool appears redundant or thrown in as filler.
The surface covers the core retrieval lifecycle: discovery (search, queryDocs), retrieval (fetchWebContent, fetchGithubContent), and code navigation (codeSymbol), with pagination and caching handled inside fetchWebContent. Minor gaps exist — no dedicated repo-wide listing/browsing, no explicit cache management or multi-page crawl tool — but agents can work around these via search and URL paging.