IP地址管理服务器

phpIPAM MCP Server是一个用于IP地址管理和网络基础设施的模型上下文协议服务器,支持通过API进行IP地址的查询、创建、更新和删除操作。

  • by arunhotra
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 arunhotra/phpipam-mcp-server

使用说明

phpIPAM MCP 服务器

用于phpIPAM IP地址管理和网络基础设施的模型上下文协议服务器。

安装

先决条件

  • Python 3.10+(或 Python 3.10及以上版本)
  • 带有API访问权限的phpIPAM实例
  • 在phpIPAM中配置的应用,采用“带应用代码令牌的SSL”安全设置

从PyPI(发布时)

pip install phpipam-mcp-server

来自源(或“源代码”)

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

开发安装

pip install -e ".[dev]"

使用方法

配置

配置服务器有两种方法:

选项1:本地配置文件(推荐)

创建一个 config.json 项目根目录下的文件:

# Copy the example config
cp config.json.example config.json

# Edit with your phpIPAM details

这个(或:那个,根据上下文确定具体指代) config.json 文件应包含:

{
  "phpipam_url": "https://ipam.example.com/",
  "phpipam_app_id": "your_app_id",
  "phpipam_app_code": "your_app_code_token"
}

注: config.json 已被添加到 .gitignore 文件中,不会被提交到版本控制系统。

选项2:环境变量

或者,在您的MCP客户端配置中设置环境变量:

{
  "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"
      }
    }
  }
}

优先级: 如果 config.json 如果存在,则会使用它。否则,将使用环境变量。

作为MCP服务器

对于配置文件方法:

{
  "mcpServers": {
    "phpipam": {
      "command": "phpipam-mcp-server"
    }
  }
}

可用工具

list_sections(include_fields="")

列出phpIPAM中的所有IP段。

  • include_fields用逗号分隔的字段或“all”表示完整数据

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

获取特定部分内的子网。

  • section_id要查询的区段ID
  • include_usage包含使用统计信息(默认:True)
  • include_fields字段过滤选项
  • limit返回的最大结果数(默认:20,最大:100)

search_addresses(ip_or_hostname, limit=10)

搜索IP地址或主机名。

  • ip_or_hostname要搜索的IP地址或主机名
  • limit要返回的最大结果数(默认:10,最大:50)

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

获取详细的子网信息。

  • subnet_id要查询的子网ID
  • include_addresses在子网中包含IP地址(默认:False)
  • address_limit最多显示的地址数(默认:10,最大:50)

list_vlans(domain_id=None, limit=20)

从phpIPAM中列出VLAN列表。

  • domain_id可选的域ID过滤器
  • limit返回的最大结果数(默认:20,最大:100)

list_vrfs(limit=20)

从phpIPAM中列出VRF实例。

  • limit返回的最大结果数(默认:20,最大:100)

list_locations(limit=20)

列出网络基础设施的物理位置。

  • limit返回的最大结果数(默认:20,最大:100)

list_nameservers(limit=20)

列出带有配置详情的DNS名称服务器。

  • limit返回的最大结果数(默认:20,最大:100)

search_subnets(query, limit=10)

按CIDR、描述或其他标准搜索子网。

  • query搜索词(CIDR、描述等)
  • limit返回的最大结果数(默认:10,最大:50)

写操作

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

在phpIPAM中创建一个新的子网。

  • section_id将创建子网的区域ID
  • subnet网络地址(例如,“192.168.1.0”)
  • mask子网掩码(例如,“24”)
  • description子网的可选描述
  • vlan_id可选的VLAN ID

reserve_ip_address(subnet_id, ip=None, hostname="", description="", owner="")

在子网中保留一个IP地址。

  • subnet_id将IP保留的子网ID
  • ip要保留的特定IP地址(可选 - 将查找第一个可用地址)
  • hostnameIP地址的主机名
  • descriptionIP地址的描述
  • ownerIP地址的拥有者

update_ip_address(address_id, hostname=None, description=None, owner=None)

更新现有的IP地址记录。

  • address_id要更新的IP地址的ID
  • hostname新的主机名(可选)
  • description新描述(可选)
  • owner新车主(可选)

delete_ip_address(address_id)

删除/释放IP地址保留。

  • address_id要删除的IP地址的ID

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

更新现有的子网。

  • subnet_id要更新的子网的ID
  • description新描述(可选)
  • vlan_id新的VLAN ID(可选)
  • vrf_id新的VRF ID(可选)

delete_subnet(subnet_id)

删除一个子网(警告:这将删除子网中的所有IP地址)。

  • subnet_id要删除的子网的ID

配置

phpIPAM 设置

  1. 在phpIPAM管理界面中创建一个API应用程序
  2. 将安全设置为“使用应用代码令牌的SSL”
  3. 记下应用ID和应用代码
  4. 为应用程序设置适当的权限

认证

此服务器使用静态应用代码令牌进行身份验证:

  • 无令牌过期
  • 简单配置
  • 通过HTTPS安全连接

发展

代码质量

# 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/

项目结构

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

API 文档

见 docs/ 目录用于存放详细的API文档:

  • api-overview.md 通用API信息
  • controllers.md - 可用的端点和数据结构
  • examples.md - 请求/响应示例
  • mcp-design.md - MCP服务器设计与架构

许可证

MIT 许可证 - 详见 LICENSE 文件。

贡献

  1. 为仓库创建分支(或“克隆”仓库)
  2. 创建一个特性分支
  3. 在测试中进行更改
  4. 运行代码质量检查
  5. 提交拉取请求

支持

  • GitHub 问题页面:https://github.com/InfraMCP/phpipam-mcp-server/issues
  • 文档链接:https://github.com/InfraMCP/phpipam-mcp-server#readme