1. Conduid
  2. AI
  3. Phpipam MCP Server
MCP server · AI

Phpipam MCP Server

Model Context Protocol server for the phpipam

Unclaimed MIT ai
51Fair

Scored 12 days ago · breakdown

About Phpipam MCP Server

Phpipam MCP Server is an MCP server published by InfraMCP in the AI category: model Context Protocol server for the phpipam.

The repository has 2 stars and 5 forks, with the last commit 3 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/InfraMCP/phpipam-mcp-server

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (11)

address_limitMaximum addresses to show (default: 10, max: 1000)

Parameters not published.

domain_idOptional domain ID filter

Parameters not published.

hostnameHostname to search for (e.g., `server01` or `web-*`)

Parameters not published.

include_addressesInclude IP addresses in subnet (default: False)

Parameters not published.

include_fieldsField filtering options

Parameters not published.

include_usageInclude usage statistics (default: True)

Parameters not published.

ip_or_hostnameIP address or hostname to search for

Parameters not published.

limitMaximum results to return (default: 10, max: 1000)

Parameters not published.

querySearch term (CIDR, description, etc.)

Parameters not published.

section_idSection ID to query

Parameters not published.

subnet_idSubnet ID to query

Parameters not published.

Ask AI

✦

Ask AI about Phpipam MCP Server

Powered by Claude · Grounded in docs

I know everything about Phpipam MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.3.0v0.3.0 - Remote Streaming HTTP Transport · 1 Sep 2026Highlights Remote streaming HTTP transport The server can now run as a remote HTTP service (`MCP_TRANSPORT=streamable-http`) behind a TLS reverse proxy, in addition to the default local `stdio` mode. Existing local installs are unaffected.…
v0.2.1v0.2.1 - Write Operations & Documentation Improvements · 3 Oct 2025What's New in v0.2.1 🚀 Write Operations (Phase 3) create_subnet: Create new subnets with section, CIDR, description, and VLAN assignment reserve_ip_address: Reserve IP addresses with automatic or manual assignment update_ip_address: Update…

README

phpIPAM MCP Server

Pylint Safety Security Scan Dependency Security Check

Model Context Protocol server for phpIPAM IP address management and network infrastructure.

Installation

Prerequisites

  • Python 3.10+
  • phpIPAM instance with API access
  • App configured in phpIPAM with "SSL with App Code token" security

From PyPI (when published)

pip install phpipam-mcp-server

From Source

git clone https://github.com/InfraMCP/phpipam-mcp-server.git
cd phpipam-mcp-server
pip install -e .

Development Installation

pip install -e ".[dev]"

Usage

The server supports two transports, selected with the MCP_TRANSPORT environment variable:

Transport MCP_TRANSPORT Use case
Local (default) stdio Launched by the MCP client on the same machine
Remote streamable-http Runs as an HTTP service behind a TLS reverse proxy

Local (stdio)

The default transport. The MCP client starts the server as a subprocess, so no MCP_TRANSPORT value is required. Add to your MCP client configuration:

{
  "mcpServers": {
    "phpipam": {
      "command": "phpipam-mcp-server",
      "env": {
        "PHPIPAM_URL": "https://ipam.example.com/",
        "PHPIPAM_APP_ID": "your_app_id",
        "PHPIPAM_APP_CODE": "your_app_code_token"
      }
    }
  }
}

Remote (streaming HTTP)

Set MCP_TRANSPORT=streamable-http to run the server as a long-lived HTTP service that any streamable-http capable MCP client can reach at a URL such as https://phpipam.example.com/mcp. This mode is intended to run behind a reverse proxy that terminates TLS (see DEPLOYMENT.md for a full Docker + Caddy walkthrough).

Key differences from stdio mode:

  • The MCP endpoint is served at MCP_PATH (default /mcp).
  • A static bearer token (MCP_BEARER_TOKEN) protects the endpoint. Clients must send Authorization: Bearer <token>.
  • phpIPAM credentials can be supplied per client via X-phpIPAM-* HTTP headers, falling back to the server-wide PHPIPAM_* environment variables.
  • An unauthenticated /health endpoint is exposed for liveness probes.

Configuration (environment variables):

Variable Default Description
MCP_TRANSPORT stdio Set to streamable-http for remote mode
MCP_HOST 0.0.0.0 Bind address (HTTP mode)
MCP_PORT 8000 Bind port (HTTP mode)
MCP_PATH /mcp Path for the MCP endpoint
MCP_BEARER_TOKEN — Required token for Authorization: Bearer <token>
PHPIPAM_URL — Server-wide phpIPAM URL (fallback)
PHPIPAM_APP_ID — Server-wide phpIPAM App ID (fallback)
PHPIPAM_APP_CODE — Server-wide phpIPAM App Code (fallback)
PHPIPAM_VERIFY_SSL true Verify TLS to phpIPAM

Run it locally:

export MCP_TRANSPORT=streamable-http
export MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
export PHPIPAM_URL="https://ipam.example.com/"
export PHPIPAM_APP_ID="your_app_id"
export PHPIPAM_APP_CODE="your_app_code_token"
phpipam-mcp-server

Generate a strong token with openssl rand -hex 32. Never expose the endpoint over plain HTTP — always place it behind HTTPS.

MCP client configuration (remote):

{
  "mcpServers": {
    "phpipam": {
      "type": "http",
      "url": "https://phpipam.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <MCP_BEARER_TOKEN>",
        "X-phpIPAM-URL": "https://ipam.example.com/",
        "X-phpIPAM-App-Id": "your_app_id",
        "X-phpIPAM-App-Code": "your_app_code_token"
      }
    }
  }
}

If you configure shared phpIPAM credentials on the server (via PHPIPAM_*), omit the X-phpIPAM-* headers and send only Authorization.

Quick test:

# Health check (no auth required)
curl https://phpipam.example.com/health
# -> {"status":"ok"}

# Without a token the MCP endpoint returns 401
curl -i https://phpipam.example.com/mcp

Available Tools

list_sections(include_fields="")

List all IP sections from phpIPAM.

  • include_fields: Comma-separated fields or "all" for complete data

get_section_subnets(section_id, include_usage=True, include_fields="", limit=20)

Get subnets within a specific section.

  • section_id: Section ID to query
  • include_usage: Include usage statistics (default: True)
  • include_fields: Field filtering options
  • limit: Maximum results to return (default: 20, max: 1000)

search_addresses(ip_or_hostname, limit=10)

Search for IP addresses or hostnames.

  • ip_or_hostname: IP address or hostname to search for
  • limit: Maximum results to return (default: 10, max: 1000)

search_hostname(hostname, limit=10)

Search for IP addresses by exact or partial hostname. Supports * wildcards.

  • hostname: Hostname to search for (e.g., server01 or web-*)
  • limit: Maximum results to return (default: 10, max: 50)

get_subnet_details(subnet_id, include_addresses=False, address_limit=10)

Get detailed subnet information.

  • subnet_id: Subnet ID to query
  • include_addresses: Include IP addresses in subnet (default: False)
  • address_limit: Maximum addresses to show (default: 10, max: 1000)

list_vlans(domain_id=None, limit=20)

List VLANs from phpIPAM.

  • domain_id: Optional domain ID filter
  • limit: Maximum results to return (default: 20, max: 1000)

list_vrfs(limit=20)

List VRF instances from phpIPAM.

  • limit: Maximum results to return (default: 20, max: 1000)

list_locations(limit=20)

List physical locations for network infrastructure.

  • limit: Maximum results to return (default: 20, max: 1000)

list_nameservers(limit=20)

List DNS nameservers with configuration details.

  • limit: Maximum results to return (default: 20, max: 1000)

search_subnets(query, limit=10)

Search subnets by CIDR, description, or other criteria.

  • query: Search term (CIDR, description, etc.)
  • limit: Maximum results to return (default: 10, max: 1000)

Write Operations

create_subnet(section_id, subnet, mask, *, description="", vlan_id=None)

Create a new subnet in phpIPAM.

  • 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_address(subnet_id, ip=None, hostname="", description="", owner="")

Reserve an IP address in a subnet.

  • 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_address(address_id, hostname=None, description=None, owner=None)

Update an existing IP address record.

  • address_id: ID of the IP address to update
  • hostname: New hostname (optional)
  • description: New description (optional)
  • owner: New owner (optional)

delete_ip_address(address_id)

Delete/release an IP address reservation.

  • address_id: ID of the IP address to delete

update_subnet(subnet_id, description=None, vlan_id=None, vrf_id=None)

Update an existing subnet.

  • 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_subnet(subnet_id)

Delete a subnet (WARNING: This will delete all IP addresses in the subnet).

  • subnet_id: ID of the subnet to delete

Configuration

phpIPAM Setup

  1. Create an API application in phpIPAM admin interface
  2. Set security to "SSL with App Code token"
  3. Note the App ID and App Code
  4. Set appropriate permissions for the application

Authentication

This server uses static app code token authentication:

  • No token expiration
  • Simple configuration
  • Secure over HTTPS

Development

Code Quality

# Run pylint
python -m pylint src/phpipam_mcp_server/

# Run tests (when available)
python -m pytest

# Format code
python -m black src/
python -m isort src/

Project Structure

src/phpipam_mcp_server/
├── __init__.py          # Package initialization
└── server.py            # Main MCP server implementation

API Documentation

See the docs/ directory for detailed API documentation:

  • api-overview.md - General API information
  • controllers.md - Available endpoints and data structures
  • examples.md - Request/response examples
  • mcp-design.md - MCP server design and architecture

License

MIT License - see LICENSE file for details.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make changes with tests
  4. Run code quality checks
  5. Submit a pull request

Support

README fetched from the repository 5 days ago. The original is authoritative.

Questions

About Phpipam MCP Server

How do I install Phpipam MCP Server?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Phpipam MCP Server safe to use with an AI agent?

Its trust score is 51 out of 100 (fair). It passes 3 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Phpipam MCP Server still maintained?

Yes — the latest release is v0.3.0 (1 Sep 2026), and the last commit was 3 days ago. The repository has 2 stars.