BIG-IP FastMCP服务器
模型上下文协议(MCP)服务器,通过以下方式向LLM客户端公开F5 BIG-IP管理原语 fastMCP最初的功能集侧重于BIG-IP v17:
- 创建、删除、更新和检查iRules。
- 在LTM虚拟服务器上连接/分离iRules。
- 列出虚拟服务器并管理池(列出/创建/修改),以安全地重新绑定应用程序后端。
- 为请求路由元数据创建、更新和删除内部数据组。
- 查询操作日志(例如。,
/var/log/ltm)通过简单的过滤控制。
项目布局
.
├── AGENTS.md # Working agreements/goals
├── notes/ # Research captured as markdown
├── src/bigip_mcp_server # Python package (fastMCP server + BIG-IP client)
└── README.md # This file工具
- Python≥3.11
fastmcp用于MCP服务器脚手架httpx用于异步iControl REST调用
安装deps(使用您首选的venv管理器):
pip install -e .配置
服务器从环境变量中读取其设置,并自动加载 .env 文件(repo根目录中的默认值或您在中设置的路径 BIGIP_ENV_FILE).将您的BIG-IP连接详细信息放在那里,它们将在之前加载 Settings.from_env() 跑。
| 变量 | 必填 | 描述 |
|---|---|---|
BIGIP_HOST | 是 | 管理主机名或IP(例如。 https://10.0.0.10). |
BIGIP_TOKEN | 条件 | 预先发布的iControl REST令牌。如果提供了用户名/密码,则可选。 |
BIGIP_USERNAME / BIGIP_PASSWORD | 条件 | 用于在以下情况下自动生成令牌的BIG-IP凭据 BIGIP_TOKEN 缺席。 |
BIGIP_LOGIN_PROVIDER | 无 | 传递给的身份验证提供程序 /mgmt/shared/authn/login (默认值 tmos). |
BIGIP_PARTITION | 无 | 要在其中操作的管理分区(默认 Common). |
BIGIP_VERIFY_SSL | 否 | 设置为 0 在开发过程中跳过TLS验证。 |
BIGIP_ENV_FILE | no | 备选路径 .env 如果您不想使用repo根文件,请使用该文件。 |
示例 .env 代码片段:
BIGIP_HOST=https://10.0.0.10
BIGIP_USERNAME=admin
BIGIP_PASSWORD=super-secret
BIGIP_PARTITION=Common
BIGIP_VERIFY_SSL=0运行MCP服务器
python -m bigip_mcp_server默认情况下,fastMCP在stdio上运行,因此MCP客户端可以在每个会话中生成它。
如果你只供应 BIGIP_USERNAME/BIGIP_PASSWORD,服务器将通过调用延迟进行身份验证 POST /mgmt/shared/authn/login 并缓存返回的令牌,在收到401/403响应时重试。
Stdio验证工具
通过附带的线束运行脚本化的端到端流(iRules CRUD、连接/分离、日志尾部)。它使用您当前的环境变量启动stdio服务器,通过调用每个工具 fastmcp.Client,并打印JSON摘要。
bigip-mcp-harness --virtual /Common/TestVs --log-lines 5 --log-filter mcpd关键选项:
--virtual–完全合格的虚拟服务器(默认/Common/TestVs).--rule-prefix–临时验证iRules的前缀。--server-command–如果需要自定义服务器入口点,请覆盖Python解释器后传递的参数(默认为-m bigip_mcp_server).--env KEY=VALUE-为服务器进程注入额外的环境变量;根据需要重复。
使用 --output validation.json 捕获磁盘上的JSON blob以供以后审计。
可用工具
| 工具名称 | 描述 |
|---|---|
server_info | 响应服务器的配置上下文(主机、分区、TLS验证)。 |
irules_list | 列出作用于配置分区的iRules,并可选择返回TCL主体。 |
irules_create / irules_update / irules_delete | 打包的CRUD帮助程序 POST/PATCH/DELETE /mgmt/tm/ltm/rule. |
virtuals_list | 列出配置分区范围内的LTM虚拟服务器。 |
virtuals_attach_irule / virtuals_detach_irule | 通过操纵以下操作在LTM虚拟服务器上附加或删除完全限定的iRules rules 阵列。 |
pools_list | 列出具有可选功能的LTM池 $select 过滤器。 |
pools_create / pools_modify | 通过以下方式管理池 POST/PATCH /mgmt/tm/ltm/pool,包括更换会员。 |
datagroups_list | 列出配置分区中的内部数据组。 |
datagroups_create / datagroups_update / datagroups_delete | 打包的CRUD帮助程序 /mgmt/tm/ltm/data-group/internal. |
logs_tail_ltm | 尾巴 /var/log/ltm 安全通过 POST /mgmt/tm/util/bash 具有可选的子字符串过滤功能 |
所有工具都自动适用于中的分区 BIGIP_PARTITION 除非每次调用都重写可选的分区参数。
测试
安装项目(可编辑)以及dev-extra,然后运行异步单元测试:
python3 -m pip install --break-system-packages -e .[dev]
python3 -m pytest后续步骤
- 根据真实的BIG-IP v17实例(特别是身份验证/令牌生命周期)验证所实现的工具。
- 强化
/mgmt/tm/util/bash具有速率限制和审计日志记录的执行路径。 - 添加针对开发BIG-IP或模拟线束运行的集成测试。
