Gardar os resultados MCP de ProxyHub nun ficheiro IP:Port
Le a resposta JSON de list_proxies, xestiona os erros e garda un ficheiro limpo de proxies HTTP, separando datos e probas en vivo.
Para obter un IP:port por liña de ProxyHub MCP, parte da resposta JSON-RPC completa, non dun bloque de texto copiado do chat.
- Chama a
list_proxiesdesde o cliente MCP contypeestablecido enhttp. - Garda a resposta completa como
mcp-response.json. - Garda o seguinte conversor, que usa a biblioteca estándar, como
mcp-to-file.pyxunto á 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")
Execútao nese directorio:
uv run --no-project python mcp-to-file.py
Revisa o reconto impreso e http-proxies.txt. A resposta orixinal consérvase. Os erros JSON-RPC e as respostas isError no nivel da ferramenta producen erros; unha resposta correcta sen coincidencias escribe un ficheiro baleiro e informa de cero. A ferramenta admite ata 100 entradas por chamada, así que a saída representa a selección devolta, non necesariamente toda a lista de proxies HTTP.
O conversor só acepta filas declaradas como http e comproba a sintaxe IPv4 e o intervalo do porto, de acordo co formato IPv4 do colector actual. Para outro protocolo, conserva esa información ou usa un ficheiro separado; un simple ficheiro IP:port mesturado non lle indica ao cliente receptor que negociación debe usar.
Unha fila exportada segue sendo un dato. updated_at rexistra a hora de actualización dos datos gardados, non unha petición en vivo desde a túa rede. Proba os puntos escollidos cunha petición limitada mediante proxy HTTP ao destino necesario. Se fallou a chamada MCP, investiga a obtención dos datos; se falla unha petición posterior por un punto exportado, investiga esa conexión proxy separada.