create_dhcp_range
Define DHCP IP address ranges in Infoblox NIOS to automate network configuration and IP address assignment for devices.
Instructions
Create a DHCP range (scope) in Infoblox
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| start_addr | Yes | Start IP address of the range | |
| end_addr | Yes | End IP address of the range | |
| network | No | Network the range belongs to (CIDR) | |
| network_view | No | Network view | |
| comment | No | Comment | |
| member | No | DHCP member to serve this range |
Implementation Reference
- src/tools/dhcp.ts:292-320 (handler)The handler function for create_dhcp_range tool. It builds a data object with start_addr, end_addr, and optional fields (network, network_view, comment, member), then calls client.create('range', data) to create the DHCP range in Infoblox. Returns success message with reference or error message.
async ({ start_addr, end_addr, network, network_view, comment, member, }) => { const data: Record<string, unknown> = { start_addr, end_addr, }; if (network) data.network = network; if (network_view) data.network_view = network_view; if (comment) data.comment = comment; if (member) data.member = member; try { const ref = await client.create("range", data); return toolResult( `DHCP range created successfully.\nReference: ${ref}`, ); } catch (error) { return toolResult( `Error creating DHCP range: ${error}`, true, ); } }, - src/tools/dhcp.ts:267-291 (schema)Zod schema definition for create_dhcp_range tool input. Defines required fields (start_addr, end_addr) and optional fields (network, network_view, comment, member) with descriptions for each parameter. The member field is a nested object with _struct and name properties.
start_addr: z .string() .describe("Start IP address of the range"), end_addr: z .string() .describe("End IP address of the range"), network: z .string() .optional() .describe("Network the range belongs to (CIDR)"), network_view: z .string() .optional() .describe("Network view"), comment: z.string().optional().describe("Comment"), member: z .object({ _struct: z .literal("dhcpmember") .default("dhcpmember"), name: z.string().describe("Grid member FQDN"), }) .optional() .describe("DHCP member to serve this range"), }, - src/tools/dhcp.ts:263-321 (registration)Complete tool registration for create_dhcp_range using server.tool(). Includes the tool name 'create_dhcp_range', description 'Create a DHCP range (scope) in Infoblox', the Zod schema for input validation, and the async handler function.
server.tool( "create_dhcp_range", "Create a DHCP range (scope) in Infoblox", { start_addr: z .string() .describe("Start IP address of the range"), end_addr: z .string() .describe("End IP address of the range"), network: z .string() .optional() .describe("Network the range belongs to (CIDR)"), network_view: z .string() .optional() .describe("Network view"), comment: z.string().optional().describe("Comment"), member: z .object({ _struct: z .literal("dhcpmember") .default("dhcpmember"), name: z.string().describe("Grid member FQDN"), }) .optional() .describe("DHCP member to serve this range"), }, async ({ start_addr, end_addr, network, network_view, comment, member, }) => { const data: Record<string, unknown> = { start_addr, end_addr, }; if (network) data.network = network; if (network_view) data.network_view = network_view; if (comment) data.comment = comment; if (member) data.member = member; try { const ref = await client.create("range", data); return toolResult( `DHCP range created successfully.\nReference: ${ref}`, ); } catch (error) { return toolResult( `Error creating DHCP range: ${error}`, true, ); } }, ); - src/tools/dhcp.ts:5-7 (helper)The toolResult helper function that formats the response content for MCP tools. Takes a text string and optional isError flag, returning an object with content array containing type 'text' and the text content.
function toolResult(text: string, isError = false) { return { content: [{ type: "text" as const, text }], isError }; }