Packetrove를 AI 에이전트에 연결하기
호환되는 MCP 클라이언트를 연결해 Packetrove 네트워크 도구를 사용하세요. 아래에서 연결을 설정한 후 도구 예시를 참고하세요.
Streamable HTTP · 계정이나 API 키 불필요
https://api.dev.packetrove.com/mcp
클라이언트 연결하기
Claude Code 또는 Codex를 설치한 뒤 이 원격 서버를 추가하세요. 명령은 클라이언트를 설정하며 로컬 Packetrove 서버를 설치하지 않습니다.
Claude Code
claude mcp add --transport http --scope user packetrove \ https://api.dev.packetrove.com/mcpClaude Code MCP 문서
클라이언트에서 /mcp로 연결을 확인하세요. 다음 도구를 사용할 수 있는지 확인하세요: cidr-cover, cidr-subtract, range-to-cidrs, certificate-bundle, public-ip.
설정 후 클라이언트는 tools/list로 사용 가능한 도구를 찾습니다. 도구 설명과 스키마는 선택과 인수 구성을 안내합니다. 웹 페이지를 읽는 것만으로 클라이언트가 설정되거나 도구 접근 권한이 생기지는 않습니다.
서버 식별 정보
서버는 릴리스 버전과 함께 다음 서비스 식별 정보를 제공합니다. 각 도구의 이름, 설명, 스키마는 tools/list를 통해 별도로 나열됩니다.
{
"name": "Packetrove",
"title": "Packetrove",
"description": "Open-source IP address and CIDR tools for network calculations and public IP lookup.",
"websiteUrl": "https://dev.packetrove.com",
"icons": [
{
"src": "https://dev.packetrove.com/packetrove-logo-32x32.png",
"mimeType": "image/png",
"sizes": [
"32x32"
]
}
],
"version": "0.4.0"
}클라이언트는 제목, 설명, 웹사이트 또는 아이콘을 표시할지 결정하며 선택 필드를 무시할 수 있습니다. 프로토콜 검색 성공이 클라이언트의 정보 표시를 보장하지는 않습니다. PNG 아이콘은 32×32이며 테마 제한이 없습니다.
결과 읽기 및 오류 처리
structuredContent 또는 텍스트 블록의 JSON을 읽으세요. 주소 수는 십진수 문자열이나 임의 정밀도 정수로 유지하세요. 큰 IPv6 주소 수를 부동 소수점 숫자로 변환하면 정확도가 손실됩니다.
성공 응답은 structuredContent와 첫 번째 JSON 텍스트 블록에 결과를 유지하고 영어 도구 페이지로 연결되는 선택적 resource_link를 추가합니다. 링크에는 입력이나 결과가 없으며 계산을 복원하지 않습니다. 링크를 표시하거나 무시하거나 열지는 클라이언트가 결정하며 자동 표시나 인용은 보장되지 않습니다. 공용 IP 페이지를 열면 브라우저의 새 연결을 확인하므로 MCP 호출자의 연결과 다를 수 있습니다. 오류 응답에는 도구 페이지 링크가 없습니다.
isError가 true이면 재시도 전에 오류 JSON을 읽으세요. 사용자 정보를 바탕으로 INVALID_INPUT 및 MIXED_ADDRESS_FAMILIES를 수정하세요. CLIENT_IP_UNAVAILABLE은 신뢰할 수 있는 연결 메타데이터가 없다는 뜻입니다. 주소를 임의로 만들지 마세요.
업무 오류는 공유 오류 JSON을 사용합니다. MCP SDK가 프로토콜을 검증합니다. 잘못된 JSON, 지원하지 않는 미디어 형식, 너무 큰 본문은 HTTP 계층에서 거부됩니다.
Node.js 예제 실행
새 디렉터리에 아래 코드를 packetrove-example.mjs로 저장한 다음 명령을 실행하세요. 예제는 @modelcontextprotocol/client@2.0.0를 사용해 도구를 검색하고 문서용 주소로 CIDR 도구를 호출합니다.
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
const client = new Client(
{ name: 'packetrove-example', version: "0.4.0" },
{ versionNegotiation: { mode: 'auto' } },
);
try {
await client.connect(new StreamableHTTPClientTransport(new URL("https://api.dev.packetrove.com/mcp")));
const serverInfo = client.getServerVersion();
const { tools } = await client.listTools();
const result = await client.callTool({
name: "cidr-cover",
arguments: {"inputs":["203.0.113.1","203.0.113.2","203.0.113.6"]},
});
if (result.isError) throw new Error(JSON.stringify(result.content));
console.log(serverInfo, tools.map(tool => tool.name), result.structuredContent);
const links = result.content?.filter(content => content.type === 'resource_link') ?? [];
console.log(links); // Optional links; opening or presenting them is the client's choice.
} finally {
await client.close();
}npm init -y npm install @modelcontextprotocol/client@2.0.0 node packetrove-example.mjs
로컬 개발에서는 pnpm dev:api를 시작하고 예제의 서버 URL을 http://localhost:8787/mcp로 바꾸세요.
배포 및 연결 제한
서버는 최신 무상태 요청과 기존 Streamable HTTP의 초기화, 검색, 호출을 지원합니다. 영구 세션이나 독립적인 서버 이벤트 스트림은 제공하지 않습니다.
공인 IP 연결 정보는 도구 호출마다 읽으며 동시 클라이언트의 서버 인스턴스는 격리됩니다. MCP 결과와 오류는 Cache-Control: no-store, no-transform을 사용합니다. 애플리케이션은 조회 주소를 저장하거나 기록하지 않습니다.
도구 이름, 성공 또는 오류 상태, 제어된 오류 코드와 호출 출처 분류를 담은 운영 이벤트로 실행 횟수를 집계합니다. 검증된 자동 검사에는 실행 식별자가 기록될 수도 있습니다. 입력, 결과, 조회된 주소, 원시 요청 헤더와 자동 검사 토큰은 제외합니다. Cloudflare가 요청 메타데이터를 추가할 수 있으며 처리 및 보관 기간은 개인정보 처리방침을 참고하세요.
기존 도구 이름에는 호환 별칭이 없습니다: smallest_covering_cidr → cidr-cover, subtract_cidrs → cidr-subtract, get_public_ip → public-ip. 도구 검색과 저장된 호출을 업데이트하세요.
웹사이트의 /mcp는 서비스가 아닙니다. GET은 404, POST는 405를 반환하며 도구 호출을 프록시하거나 리디렉션하지 않습니다. 클라이언트에 https://api.dev.packetrove.com/mcp을 설정하세요. 직접 배포할 때는 도메인과 별도의 정확한 Host 및 브라우저 Origin 허용 목록을 갱신하세요. Origin 헤더가 없는 클라이언트도 지원합니다.