Guardar los resultados MCP de ProxyHub en un archivo IP:Port
Lee la respuesta JSON de list_proxies, maneja los errores y guarda un archivo limpio de proxies HTTP sin confundir datos con pruebas en vivo.
Para obtener un IP:port por línea desde ProxyHub MCP, parte de la respuesta JSON-RPC completa, no de un bloque de texto copiado del chat.
- Llama a
list_proxiesdesde tu cliente MCP contypeestablecido enhttp. - Guarda la respuesta completa como
mcp-response.json. - Guarda el siguiente conversor, que usa la biblioteca estándar, como
mcp-to-file.pyjunto a la respuesta.
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")
Ejecútalo en ese directorio:
uv run --no-project python mcp-to-file.py
Revisa el recuento impreso y http-proxies.txt. La respuesta original se conserva. Los errores JSON-RPC y las respuestas isError del propio instrumento generan errores; una respuesta correcta sin coincidencias escribe un archivo vacío e indica cero. La herramienta devuelve como máximo 100 entradas por llamada, así que el archivo representa esa selección, no necesariamente toda la lista de proxies HTTP.
El conversor solo acepta filas declaradas como http y comprueba la sintaxis IPv4 y el rango del puerto, en consonancia con el formato IPv4 del recopilador actual. Para otro protocolo, conserva esa información o usa un archivo separado; un archivo IP:port mezclado no puede indicar al cliente receptor qué negociación debe usar.
Una fila exportada sigue siendo un dato. updated_at registra la hora de actualización de los datos almacenados, no una petición en vivo desde tu red. Prueba los endpoints elegidos con una petición limitada mediante proxy HTTP al destino que necesites. Si falló la llamada MCP, investiga la obtención de datos; si después falla una petición por un endpoint exportado, investiga esa conexión proxy por separado.