phpIPAM MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PHPIPAM_URL | Yes | The URL of the phpIPAM instance (e.g., https://ipam.example.com/) | |
| PHPIPAM_APP_ID | Yes | The App ID configured in phpIPAM | |
| PHPIPAM_APP_CODE | Yes | The App Code token for authentication |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sectionsA | List all IP sections from phpIPAM. CONTEXT OPTIMIZATION: Returns essential fields only by default. Use include_fields="all" for complete data. Args: include_fields: Comma-separated fields to include (default: essential only) Use "all" for complete data |
| get_section_subnetsA | Get subnets within a specific section. CONTEXT OPTIMIZATION: Limited to 20 results by default. Use limit parameter to control output size. Args: section_id: Section ID to get subnets from include_usage: Include usage statistics (default: True) include_fields: Comma-separated fields to include (default: essential only) limit: Maximum number of subnets to return (default: 20, max: 100) |
| search_addressesB | Search for IP addresses or hostnames in phpIPAM. CONTEXT OPTIMIZATION: Limited to 10 results by default. Args: ip_or_hostname: IP address or hostname to search for limit: Maximum number of results to return (default: 10, max: 50) |
| search_hostnameA | Search for IP addresses by exact or partial hostname in phpIPAM. CONTEXT OPTIMIZATION: Limited to 10 results by default. Args: hostname: Hostname to search for limit: Maximum number of results to return (default: 10, max: 50) |
| get_subnet_detailsA | Get detailed information about a specific subnet. CONTEXT OPTIMIZATION: Address listing limited to 10 by default. Args: subnet_id: Subnet ID to get details for include_addresses: Include IP addresses in the subnet (default: False) address_limit: Max addresses to show if include_addresses=True (default: 10) |
| list_vlansA | List VLANs from phpIPAM. CONTEXT OPTIMIZATION: Limited to 20 results by default. Args: domain_id: Optional domain ID to filter VLANs limit: Maximum number of VLANs to return (default: 20, max: 100) |
| list_vrfsA | List VRF instances from phpIPAM. CONTEXT OPTIMIZATION: Limited to 20 results by default. Args: limit: Maximum number of VRFs to return (default: 20, max: 100) |
| list_locationsA | List physical locations from phpIPAM. CONTEXT OPTIMIZATION: Limited to 20 results by default. Args: limit: Maximum number of locations to return (default: 20, max: 100) |
| list_nameserversA | List DNS nameservers from phpIPAM. CONTEXT OPTIMIZATION: Limited to 20 results by default. Args: limit: Maximum number of nameservers to return (default: 20, max: 100) |
| search_subnetsA | Search subnets by CIDR, description, or other criteria. CONTEXT OPTIMIZATION: Limited to 10 results by default. Args: query: Search term (CIDR, description, etc.) limit: Maximum number of results to return (default: 10, max: 50) |
| create_subnetA | Create a new subnet in phpIPAM. Args: section_id: Section ID where subnet will be created subnet: Network address (e.g., "192.168.1.0") mask: Subnet mask (e.g., "24") description: Optional description for the subnet vlan_id: Optional VLAN ID |
| reserve_ip_addressA | Reserve an IP address in a subnet. Args: subnet_id: Subnet ID where IP will be reserved ip: Specific IP address to reserve (optional - will find first available) hostname: Hostname for the IP address description: Description for the IP address owner: Owner of the IP address |
| update_ip_addressC | Update an existing IP address record. Args: address_id: ID of the IP address to update hostname: New hostname (optional) description: New description (optional) owner: New owner (optional) |
| delete_ip_addressB | Delete/release an IP address reservation. Args: address_id: ID of the IP address to delete |
| update_subnetC | Update an existing subnet. Args: subnet_id: ID of the subnet to update description: New description (optional) vlan_id: New VLAN ID (optional) vrf_id: New VRF ID (optional) |
| delete_subnetA | Delete a subnet (WARNING: This will delete all IP addresses in the subnet). Args: subnet_id: ID of the subnet to delete |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Most tools have clear, distinct purposes, but search_addresses and search_hostname overlap significantly—both search for addresses by hostname, with search_addresses also accepting IPs. This could cause agent misselection.
Tool names follow a verb_noun pattern consistently (list_*, search_*, create_*, update_*, delete_*, reserve_*). Minor deviation: list_* for most listing operations but get_* for get_section_subnets and get_subnet_details.
16 tools is slightly above the typical 3-15 range, but the server covers a broad IPAM domain (sections, subnets, IPs, VLANs, VRFs, locations, nameservers). The count is reasonable and not bloated.
The core subnet and IP address lifecycle is well covered: create, update, delete, and search for both. Minor gaps exist: no create/update/delete for sections, VLANs, VRFs, locations, or nameservers, but these appear to be read-only references.