BIG-IP管理协议服务器

一个通过fastMCP协议向LLM客户端暴露F5 BIG-IP管理原语的服务器,支持iRules管理、虚拟服务器配置、数据组操作和日志查询等功能。

  • by sorinboia
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sorinboia/bigip-mcp

使用说明

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或模拟线束运行的集成测试。