Om een IP:port per reël uit ProxyHub MCP te maak, begin met die volledige JSON-RPC-antwoord, nie ’n teksblok wat uit ’n klets gekopieer is nie.

  1. Roep list_proxies deur jou MCP-kliënt aan met type op http gestel.
  2. Stoor die volledige antwoord as mcp-response.json.
  3. Stoor die volgende omskakelaar, wat die standaardbiblioteek gebruik, as mcp-to-file.py langs die antwoord.
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")

Voer dit in daardie gids uit:

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

Kontroleer die gedrukte telling en http-proxies.txt. Die oorspronklike antwoord bly behoue. JSON-RPC-foute en isError-antwoorde op hulpmiddelvlak veroorsaak foute; ’n suksesvolle antwoord sonder passings skryf ’n leë lêer en rapporteer nul. Die hulpmiddel se limiet is tot 100 inskrywings per oproep, dus is die uitvoer daardie teruggestuurde keuse, nie noodwendig die hele HTTP-instaanbedienerlys nie.

Die omskakelaar aanvaar net rye wat as http gerapporteer word en kontroleer IPv4-sintaksis en poortreeks, in lyn met die huidige versamelaar se IPv4-formaat. Vir ’n ander protokol moet jy dié inligting behou of ’n aparte lêer gebruik; ’n gewone gemengde IP:port-lêer sê nie vir die ontvangende kliënt watter handdruk om te gebruik nie.

’n Uitgevoerde ry is steeds data. updated_at teken die opdateringstyd van gestoorde data aan, nie ’n lewendige versoek uit jou netwerk nie. Toets gekose eindpunte met ’n begrensde HTTP-instaanbedienerversoek na die bestemming wat jy nodig het. As die MCP-oproep misluk het, ondersoek die dataherwinning; as ’n latere versoek deur ’n uitgevoerde eindpunt misluk, ondersoek daardie aparte instaanbedienerverbinding.

Verwante artikels