Untuk menghasilkan satu IP:port per baris dari ProxyHub MCP, mulai dari respons JSON-RPC lengkap, bukan blok teks yang disalin dari chat.

  1. Panggil list_proxies melalui klien MCP dengan type diatur ke http.
  2. Simpan respons lengkap sebagai mcp-response.json.
  3. Simpan konverter berbasis pustaka standar berikut sebagai mcp-to-file.py di samping respons itu.
import json
from ipaddress import IPv4Address
from pathlib import Path

reply = json.loads(
    Path("mcp-response.json").read_text(encoding="utf-8")
)
if "error" in reply:
    raise RuntimeError("MCP returned a JSON-RPC error")

result = reply["result"]
if result.get("isError"):
    raise RuntimeError("The proxy tool reported an error")

data = result["structuredContent"]
endpoints = []
seen = set()

for row in data["proxies"]:
    if row["type"] != "http":
        continue
    host = str(IPv4Address(row["ip"]))
    port = row["port"]
    if type(port) is not int or not 1 <= port <= 65535:
        raise ValueError("Invalid proxy port")
    endpoint = f"{host}:{port}"
    if endpoint not in seen:
        seen.add(endpoint)
        endpoints.append(endpoint)

text = "\n".join(endpoints)
Path("http-proxies.txt").write_text(
    text + ("\n" if text else ""),
    encoding="utf-8",
)
print(f"Saved {len(endpoints)} HTTP endpoints")

Jalankan di direktori tersebut:

uv run --no-project python mcp-to-file.py

Periksa jumlah yang dicetak dan http-proxies.txt. Respons asli tetap disimpan. Error JSON-RPC dan respons isError pada tingkat alat menimbulkan error; respons sukses tanpa kecocokan menulis berkas kosong dan melaporkan nol. Batas alat adalah hingga 100 entri per panggilan, jadi hasilnya mewakili pilihan yang dikembalikan itu, bukan selalu seluruh daftar proxy HTTP.

Konverter hanya menerima baris yang dilaporkan sebagai http dan memeriksa sintaks IPv4 serta rentang port, sesuai format IPv4 pengumpul saat ini. Untuk protokol lain, pertahankan informasi itu atau pakai berkas terpisah; berkas IP:port campuran biasa tidak memberi tahu klien penerima handshake mana yang harus dipakai.

Baris yang diekspor tetaplah data. updated_at mencatat waktu pembaruan data tersimpan, bukan permintaan langsung dari jaringan Anda. Uji endpoint pilihan dengan permintaan melalui proxy HTTP yang dibatasi ke tujuan yang diperlukan. Jika panggilan MCP gagal, telusuri pengambilan data; jika permintaan berikutnya melalui endpoint hasil ekspor gagal, telusuri koneksi proxy terpisah itu.

Artikel terkait