ProxyHub MCP 결과를 한 줄에 하나의 IP:port로 만들려면 채팅 텍스트를 복사하지 말고 완전한 JSON-RPC 응답부터 사용하세요.

  1. MCP 클라이언트에서 list_proxies를 호출하면서 type을 http로 설정합니다.
  2. 응답 전체를 mcp-response.json으로 저장합니다.
  3. 다음 표준 라이브러리 변환기를 응답 파일 옆에 mcp-to-file.py로 저장합니다.
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")

해당 디렉터리에서 실행합니다:

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

출력된 개수와 http-proxies.txt를 확인하세요. 원본 응답은 그대로 남습니다. JSON-RPC 오류와 도구 수준의 isError 응답은 예외를 발생시킵니다. 성공한 응답에 일치 항목이 없으면 빈 파일을 쓰고 0개라고 보고합니다. 도구는 호출당 최대 100개를 반환하므로 출력은 그때 반환된 선택 결과이며, HTTP 프록시 목록 전체가 아닐 수 있습니다.

변환기는 http로 보고된 행만 받아 IPv4 문법과 포트 범위를 확인합니다. 이는 현재 수집기의 IPv4 형식과 맞습니다. 다른 프로토콜이라면 해당 정보를 유지하거나 파일을 따로 쓰세요. 단순히 IP:port를 섞은 파일로는 받는 클라이언트에 어떤 핸드셰이크를 써야 하는지 알릴 수 없습니다.

내보낸 행도 여전히 데이터입니다. updated_at는 저장된 데이터의 갱신 시각을 기록하며, 자신의 네트워크에서 보낸 실시간 요청을 뜻하지 않습니다. 필요한 목적지를 대상으로 제한을 둔 HTTP 프록시 요청을 보내 선택한 엔드포인트를 시험하세요. MCP 호출이 실패했다면 데이터 조회를 조사하고, 나중에 내보낸 엔드포인트를 통한 요청이 실패했다면 그 별개의 프록시 연결을 조사해야 합니다.

관련 글