Pour obtenir un IP:port par ligne depuis ProxyHub MCP, partez de la réponse JSON-RPC complète, pas d’un bloc de texte copié dans une discussion.

  1. Appelez list_proxies via votre client MCP avec type réglé sur http.
  2. Enregistrez la réponse complète dans mcp-response.json.
  3. Enregistrez le convertisseur ci-dessous, qui utilise la bibliothèque standard, sous le nom mcp-to-file.py à côté de cette réponse.
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")

Exécutez-le dans ce répertoire :

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

Vérifiez le nombre affiché et http-proxies.txt. La réponse d’origine est conservée. Les erreurs JSON-RPC et les réponses isError au niveau de l’outil lèvent des erreurs ; une réponse réussie sans résultat écrit un fichier vide et annonce zéro. La limite de l’outil est de 100 éléments par appel : la sortie représente donc la sélection renvoyée, pas nécessairement toute la liste de proxies HTTP.

Le convertisseur n’accepte que les lignes déclarées http et vérifie la syntaxe IPv4 ainsi que la plage du port, conformément au format IPv4 du collecteur actuel. Pour un autre protocole, conservez cette information ou utilisez un fichier distinct ; un simple fichier IP:port mélangé n’indique pas au client destinataire quelle négociation utiliser.

Une ligne exportée reste une donnée. updated_at indique l’heure de mise à jour des données stockées, pas une requête en direct depuis votre réseau. Testez les points choisis avec une requête via proxy HTTP aux limites définies vers la destination voulue. Si l’appel MCP a échoué, examinez la récupération des données ; si une requête ultérieure via un point exporté échoue, examinez cette connexion proxy distincte.

Articles similaires