GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Descripción del creador (original en inglés)
Zero-dependency Cloudflare Worker gateway turning websites and REST APIs into MCP tools.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://web2mcp.cwei59969.workers.dev/mcpEjecuta esto en tu terminal
claude mcp add --transport http web2mcp https://web2mcp.cwei59969.workers.dev/mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"web2mcp": {
"url": "https://web2mcp.cwei59969.workers.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"web2mcp": {
"type": "http",
"url": "https://web2mcp.cwei59969.workers.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://web2mcp.cwei59969.workers.dev/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Nombres y descripciones de las herramientas tal como los informó el servidor el 6 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.
wikipedia_search[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.
wikipedia_summary[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.
hackernews_front_page[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.
hackernews_search[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.
geocode_search[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.
weather_forecast[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 lo
currency_latest[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.
github_search_repos[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
github_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.
npm_package[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.
npmstats_downloads[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.
arxiv_search[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.
holidaycn_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, fals
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
shici_random[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 古诗文-抒情-感恩).
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub charleswei118, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Respondió en 54 ms (HTTP 200)
No hace falta iniciar sesión
Leímos 15 descripciones de herramientas y no encontramos instrucciones ocultas para la IA
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (0.2.0) llegó al registro hace 6 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: GitHub, Desktop Commander, Cloudflare MCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Turn any website or REST API into MCP tools — one tiny Cloudflare Worker, zero dependencies.
English · 简体中文
GitHub's 665 REST endpoints → 2 MCP tools, ~147,000 tokens of tool definitions → ~300 (catalog mode)
Every AI agent (Claude, ChatGPT, Cursor, your own bots…) now speaks the Model Context Protocol. But most websites and apps don't. web2mcp is the glue: describe an HTTP API in a few lines of config and it instantly becomes an MCP tool that any agent can call — hosted for free on Cloudflare's edge.
Claude / Cursor / any MCP client
│ MCP (Streamable HTTP, JSON-RPC) ▼ ┌──────────────────────────┐ │ web2mcp (CF Worker) │ connectors/*.js or CONNECTORS_JSON └──────────────────────────┘ │ │ │ Wikipedia GitHub any REST API / web page …
A public demo is running at https://web2mcp.cwei59969.workers.dev (tool list) with the MCP endpoint at:
https://web2mcp.cwei59969.workers.dev/mcp
Paste it into any client that supports remote MCP servers, or:
curl -s https://web2mcp.cwei59969.workers.dev/mcp -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"weather_forecast","arguments":{"latitude":35.68,"longitude":139.69}}}'
The demo is rate-limited by the free plan and has reader_read disabled. Deploy your own for real use.
pick and fields trim giant JSON responses down to what the model needs.| Tool | What it does |
|---|---|
wikipedia_search, wikipedia_summary | Search Wikipedia, read article summaries |
hackernews_front_page, hackernews_search | Hacker News stories |
geocode_search | Place name → coordinates (Open-Meteo) |
weather_forecast | Current weather + daily forecast (Open-Meteo) |
currency_latest | ECB exchange rates (Frankfurter) |
github_search_repos, github_repo | Public GitHub repositories (set GITHUB_TOKEN on Workers: shared IPs hit GitHub's anonymous limit) |
reader_read | Any web page → clean Markdown (Jina Reader) |
npm_package, npmstats_downloads | npm package info and weekly downloads |
arxiv_search | Search arXiv research papers |
holidays_list | Public holidays by country and year (Nager.Date) |
holidaycn_year | Mainland China holidays and make-up workdays (调休) for a year |
baiduhot_realtime | Baidu real-time hot search (百度热搜) |
shici_random | A random line of classical Chinese poetry (今日诗词) |
bilibili_popular, bilibili_ranking | Bilibili trending / ranking videos (stdio & self-hosted only: Bilibili blocks Cloudflare IPs) |
Click Deploy to Cloudflare above. Cloudflare copies this repo into your GitHub account, asks for an AUTH_TOKEN (any long random string, e.g. openssl rand -hex 32), then builds and deploys it. A minute later your server is live at https://web2mcp. .workers.dev/mcp, and every push to your copy redeploys it. The free Workers plan is enough.
git clone https://github.com/charleswei118/web2mcp && cd web2mcp
npm test # unit tests, no install needed (Node 20+) npm run smoke # calls every built-in tool against the real APIs npx wrangler dev # local server at http://localhost:8787/mcp npx wrangler deploy # your own https://web2mcp. .workers.dev/mcp
Optional: protect your endpoint
npx wrangler secret put AUTH_TOKEN
Claude Desktop / Cursor / Windsurf (via mcp-remote):
{
"mcpServers": { "web2mcp": { "command": "npx", "args": ["-y", "mcp-remote", "https://web2mcp. .workers.dev/mcp", "--header", "Authorization: Bearer ${WEB2MCP_TOKEN}"], "env": { "WEB2MCP_TOKEN": "your-token" } } } }
Run locally over stdio (no Cloudflare account needed; same connectors):
{
"mcpServers": { "web2mcp": { "command": "npx", "args": ["-y", "github:charleswei118/web2mcp"], "env": { "ENABLED_CONNECTORS": "wikipedia,hackernews,weather" } } } }
Or with Docker: docker build -t web2mcp . && docker run -i --rm web2mcp. Environment variables work the same as Worker bindings (ENABLED_CONNECTORS, CONNECTORS_JSON, MAX_OUTPUT_CHARS, TOOL_MODE=catalog).
Clients that support remote MCP servers natively (Claude.ai custom connectors, ChatGPT connectors, the OpenAI Responses API, Cloudflare AI Playground…) can use the URL directly. Test with the official inspector:
npx @modelcontextprotocol/inspector # transport: Streamable HTTP, URL: .../mcp
Create connectors/myapi.js and add it to connectors/index.js:
export default {
name: "openlibrary", // tool names become openlibrary_ description: "Search books on Open Library.", baseUrl: "https://openlibrary.org", headers: { /* "authorization": "Bearer ${MY_API_KEY}" */ }, tools: [ { name: "search", description: "Search books by title or author.", method: "GET", // GET | POST | PUT | PATCH | DELETE path: "/search.json", // "{arg}" in the path is URL-encoded query: { q: "{query}", limit: "{limit}" }, params: { query: { type: "string", required: true, description: "Title or author" }, limit: { type: "integer", minimum: 1, maximum: 20, default: 5 }, }, pick: "docs", // dotted path into the JSON response fields: ["title", "author=author_name", "year=first_publish_year"], }, ], };
Template rules:
| Syntax | Meaning |
|---|---|
"{arg}" | Tool argument. As a whole value it keeps its type; missing optional args are dropped. |
"${SECRET}" | Read from a Worker secret / var — never exposed to the model. |
"${?SECRET}" | Optional secret: the value is dropped when it is not set. |
pick: "a.b.*.c" | Select part of the response (* maps over arrays; a single value counts as a one-item list). |
fields: ["x", "alias=deep.path"] | Keep only these fields. |
limit: 10 | Truncate arrays. |
format: "public-url" (on a param) | Reject localhost, private/intranet IPs, cloud metadata, embedded credentials and odd ports before any request is made (SSRF guard). Used by reader_read. |
response: "xml" | Parse an XML/Atom/RSS response into JSON first, so pick / fields work on it (attributes become @name, namespace prefixes are dropped, repeated elements become arrays). Also "json", "text" (raw body) or "auto" (default). |
No-code option: put connectors in the CONNECTORS_JSON secret (a JSON array of the same objects) and they appear without touching the code. Use ENABLED_CONNECTORS="wikipedia,weather" to expose only some.
node scripts/openapi2connector.js https://petstore3.swagger.io/api/v3/openapi.json petstore --only GET > connectors/petstore.js
Exposing every endpoint as its own tool floods the model's context. In catalog mode web2mcp exposes just two tools:
search_api — find operations by keywords; returns their names and argument schemascall_api — run one operation by name with an arguments objectMeasured with GitHub's full REST OpenAPI spec (GET operations only, converted with scripts/openapi2connector.js):
| Mode | Tools in tools/list | Approx. context |
|---|---|---|
| Default (one tool per endpoint) | 665 | ~147,000 tokens |
| Catalog | 2 | ~300 tokens |
Turn it on per request with /mcp?mode=catalog, or for the whole deployment with the variable TOOL_MODE = "catalog" (?mode=tools switches back). Try it on the demo: https://web2mcp.cwei59969.workers.dev/mcp?mode=catalog.
| Path | |
|---|---|
POST /mcp | MCP Streamable HTTP endpoint (JSON responses, batch supported) |
POST /mcp?mode=catalog | Same, in catalog mode (search_api + call_api) |
GET / | Human-readable list of tools |
GET /tools | Tool list as JSON |
GET /health | Health check |
Supported MCP methods: initialize, ping, tools/list, tools/call, plus empty resources/list and prompts/list. Protocol versions 2025-06-18, 2025-03-26, 2024-11-05.
search_api + call_api) — v0.2HTMLRewriter)PRs with new connectors are very welcome — see CONTRIBUTING.md.
Only connect APIs and sites you are allowed to use. Respect each service's terms, robots rules and rate limits, and keep credentials in Worker secrets.
MIT
If web2mcp saves you time, please ⭐ the repo — it helps others find it.