Packetrove

Connect Packetrove to an AI agent

Connect a compatible MCP client to use Packetrove network tools. Start with the setup below, then use the tool examples.

Streamable HTTP · No account or API key required

https://api.staging.packetrove.com/mcp

Connect your client

With Claude Code or Codex installed, add this remote server. These commands configure the client; they do not install a local Packetrove server.

Claude Code

claude mcp add --transport http --scope user packetrove \
  https://api.staging.packetrove.com/mcp
Claude Code MCP documentation

Codex

codex mcp add packetrove \
  --url https://api.staging.packetrove.com/mcp
Codex MCP documentation

Use /mcp in your client to inspect the connection. Confirm that these tools are available: cidr-cover, cidr-subtract, range-to-cidrs, certificate-bundle, public-ip.

After configuration, the client discovers available tools with tools/list. Tool descriptions and schemas guide selection and arguments. Reading a web page does not configure a client or grant it tool access.

Server identity

The server advertises the following service identity, with its release version. Individual tool names, descriptions, and schemas are listed separately through tools/list.

{
  "name": "Packetrove",
  "title": "Packetrove",
  "description": "Open-source IP address and CIDR tools for network calculations and public IP lookup.",
  "websiteUrl": "https://staging.packetrove.com",
  "icons": [
    {
      "src": "https://staging.packetrove.com/packetrove-logo-32x32.png",
      "mimeType": "image/png",
      "sizes": [
        "32x32"
      ]
    }
  ],
  "version": "0.4.0"
}

Clients decide whether to display the title, description, website, or icon and may ignore optional fields. Successful protocol discovery does not prove that a client renders this information. The PNG icon is 32×32 and has no theme restriction.

Read results and handle errors

Read structuredContent, or the JSON in the text content block. Keep address counts as decimal strings or arbitrary-precision integers; converting large IPv6 counts to floating-point numbers loses precision.

Successful responses keep the result in structuredContent and the first JSON text block, then add an optional resource_link to the English tool page. Links contain no inputs or results and do not restore your calculation. Clients choose whether to display, ignore, or open links; automatic rendering or citation is not guaranteed. Opening the public-IP page checks a new browser connection, which may differ from the MCP caller connection. Errors contain no tool page link.

If isError is true, read the error JSON before retrying. Correct INVALID_INPUT and MIXED_ADDRESS_FAMILIES using the user’s information. CLIENT_IP_UNAVAILABLE means trusted connection metadata is missing; do not invent an address.

Business errors use the shared error JSON. The MCP SDK handles protocol validation errors. Invalid JSON, unsupported media types, and oversized bodies are rejected at the HTTP boundary.

Run a Node.js example

In a new directory, save the code below as packetrove-example.mjs, then run the commands. The example uses @modelcontextprotocol/client@2.0.0, discovers tools, and calls the covering-CIDR tool with documentation addresses.

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.staging.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

For local development, start pnpm dev:api and replace the server URL in the example with http://localhost:8787/mcp.

Deployment and connection limits

The server supports modern stateless requests and legacy Streamable HTTP initialization, discovery, and calls. It does not provide persistent sessions or standalone server event streams.

Public IP metadata is read for each tool-call request, with isolated server instances for concurrent clients. MCP results and errors use Cache-Control: no-store, no-transform. The application does not retain or log lookup addresses.

We count tool executions using operational events containing the tool name, success or error, a controlled error code, and a traffic source classification. Verified automated checks may also record an automation run identifier. These events exclude inputs, results, lookup addresses, raw request headers, and automation tokens. Cloudflare may add request metadata; see the privacy policy for processing and retention.

Previous tool names have no compatibility aliases: smallest_covering_cidr → cidr-cover, subtract_cidrs → cidr-subtract, get_public_ip → public-ip. Refresh tool discovery and update saved calls.

The website’s /mcp path is not the service endpoint: GET returns 404 and POST returns 405, without proxying or redirecting tool calls. Configure clients with https://api.staging.packetrove.com/mcp. For your own deployment, update the domains and separate exact Host and browser Origin allowlists; non-browser clients without an Origin header are supported.

Deployment, self-hosting, and production verificationPrivacy PolicyMCP Registry publication and version policyRead the technical MCP guide in the repository (English)