ProxyHub MCP 결과를 IP:Port 파일로 저장하기
list_proxies JSON 응답에서 오류를 처리하고 HTTP 프록시 파일을 만듭니다. 데이터 내보내기와 실제 연결 확인은 구분해야 합니다.
ProxyHub MCP 결과를 한 줄에 하나의 IP:port로 만들려면 채팅 텍스트를 복사하지 말고 완전한 JSON-RPC 응답부터 사용하세요.
- MCP 클라이언트에서
list_proxies를 호출하면서type을http로 설정합니다. - 응답 전체를
mcp-response.json으로 저장합니다. - 다음 표준 라이브러리 변환기를 응답 파일 옆에
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 호출이 실패했다면 데이터 조회를 조사하고, 나중에 내보낸 엔드포인트를 통한 요청이 실패했다면 그 별개의 프록시 연결을 조사해야 합니다.