API 문서
Base URL: https://api.ip.utilo.kr
모든 응답은 JSON 형식이며, 성공 시 { data: {...} }, 에러 시 { error: { code, message } } 구조를 따릅니다.
GET /ip
접속자의 IP 주소와 GeoIP 정보를 반환합니다.
curl https://api.ip.utilo.kr/ip
응답 예시:
{
"data": {
"ip": "203.0.113.1",
"country": "KR",
"city": "Seoul",
"region": "Seoul",
"timezone": "Asia/Seoul",
"latitude": 37.5665,
"longitude": 126.978,
"isp": "Korea Telecom",
"asn": "AS4766",
"org": "Korea Telecom"
}
}
GET /ip/:ip
특정 IP의 GeoIP 정보를 조회합니다.
curl https://api.ip.utilo.kr/ip/8.8.8.8
GET /ip/:ip/vpn
VPN/프록시/호스팅 여부를 감지합니다.
curl https://api.ip.utilo.kr/ip/1.1.1.1/vpn
응답 예시:
{
"data": {
"ip": "1.1.1.1",
"isVpn": false,
"isProxy": false,
"isHosting": true,
"isMobile": false,
"confidence": "high"
}
}
GET /whois/:ip
IP 주소의 RDAP/Whois 정보를 조회합니다.
curl https://api.ip.utilo.kr/whois/8.8.8.8
응답 예시:
{
"data": {
"ip": "8.8.8.8",
"name": "GOGL",
"handle": "NET-8-8-8-0-2",
"startAddress": "8.8.8.0",
"endAddress": "8.8.8.255",
"country": "US",
"registrant": "Google LLC",
"events": [
{ "action": "registration", "date": "2014-03-14T16:52:05-04:00" }
]
}
}
GET /dns/:domain
도메인의 DNS 레코드를 조회합니다.
| 파라미터 | 설명 | 기본값 |
|---|---|---|
type | 레코드 타입: A, AAAA, MX, TXT, NS, CNAME | A |
curl "https://api.ip.utilo.kr/dns/example.com?type=MX"
응답 예시:
{
"data": {
"records": [
{ "name": "example.com", "type": "MX", "ttl": 3600, "data": "10 mail.example.com." }
]
}
}
GET /dns/:ip/reverse
IP 주소의 역방향 DNS(PTR)를 조회합니다.
curl https://api.ip.utilo.kr/dns/8.8.8.8/reverse
GET /blacklist/:ip
IP 주소의 블랙리스트 등록 여부를 확인합니다. IPv4만 지원합니다.
curl https://api.ip.utilo.kr/blacklist/8.8.8.8
응답 예시:
{
"data": {
"ip": "8.8.8.8",
"isListed": false,
"sources": [
{ "name": "AbuseIPDB", "listed": false, "confidence": 0 }
]
}
}
GET /cidr
CIDR 표기법을 계산합니다.
| 파라미터 | 설명 | 예시 |
|---|---|---|
range | CIDR 범위 | 192.168.1.0/24 |
curl "https://api.ip.utilo.kr/cidr?range=10.0.0.0/16"
응답 예시:
{
"data": {
"network": "10.0.0.0",
"broadcast": "10.0.255.255",
"subnetMask": "255.255.0.0",
"totalHosts": 65536,
"usableHosts": 65534,
"firstHost": "10.0.0.1",
"lastHost": "10.0.255.254"
}
}
MCP Server
POST /mcp — JSON-RPC 2.0 프로토콜을 통한 LLM/AI 도구 연동 엔드포인트입니다.
curl -X POST https://api.ip.utilo.kr/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
MCP(Model Context Protocol)를 지원하는 AI 클라이언트에서 직접 연결할 수 있습니다.
OpenAPI 명세
전체 엔드포인트의 요청/응답 스키마는 OpenAPI 3.1 형식으로 제공됩니다.
Swagger UI, Postman, OpenAPI 코드 생성기 등에 위 URL을 그대로 임포트하면 클라이언트 코드나 API 문서를 자동 생성할 수 있습니다.
MCP로 연결하기
Claude, Cursor 등 MCP를 지원하는 AI 클라이언트에서 utilo IP API를 도구로 직접 호출할 수 있습니다. 엔드포인트는 https://api.ip.utilo.kr/mcp(JSON-RPC 2.0, HTTP POST, 세션 없는 stateless 방식)이며, 프로토콜 버전 2025-03-26, 2024-11-05를 지원합니다.
Claude Code (CLI)
claude mcp add --transport http utilo-ip https://api.ip.utilo.kr/mcp
원격 HTTP MCP 서버를 지원하는 클라이언트
클라이언트의 mcpServers 설정에 아래와 같이 추가합니다. 설정 파일 위치와 정확한 키 이름은 클라이언트마다 다를 수 있으니 해당 클라이언트 문서를 확인하세요.
{
"mcpServers": {
"utilo-ip": {
"type": "http",
"url": "https://api.ip.utilo.kr/mcp"
}
}
}
stdio 전송만 지원하는 클라이언트(원격 HTTP MCP 서버를 직접 호출하지 못하는 구버전 클라이언트)는 mcp-remote 같은 브리지를 거쳐야 연결할 수 있습니다.
사용 가능한 도구 (6종)
| 도구 | 설명 |
|---|---|
lookup_ip | IP의 위치(국가·도시·위경도·시간대), ISP, ASN 조회. ip 생략 시 호출자의 공인 IP 사용 |
whois_ip | IP의 RDAP/Whois 등록 정보(등록기관, 할당 대역, 국가, 등록일) 조회 |
lookup_dns | 도메인의 A/AAAA/MX/TXT/NS/CNAME 레코드 조회 또는 IP의 역방향 DNS(PTR) 조회 |
check_blacklist | IPv4 주소의 DNSBL(Spamhaus 등) + AbuseIPDB 블랙리스트 등재 여부 확인 |
detect_vpn | IP의 프록시·호스팅·모바일 신호 감지 및 종합 VPN 여부·신뢰도 판정 |
calculate_cidr | CIDR 표기법으로 네트워크 주소·브로드캐스트·사용 가능 호스트 범위 계산 |
캐싱
| 엔드포인트 | 캐시 TTL |
|---|---|
/ip, /ip/:ip | 24시간 |
/ip/:ip/vpn | 6시간 |
/whois/:ip | 7일 |
/blacklist/:ip | 1시간 |
/dns/:domain | 1시간 |
/cidr | 캐시 없음 |
Rate Limiting
IP당 분당 60회 요청으로 제한됩니다. 제한 초과 시 429 Too Many Requests를 반환합니다.