@mezentsev/mcp-web
v0.1.0
Published
Searching: Google (API keys), Felo AI, DuckDuckGo; convert fetched pages to Markdown (LLM‑ready) and fetch ready docs from Jina API.
Readme
MCP-Web
A Model Context Protocol (MCP) server that provides web search and content extraction capabilities.
Quick Start
{
"mcpServers": {
"mcp-web": {
"command": "npx",
"args": [
"mcp-web"
],
"type": "stdio",
"env": {
"GOOGLE_API_KEY": "XXXXXXXXX",
"GOOGLE_SEARCH_ENGINE_ID": "XXXXXXXXX",
"JINA_API_KEY": "jina_XXXXXXXXX"
}
}
}
}Features
1) DuckDuckGo Search (duckduckgo-search)
Search the web using DuckDuckGo with HTML scraping.
Parameters:
query(string, required): The search querypage(integer, optional): Page number (default: 1, min: 1)numResults(integer, optional): Number of results to return (default: 10, min: 1, max: 20)
2) Google Search (google-search)
Search Google and return relevant results using the Programmable Search Engine.
Parameters:
query(string, required): Search query; quotes enable exact matchesnum_results(integer, optional): Total results to return (default: 5, max: 10)site(string, optional): Restrict to a specific site/domain (e.g.,wikipedia.org)language(string, optional): ISO 639-1 language code (e.g.,en,es)dateRestrict(string, optional): Date filter, e.g.,d7,w4,m6,y1exactTerms(string, optional): Exact phrase that must appearresultType(string, optional): Result type:image|images|news|video|videospage(integer, optional): Page number for pagination (default: 1, min: 1)resultsPerPage(integer, optional): Results per page (default: 5, max: 10)sort(string, optional): Sort order,relevance(default) ordate
Note: Requires GOOGLE_API_KEY and GOOGLE_SEARCH_ENGINE_ID to be set.
3) Felo AI Search (felo-search)
AI-powered search with contextual responses for up-to-date technical information (releases, advisories, migrations, benchmarks, community insights).
Parameters:
query(string, required): The search query or promptstream(boolean, optional): Whether to stream the response (default: false)
4) URL Content Fetcher (fetch-url)
Fetch the clean content of a URL and return it as text with extraction controls.
Parameters:
url(string, required): The URL to fetchmaxLength(integer, optional): Maximum content length (default: 10000, min: 1000, max: 50000)extractMainContent(boolean, optional): Attempt to extract main content (default: true)includeLinks(boolean, optional): Include link text (default: true)includeImages(boolean, optional): Include image alt text (default: true)excludeTags(array of string, optional): Tags to exclude (default includesscript,style,noscript,iframe,svg,nav,footer,header,aside)
5) URL Metadata Extractor (url-metadata)
Extract metadata (title, description, image, favicon) from a URL.
Parameters:
url(string, required): The URL to extract metadata from
6) URL Fetch to Markdown (url-fetch)
Fetch web pages and convert them to Markdown. Handles HTML, plaintext, and JSON (pretty-printed in a fenced block).
Parameters:
url(string, required): The URL to fetch and convert to Markdown
7) Jina Reader (jina-reader)
Retrieve LLM-friendly content from a URL using Jina r.reader with optional summaries and formats.
Parameters:
url(string, required): The URL to fetch and parsemaxLength(integer, optional): Maximum output length (default: 10000, min: 1000, max: 50000)withLinksummary(boolean, optional): Include links summary (default: false)withImagesSummary(boolean, optional): Include images summary (default: false)withGeneratedAlt(boolean, optional): Generate alt text for images (default: false)returnFormat(string, optional):markdown(default) |html|text|screenshot|pageshotnoCache(boolean, optional): Bypass cache (default: false)timeout(integer, optional): Max seconds to wait (default: 10, min: 5, max: 30)
Note: Requires JINA_API_KEY to be set.
Acknowledgments
- Model Context Protocol specification by Anthropic
- DuckDuckGo for providing a privacy-focused web search experience
- Google Programmable Search Engine and Custom Search JSON API
- Jina AI r.reader API for high-quality content extraction
- Felo AI for up-to-date, developer-focused search insights
- Rust ecosystem and crates that power this server:
- tokio, reqwest, serde, serde_json, tracing, tracing-subscriber, clap
- scraper, html5ever, markup5ever_rcdom, regex, once_cell, futures, async-stream
- url, uuid, thiserror, tokio-util, rand, urlencoding
- The broader MCP community for guidance, examples, and discussions
Support
If you encounter any issues or have questions, please open an issue on GitHub.
