使用说明
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要查询的区段IDinclude_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要查询的子网IDinclude_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将创建子网的区域IDsubnet网络地址(例如,“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保留的子网IDip要保留的特定IP地址(可选 - 将查找第一个可用地址)hostnameIP地址的主机名descriptionIP地址的描述ownerIP地址的拥有者
update_ip_address(address_id, hostname=None, description=None, owner=None)
更新现有的IP地址记录。
address_id要更新的IP地址的IDhostname新的主机名(可选)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要更新的子网的IDdescription新描述(可选)vlan_id新的VLAN ID(可选)vrf_id新的VRF ID(可选)
delete_subnet(subnet_id)
删除一个子网(警告:这将删除子网中的所有IP地址)。
subnet_id要删除的子网的ID
配置
phpIPAM 设置
- 在phpIPAM管理界面中创建一个API应用程序
- 将安全设置为“使用应用代码令牌的SSL”
- 记下应用ID和应用代码
- 为应用程序设置适当的权限
认证
此服务器使用静态应用代码令牌进行身份验证:
- 无令牌过期
- 简单配置
- 通过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 文件。
贡献
- 为仓库创建分支(或“克隆”仓库)
- 创建一个特性分支
- 在测试中进行更改
- 运行代码质量检查
- 提交拉取请求
支持
- GitHub 问题页面:https://github.com/InfraMCP/phpipam-mcp-server/issues
- 文档链接:https://github.com/InfraMCP/phpipam-mcp-server#readme