web2mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@web2mcplook up the Apollo 11 mission on Wikipedia and summarize it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
web2mcp
Turn any website or REST API into MCP tools — one tiny Cloudflare Worker, zero dependencies.
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 …Try it now
A public demo is running at https://web2mcp.cwei59969.workers.dev (tool list) with the MCP endpoint at:
https://web2mcp.cwei59969.workers.dev/mcpPaste 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.
Related MCP server: Remote MCP Server Authless
Why
Config, not code. A connector is a plain object: base URL, path, query, params. No SDK to learn.
Zero runtime dependencies. ~500 lines of readable JavaScript. Audit it in 10 minutes.
Token-friendly output.
pickandfieldstrim giant JSON responses down to what the model needs.Free hosting. Runs on the Cloudflare Workers free plan. Deploy in one click.
Safe by default. Requests are locked to each connector's host, arguments are type-checked, secrets stay server-side, optional bearer auth.
OpenAPI import. Convert any OpenAPI 3 spec into a connector with one command.
Built-in connectors (no API keys)
Tool | What it does |
| Search Wikipedia, read article summaries |
| Hacker News stories |
| Place name → coordinates (Open-Meteo) |
| Current weather + daily forecast (Open-Meteo) |
| ECB exchange rates (Frankfurter) |
| Public GitHub repositories (set |
| Any web page → clean Markdown (Jina Reader) |
Quick start
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.<you>.workers.dev/mcpOptional: protect your endpoint
npx wrangler secret put AUTH_TOKENConnect an AI client
Claude Desktop / Cursor / Windsurf (via mcp-remote):
{
"mcpServers": {
"web2mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://web2mcp.<you>.workers.dev/mcp",
"--header", "Authorization: Bearer ${WEB2MCP_TOKEN}"],
"env": { "WEB2MCP_TOKEN": "your-token" }
}
}
}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: .../mcpWrite a connector
Create connectors/myapi.js and add it to connectors/index.js:
export default {
name: "openlibrary", // tool names become openlibrary_<tool>
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 |
| Tool argument. As a whole value it keeps its type; missing optional args are dropped. |
| Read from a Worker secret / var — never exposed to the model. |
| Optional secret: the value is dropped when it is not set. |
| Select part of the response ( |
| Keep only these fields. |
| Truncate arrays. |
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.
From an OpenAPI spec
node scripts/openapi2connector.js https://petstore3.swagger.io/api/v3/openapi.json petstore --only GET > connectors/petstore.jsEndpoints
Path | |
| MCP Streamable HTTP endpoint (JSON responses, batch supported) |
| Human-readable list of tools |
| Tool list as JSON |
| 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.
Roadmap
HTML scraping connectors (CSS selectors via
HTMLRewriter)Per-tool rate limits and KV caching
OAuth for connectors that need user accounts
Connector registry: share connectors as JSON files
Agent-to-agent (A2A) chat rooms on Durable Objects
PRs with new connectors are very welcome — see CONTRIBUTING.md.
Responsible use
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.
License
If web2mcp saves you time, please ⭐ the repo — it helps others find it.
This server cannot be deployed
Maintenance
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Any REST/SOAP/GraphQL/OData/SQL API as MCP tools for Claude & ChatGPT. 561 connectors: SAP, ERP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA serverless MCP implementation on Cloudflare Workers that allows connecting AI models to custom tools without authentication requirements.-
- FlicenseNot gradedqualityCmaintenanceA serverless MCP implementation on Cloudflare Workers that allows connecting AI models to custom tools without requiring authentication.-
- FlicenseNot gradedqualityDmaintenanceExposes any REST API as MCP tools, enabling AI agents to discover and call existing HTTP endpoints without modifying the original API.-
- AlicenseNot gradedqualityDmaintenanceExpose any API to an LLM agent as two sandboxed MCP tools (search + execute) on Cloudflare Workers.5 npm2MIT