Za jedan IP:port po retku iz ProxyHub MCP-a počnite od potpunog odgovora JSON-RPC, a ne teksta kopiranog iz razgovora.

  1. Pozovite list_proxies kroz MCP klijent s type postavljenim na http.
  2. Sačuvajte potpuni odgovor kao mcp-response.json.
  3. Sljedeći pretvarač koji koristi standardnu biblioteku sačuvajte kao mcp-to-file.py uz odgovor.
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")

Pokrenite ga u tom direktoriju:

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

Provjerite ispisani broj i http-proxies.txt. Izvorni odgovor ostaje sačuvan. Greške JSON-RPC i odgovori isError na nivou alata uzrokuju greške; uspješan odgovor bez podudaranja zapisuje praznu datoteku i prijavljuje nulu. Ograničenje alata je do 100 zapisa po pozivu, pa izlaz predstavlja vraćeni odabir, ne nužno cijelu listu HTTP proxyja.

Pretvarač prihvata samo retke prijavljene kao http te provjerava IPv4 sintaksu i raspon porta, u skladu s IPv4 formatom trenutnog sakupljača. Za drugi protokol sačuvajte tu informaciju ili koristite zasebnu datoteku; obična miješana datoteka IP:port ne govori klijentu koji je prima koje rukovanje treba koristiti.

Izvezeni redak i dalje je podatak. updated_at bilježi vrijeme ažuriranja pohranjenih podataka, a ne zahtjev uživo iz vaše mreže. Testirajte odabrane tačke ograničenim zahtjevom preko HTTP proxyja prema potrebnom odredištu. Ako poziv MCP-a ne uspije, istražite preuzimanje podataka; ako kasniji zahtjev kroz izvezenu tačku ne uspije, istražite tu zasebnu proxy vezu.

Povezani članci