Pentru a produce câte un IP:port pe linie din ProxyHub MCP, începe cu răspunsul JSON-RPC complet, nu cu un bloc de text copiat din chat.

  1. Apelează list_proxies prin clientul MCP cu type setat la http.
  2. Salvează răspunsul complet ca mcp-response.json.
  3. Salvează convertorul de mai jos, care folosește biblioteca standard, ca mcp-to-file.py lângă răspuns.
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")

Rulează-l în acel director:

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

Verifică numărul afișat și http-proxies.txt. Răspunsul original se păstrează. Erorile JSON-RPC și răspunsurile isError la nivel de instrument produc erori; un răspuns reușit fără potriviri scrie un fișier gol și raportează zero. Limita instrumentului este de până la 100 de intrări pe apel, deci ieșirea reprezintă selecția returnată, nu neapărat întreaga listă de proxy-uri HTTP.

Convertorul acceptă doar rânduri raportate ca http și verifică sintaxa IPv4 și intervalul portului, conform formatului IPv4 al colectorului actual. Pentru alt protocol, păstrează acea informație sau folosește un fișier separat; un simplu fișier IP:port amestecat nu spune clientului receptor ce negociere să folosească.

Un rând exportat rămâne date. updated_at înregistrează ora actualizării datelor stocate, nu o cerere live din rețeaua ta. Testează endpointurile alese cu o cerere limitată prin proxy HTTP către destinația necesară. Dacă apelul MCP a eșuat, investighează preluarea datelor; dacă o cerere ulterioară printr-un endpoint exportat a eșuat, investighează acea conexiune proxy separată.

Articole similare