Per obtenir un IP:port per línia de ProxyHub MCP, parteix de la resposta JSON-RPC completa, no d’un bloc de text copiat del xat.

  1. Crida list_proxies des del client MCP amb type establert a http.
  2. Desa la resposta completa com a mcp-response.json.
  3. Desa el convertidor següent, que fa servir la biblioteca estàndard, com a mcp-to-file.py al costat de la resposta.
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")

Executa’l en aquell directori:

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

Revisa el recompte imprès i http-proxies.txt. La resposta original es conserva. Els errors JSON-RPC i les respostes isError a nivell d’eina generen errors; una resposta correcta sense coincidències escriu un fitxer buit i indica zero. El límit de l’eina és de fins a 100 entrades per crida, de manera que la sortida és aquella selecció retornada, no necessàriament tota la llista de proxies HTTP.

El convertidor només accepta files declarades com a http i comprova la sintaxi IPv4 i el rang del port, d’acord amb el format IPv4 del recopilador actual. Per a un altre protocol, conserva aquesta informació o fes servir un fitxer separat; un fitxer IP:port barrejat no indica al client receptor quina negociació ha d’utilitzar.

Una fila exportada continua sent una dada. updated_at registra l’hora d’actualització de les dades desades, no una petició en viu des de la teva xarxa. Prova els punts finals triats amb una petició limitada mitjançant proxy HTTP cap a la destinació necessària. Si la crida MCP ha fallat, investiga l’obtenció de dades; si falla una petició posterior per un punt final exportat, investiga aquella connexió proxy separada.

Articles relacionats