mcpField
W
web2mcp

web2mcp

リモート
web2mcp.cwei59969.workers.dev開発ツール52 日前に更新
リポジトリ公式サイト

web2mcp について

web2mcpは、WebサイトやREST APIをMCPツールに変換する設定ベースのゲートウェイです。Cloudflare Workerまたはローカルのコネクターを使ってHTTPサービスを公開したい開発者向けです。

主な機能

  1. 01設定によるAPIコネクター定義
  2. 02OpenAPI 3仕様の変換
  3. 03レスポンス項目の選択と圧縮
  4. 04大規模API向けカタログモード
  5. 05任意のBearer認証

活用シーン

  1. 01REST APIのMCPクライアントへの公開
  2. 02OpenAPI仕様からのツール生成
  3. 03モデルに渡す大きなレスポンスの圧縮

MCP 対応

Streamable HTTPまたはstdioでMCPクライアントにツールを提供します。tools/listやtools/callなどのメソッドに対応しています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://web2mcp.cwei59969.workers.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

web2mcp

あらゆる Web サイトや REST API を MCP ツールに変換します — 依存関係ゼロの小さな Cloudflare Worker ひとつで実現できます。

English · 简体中文

CI License: MIT Runtime deps: 0 MCP

Deploy to Cloudflare

GitHub の 665 個の REST エンドポイント → 2 個の MCP ツール、約 147,000 トークンのツール定義 → 約 300 トークン(カタログモード(665 エンドポイントを 2 ツールに))

すべての AI エージェント(Claude、ChatGPT、Cursor、自作のボットなど)が、今では Model Context Protocol に対応しています。しかし、ほとんどの Web サイトやアプリは対応していません。web2mcp はその橋渡し役です。HTTP API を数行の設定で記述すれば、すぐに あらゆる エージェントが呼び出せる MCP ツールになります。Cloudflare のエッジで無料ホストできます。

 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 …

今すぐ試す

公開デモを **https://web2mcp.cwei59969.workers.dev**(ツール一覧)で実行しています。MCP エンドポイントはこちらです。

https://web2mcp.cwei59969.workers.dev/mcp

リモート MCP サーバーに対応するクライアントに貼り付けてください。または、次のようにします。

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}}}'

デモは無料プランのレート制限があり、reader_read は無効になっています。実際に使用する場合は、ご自身の環境にデプロイしてください。

特長

  • コードではなく設定。 コネクターは、ベース URL、パス、クエリ、パラメーターを指定するシンプルなオブジェクトです。SDK を習得する必要はありません。
  • 実行時の依存関係はゼロ。 読みやすい JavaScript 約 500 行で構成されています。10 分で監査できます。
  • トークンに配慮した出力。 pick と fields を使って、大きな JSON レスポンスからモデルに必要な情報だけを抽出できます。
  • 無料ホスティング。 Cloudflare Workers の無料プランで動作します。ワンクリックでデプロイできます。
  • デフォルトで安全。 リクエストは各コネクターのホストに制限され、引数は型チェックされ、シークレットはサーバー側に保持されます。オプションでベアラー認証も利用できます。
  • OpenAPI のインポート。 1 つのコマンドで、あらゆる OpenAPI 3 仕様をコネクターに変換できます。

組み込みコネクター(API キー不要)

ツール機能
wikipedia_search, wikipedia_summaryWikipedia を検索し、記事の概要を取得します
hackernews_front_page, hackernews_searchHacker News の記事を取得します
geocode_search地名 → 座標(Open-Meteo)
weather_forecast現在の天気と毎日の予報(Open-Meteo)
currency_latestECB の為替レート(Frankfurter)
github_search_repos, github_repo公開 GitHub リポジトリ(Workers に GITHUB_TOKEN を設定してください。共有 IP は GitHub の匿名利用制限に達する場合があります)
reader_readあらゆる Web ページ → 整形済み Markdown(Jina Reader)
npm_package, npmstats_downloadsnpm パッケージ情報と週間ダウンロード数

ワンクリックで自分の環境にデプロイ

上の Deploy to Cloudflare をクリックしてください。Cloudflare がこのリポジトリを GitHub アカウントにコピーし、AUTH_TOKEN(openssl rand -hex 32 などで生成した、長くランダムな文字列)を求めた後、ビルドしてデプロイします。1 分後には https://web2mcp.<your-subdomain>.workers.dev/mcp でサーバーが稼働し、コピー先へのプッシュのたびに再デプロイされます。Workers の無料プランで十分です。

クイックスタート

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/mcp

オプション:エンドポイントを保護する

npx wrangler secret put AUTH_TOKEN

AI クライアントを接続する

Claude Desktop / Cursor / Windsurf(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" }
    }
  }
}

stdio でローカル実行する場合(Cloudflare アカウント不要。コネクターは同じです):

{
  "mcpServers": {
    "web2mcp": {
      "command": "npx",
      "args": ["-y", "github:charleswei118/web2mcp"],
      "env": { "ENABLED_CONNECTORS": "wikipedia,hackernews,weather" }
    }
  }
}

Docker を使う場合:docker build -t web2mcp . && docker run -i --rm web2mcp。環境変数は Worker のバインディングと同じように使用できます(ENABLED_CONNECTORS、CONNECTORS_JSON、MAX_OUTPUT_CHARS、TOOL_MODE=catalog)。

リモート MCP サーバーにネイティブ対応するクライアント(Claude.ai のカスタムコネクター、ChatGPT のコネクター、OpenAI Responses API、Cloudflare AI Playground など)では、URL をそのまま使用できます。公式インスペクターでテストしてください。

npx @modelcontextprotocol/inspector   # transport: Streamable HTTP, URL: .../mcp

コネクターを作成する

connectors/myapi.js を作成し、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"],
    },
  ],
};

テンプレートのルール:

構文意味
"{arg}"ツールの引数です。値全体としては型が保持され、省略可能な引数が指定されていない場合は除外されます。
"${SECRET}"Worker のシークレット/変数から読み取ります。モデルに公開されることはありません。
"${?SECRET}"省略可能なシークレットです。設定されていない場合、値は除外されます。
pick: "a.b.*.c"レスポンスの一部を選択します(* は配列の各要素に適用され、単一の値も要素が1つのリストとして扱われます)。
fields: ["x", "alias=deep.path"]これらのフィールドだけを保持します。
limit: 10配列を切り詰めます。
response: "xml"XML/Atom/RSS レスポンスを先に JSON に解析し、pick/fields を適用できるようにします(属性は @name になり、名前空間プレフィックスは削除され、繰り返し出現する要素は配列になります)。また、"json"、"text"(生の本文)、または "auto"(デフォルト)も指定できます。

コード不要の方法: コネクターを同じオブジェクトの JSON 配列として CONNECTORS_JSON シークレットに設定すると、コードを変更せずに利用できるようになります。一部だけを公開するには、ENABLED_CONNECTORS="wikipedia,weather" を使用します。

OpenAPI 仕様から作成する
node scripts/openapi2connector.js https://petstore3.swagger.io/api/v3/openapi.json petstore --only GET > connectors/petstore.js

カタログモード:665 エンドポイント、2 ツール

すべてのエンドポイントを個別のツールとして公開すると、モデルのコンテキストがあふれてしまいます。カタログモードでは、web2mcp は2つのツールだけを公開します。

  • search_api — キーワードでオペレーションを検索し、名前と引数スキーマを返します
  • call_api — 引数オブジェクトを指定して、名前でオペレーションを実行します

GitHub の REST OpenAPI 仕様全体(GET オペレーションのみ。scripts/openapi2connector.js で変換)を使用して測定しました。

モードtools/list 内のツール数おおよそのコンテキスト量
デフォルト(エンドポイントごとに1つのツール)665約147,000トークン
カタログ2約300トークン

リクエストごとに有効にするには /mcp?mode=catalog を使用します。デプロイ全体で有効にするには、変数 TOOL_MODE = "catalog" を設定します(?mode=tools を指定すると元に戻ります)。デモでお試しください:https://web2mcp.cwei59969.workers.dev/mcp?mode=catalog。

エンドポイント

パス
POST /mcpMCP Streamable HTTP エンドポイント(JSON レスポンス、バッチ処理に対応)
POST /mcp?mode=catalog同じエンドポイントのカタログモード(search_api + call_api)
GET /ツールの人間が読みやすい一覧
GET /toolsJSON 形式のツール一覧
GET /healthヘルスチェック

対応する MCP メソッド:initialize、ping、tools/list、tools/call。また、空の resources/list と prompts/list にも対応しています。プロトコルバージョンは 2025-06-18、2025-03-26、2024-11-05 です。

ロードマップ

  • カタログモード(search_api + call_api)— v0.2
  • 実行時に URL から OpenAPI 仕様を読み込む
  • ワンクリックで「Deploy to Cloudflare」— v0.2
  • HTML スクレイピングコネクター(HTMLRewriter による CSS セレクター)
  • ツールごとのレート制限と KV キャッシュ
  • ユーザーアカウントが必要なコネクター向けの OAuth
  • コネクターレジストリ:コネクターを JSON ファイルとして共有
  • Durable Objects 上のエージェント間(A2A)チャットルーム

新しいコネクターの PR を歓迎します。CONTRIBUTING.md をご覧ください。

責任ある利用

利用が許可されている API とサイトのみを接続してください。各サービスの利用規約、robots ルール、レート制限を尊重し、認証情報は Worker のシークレットに保管してください。

ライセンス

MIT

web2mcp が時間の節約に役立ったら、リポジトリに ⭐ を付けてください。他の人が見つけやすくなります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。