web2mcp
Zero-dependency Cloudflare Worker gateway turning websites and REST APIs into MCP tools.
Should I use this
Quality & Safety
Findings (4)
- HIGH
- INFOin hackernews_front_page
- INFOin hackernews_search
- INFOin baiduhot_realtime
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"web2mcp": {
"url": "https://web2mcp.cwei59969.workers.dev/mcp"
}
}
}Remote endpoints
https://web2mcp.cwei59969.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
π’wikipedia_search(query, limit)
[wikipedia] Full-text search of English Wikipedia. Use this to find the right article title, then call wikipedia_summary with it. Returns titles, short descriptions and excerpts, best match first.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to search for"
},
"limit": {
"type": "integer",
"description": "Max results (1-20)",
"minimum": 1,
"maximum": 20,
"default": 5
}
},
"required": [
"query"
],
"additionalProperties": false
}π’wikipedia_summary(title)
[wikipedia] Get the lead summary of an English Wikipedia article by its exact title (redirects are followed). If you are unsure of the title, use wikipedia_search first. Returns title, short description, the lead extract and the article url.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Exact article title, e.g. 'Cloudflare'"
}
},
"required": [
"title"
],
"additionalProperties": false
}π’hackernews_front_page(limit)
[hackernews] List the stories currently on the Hacker News front page, ranked as on the site. Use this to see what is trending now; use hackernews_search to find stories on a topic. Returns title, url, points, comment count and story id.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max stories (1-30)",
"minimum": 1,
"maximum": 30,
"default": 10
}
},
"required": [],
"additionalProperties": false
}π’hackernews_search(query, limit)
[hackernews] Full-text search of Hacker News stories (not comments) by keyword, ranked by relevance. Use this to find discussions about a product, project or topic; use hackernews_front_page for what is trending now. Returns title, url, points, comment count, date and story id.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keywords to match in story titles and text, e.g. 'model context protocol'"
},
"limit": {
"type": "integer",
"description": "Max results (1-30)",
"minimum": 1,
"maximum": 30,
"default": 10
}
},
"required": [
"query"
],
"additionalProperties": false
}π’geocode_search(name, limit, language)
[geocode] Turn a city or place name into coordinates. Use this before weather_forecast, which needs latitude/longitude. A name can match several places, so up to `limit` candidates are returned, best match first, each with name, country, region, latitude, longitude and timezone.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Place name, e.g. 'Shanghai'"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"default": 3,
"description": "Max candidate places to return (1-10)"
},
"language": {
"type": "string",
"description": "Result language, e.g. en, zh",
"default": "en"
}
},
"required": [
"name"
],
"additionalProperties": false
}π’weather_forecast(latitude, longitude, days)
[weather] Get current conditions and a daily forecast for a location given by coordinates. If you only have a place name, call geocode_search first. Returns temperature (Β°C), humidity, wind (km/h), WMO weather code, and per-day max/min temperature and precipitation (mm) in the location's local timezone.
Input Schema
{
"type": "object",
"properties": {
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees, e.g. 31.23"
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees, e.g. 121.47"
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"default": 3,
"description": "Number of forecast days including today (1-16)"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}π’currency_latest(base, symbols)
[currency] Get the latest European Central Bank reference exchange rates (updated once per working day) from a base currency. Omit symbols to get all ~30 currencies. Returns an object with base, date and a rates map, e.g. rates.CNY.
Input Schema
{
"type": "object",
"properties": {
"base": {
"type": "string",
"description": "Base currency, e.g. USD",
"default": "USD"
},
"symbols": {
"type": "string",
"description": "Comma-separated targets, e.g. CNY,EUR (optional)"
}
},
"required": [],
"additionalProperties": false
}π’github_search_repos(query, sort, limit)
[github] Find public GitHub repositories matching a query. Use this when you don't know the exact repo; use github_repo when you already have owner and name. Supports GitHub qualifiers like 'mcp language:rust stars:>100'. Returns up to `limit` repos (full_name, description, stars, language, url, updated_at). Unauthenticated calls share a low rate limit.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text with optional GitHub qualifiers, e.g. 'mcp server language:typescript'"
},
"sort": {
"type": "string",
"enum": [
"stars",
"updated",
"forks"
],
"default": "stars",
"description": "Sort order: most stars, most recently updated, or most forks"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 10,
"description": "Max repositories to return (1-30)"
}
},
"required": [
"query"
],
"additionalProperties": false
}π’github_repo(owner, repo)
[github] Get metadata for one public repository you already know by owner and name: description, stars, forks, language, license, topics, url and last push time. Use github_search_repos first if you only have keywords. Returns an error if the repo does not exist or is private.
Input Schema
{
"type": "object",
"properties": {
"owner": {
"type": "string",
"description": "User or organization that owns the repo, e.g. 'cloudflare'"
},
"repo": {
"type": "string",
"description": "Repository name only, without the owner, e.g. 'workers-sdk'"
}
},
"required": [
"owner",
"repo"
],
"additionalProperties": false
}π’npm_package(name)
[npm] Get the latest version, description, license and homepage of an npm package. For download counts use npmstats_downloads instead. Returns an error if the package does not exist.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Package name, e.g. 'express' or '@types/node'"
}
},
"required": [
"name"
],
"additionalProperties": false
}π’npmstats_downloads(name)
[npmstats] Get how many times an npm package was downloaded in the last 7 days, as a popularity signal. For version or license info use npm_package instead. Returns package, downloads, start and end dates.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Package name, e.g. 'express' or '@types/node'"
}
},
"required": [
"name"
],
"additionalProperties": false
}π’arxiv_search(query, limit)
[arxiv] Search arXiv research papers by keyword across title, abstract and authors, ranked by relevance. Use it for academic preprints; use wikipedia_search for general background. Returns id/link, title, publication date, authors and abstract.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keywords, e.g. 'model context protocol'"
},
"limit": {
"type": "integer",
"description": "Max results (1-20)",
"minimum": 1,
"maximum": 20,
"default": 5
}
},
"required": [
"query"
],
"additionalProperties": false
}π’holidaycn_year(year)
[holidaycn] List every official holiday day off and every make-up workday (θ°δΌδΈη) in mainland China for one year, e.g. to tell whether a date is a working day or plan around ζ₯θ/ε½εΊ. Returns entries of name (Chinese holiday name), date (YYYY-MM-DD) and isOffDay (true = day off, false = make-up workday). Ordinary weekends are not listed; a date that is absent follows the normal Mon-Fri rule. Data usually appears in November for the next year.
Input Schema
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"description": "Four-digit year, e.g. 2026 (data from 2007 on)",
"minimum": 2007,
"maximum": 2100
}
},
"required": [
"year"
],
"additionalProperties": false
}π’baiduhot_realtime
[baiduhot] Get the current Baidu real-time hot search ranking (ηΎεΊ¦ηζζ¦): what Chinese internet users are searching for right now. Use it for Chinese news and trending topics; use hackernews_front_page for English tech news. Returns up to 50 entries of word (topic in Chinese), index (rank; the pinned item has none) and url (Baidu search link).
Input Schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}π’shici_random(theme)
[shici] Get one random famous line of classical Chinese poetry (θ―/θ―/ζ²), optionally from a theme. Use it for a daily quote, a greeting card line or a writing prompt. Returns content (the line), origin (poem title), author and category (theme path such as ε€θ―ζ-ζζ -ζζ©).
Input Schema
{
"type": "object",
"properties": {
"theme": {
"type": "string",
"description": "Theme: all (default), or a category path such as shuqing (ζζ
), siji (εε£), shanshui (ε±±ζ°΄), tianqi (倩ζ°), renwu (δΊΊη©), shenghuo (ηζ΄»), jieri (θζ₯), dongwu (ε¨η©), zhiwu (ζ€η©)",
"enum": [
"all",
"shuqing",
"siji",
"shanshui",
"tianqi",
"renwu",
"shenghuo",
"jieri",
"dongwu",
"zhiwu"
],
"default": "all"
}
},
"required": [],
"additionalProperties": false
}Community
Evidence