BIG-IP MCP 服务器
一个用于管理F5 BIG-IP设备的模型上下文协议(MCP)服务器。该服务器基于FastMCP 2.0构建,提供了工具用于BIG-IP负载均衡器的身份验证以及虚拟服务器配置的查询。
特性/功能
- 基于配置的凭证 - 在JSON配置文件中安全地存储BIG-IP凭据
- 多设备支持 - 从单台服务器管理多个BIG-IP设备
- 令牌缓存 - 自动缓存身份验证令牌并在其过期前重复使用
- 虚拟服务器管理 - 列出所有虚拟服务器及其状态和配置
- AS3 管理 - 检查、安装和升级F5应用服务3扩展
- SSL 灵活性 - 支持自签名证书(实验室环境中常见)
- Async/Await - 非阻塞I/O以实现响应迅速的性能
快速入门
- 安装依赖项 (见下文安装部分)
- 创建配置文件:
cp bigip_config.example.json bigip_config.json- 编辑
bigip_config.json附上您的BIG-IP设备详细信息 - 重启Claude桌面版 加载服务器
- 使用工具: 请 Claude“列出 BIG-IP 设备”或“列出 \[设备名称\] 上的虚拟服务器”
安装
第一步:创建虚拟环境
使用 venv(推荐用于标准 Python)
# Create virtual environment
python -m venv venv
# Activate on macOS/Linux
source venv/bin/activate
# Activate on Windows
venv\Scripts\activate使用uv(推荐用于现代Python项目)
# Create virtual environment with uv
uv venv
# Activate on macOS/Linux
source .venv/bin/activate
# Activate on Windows
.venv\Scripts\activate步骤2:安装依赖项
虚拟环境已激活:
使用紫外线
uv pip install -r requirements.txt使用 pip
pip install -r requirements.txt第三步:验证
确认已安装FastMCP:
fastmcp version注: 在运行服务器或安装包之前,请务必激活您的虚拟环境。
运行服务器
重要提示: 在运行服务器之前,请确保已激活您的虚拟环境。
方法1:直接执行(stdio传输)
# Ensure venv is activated first
source venv/bin/activate # or source .venv/bin/activate for uv
python server.py方法2:FastMCP 命令行界面 (CLI)
使用stdio传输方式运行(MCP的默认设置):
# Ensure venv is activated first
source venv/bin/activate
fastmcp run server.py:mcp使用HTTP传输运行:
fastmcp run server.py:mcp --transport http --port 8000配置
创建您的配置文件
- 复制示例配置:
cp bigip_config.example.json bigip_config.json- 编辑
bigip_config.json使用您的BIG-IP设备:
{
"devices": {
"prod-lb-01": {
"ip_address": "10.1.1.10",
"username": "admin",
"password": "your-password",
"verify_ssl": false,
"description": "Production load balancer"
},
"lab-bigip": {
"ip_address": "192.168.1.100",
"username": "admin",
"password": "admin",
"verify_ssl": false,
"description": "Lab environment"
}
}
}- 安全提示:
bigip_config.json自动被排除在 git 之外(.gitignore)
见 CONFIGURATION.md 翻译为中文是:“配置文件.md” 以获取详细的配置指南。
可用工具
list_bigip_devices
从配置文件中列出所有已配置的BIG-IP设备。
用法:
Show me the configured BIG-IP devices返回值: 设备名称、IP地址及描述列表
list_virtual_servers
列出特定BIG-IP设备上的所有虚拟服务器。
参数:
device_name- 配置文件中的设备名称(例如,'prod-lb-01')
用法:
List virtual servers on prod-lb-01返回值: 带有状态、目的地和配置详情的虚拟服务器格式化列表
特点:
- 从配置文件中读取凭据(聊天中不包含密码!)
- 自动验证并缓存令牌
- 令牌在重新认证前被重复使用了19分钟
manage_as3
在BIG-IP设备上检查、安装或升级F5 AS3(Application Services 3扩展)。
参数:
device_name- 来自配置文件的设备名称(例如,'prod-lb-01')action- 要执行的操作:检查(默认)、安装或升级auto_install- 设置为 True 以继续安装/升级(默认:False)
用法:
Check AS3 status on prod-lb-01
Install AS3 on lab-bigip
Upgrade AS3 on prod-lb-01返回值: AS3版本信息及安装/升级结果
特点:
- 自动从GitHub获取最新版本的AS3
- 下载和上传RPM到BIG-IP
- 安装选票任务直至完成
- 安装完成后进行验证
- 支持版本比较和升级建议
- 两步确认,与(某事物/某人)一起
auto_install该参数可防止意外安装
要求:
- AS3安装需要管理员账户(而不仅仅是管理员角色)
- 通过网络访问GitHub以下载RPM软件包
- 建议使用BIG-IP 14.1或更高版本以配合AS3 3.50或更高版本
资源
config://server- 服务器配置和功能
提示
help_prompt()- 服务器功能与使用概述
与Claude桌面版的使用
将此服务器添加到您的Claude桌面配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
推荐:使用包装脚本(避免权限问题)
{
"mcpServers": {
"bigip": {
"command": "/Users/a.ganti/Documents/code/mcp-servers/big-ip/run_server.sh"
}
}
}封装脚本会自动处理虚拟环境的激活,并绕过 macOS 的权限限制。
备选方案(如果您遇到权限问题):
Option 1: Direct Python from virtual environment
{
"mcpServers": {
"bigip": {
"command": "/Users/a.ganti/Documents/code/mcp-servers/big-ip/venv/bin/python",
"args": ["/Users/a.ganti/Documents/code/mcp-servers/big-ip/server.py"]
}
}
}Option 2: FastMCP CLI from virtual environment
{
"mcpServers": {
"bigip": {
"command": "/Users/a.ganti/Documents/code/mcp-servers/big-ip/venv/bin/fastmcp",
"args": ["run", "/Users/a.ganti/Documents/code/mcp-servers/big-ip/server.py:mcp"]
}
}
}注: 将上述路径更新为与您的实际安装目录相匹配。如果使用 uv,改变 venv 到;朝;向 .venv 在小路上。
更新配置后,重启Claude Desktop以加载服务器。
使用BIG-IP工具
示例交互
列出可用设备:
Show me the configured BIG-IP devices列出虚拟服务器:
List virtual servers on prod-lb-01或者更自然地说:
Can you show me the virtual servers on the lab-bigip device?检查多个设备:
List virtual servers on prod-lb-01 and then on prod-lb-02检查AS3状态:
Check AS3 status on prod-lb-01安装AS3:
Install AS3 on lab-bigip升级到AS3:
Upgrade AS3 on prod-lb-01 if a newer version is available工作流程
- 第一次: 创建并配置
bigip_config.json用你的设备 - 检查设备: 请Claude列出所有可用的BIG-IP设备
- 查询虚拟服务器: 在你的配置中指定设备名称
- 凭证: 自动从配置文件中读取(聊天中不包含密码!)
- 后续请求: 为提高效率而缓存的认证令牌
BIG-IP 要求
网络访问
- 运行此MCP服务器的机器必须能够通过网络访问BIG-IP管理界面(通常为端口443/HTTPS)
- 确保防火墙规则允许向您的BIG-IP设备发起出站HTTPS连接
BIG-IP 配置
- BIG-IP必须启用iControl REST API(默认已启用)
- 用户帐户必须具有适当的权限以:
- 通过iControl REST进行身份验证 - 读取虚拟服务器配置(通常至少需要“访客”角色)
支持的版本
- BIG-IP 版本 12.0 或更高版本(用于基于令牌的身份验证)
- 已在BIG-IP 13.x、14.x、15.x、16.x、17.x版本上测试通过
SSL证书
- 对于已安装有效SSL证书的生产用BIG-IP设备,请设置
verify_ssl: true - 对于使用自签名证书的实验室/开发环境,请使用
verify_ssl: false(默认)
安全考量
凭证处理
- 永远不要硬编码 - 通过MCP的引出功能交互式地请求凭证
- 会话作用域的缓存 - 凭据仅缓存于当前MCP会话中
- 基于令牌的认证 - 密码仅在初始认证时发送;后续请求使用令牌
- 自动过期 - 代币在19分钟后过期,并会自动刷新
最佳实践
- 尽可能使用具有只读权限的专用服务帐户
- 启用SSL验证
verify_ssl: true)用于生产环境 - 使用
clear_bigip_credentials在BIG-IP设备之间切换时使用的工具 - 确保Claude Desktop具有适当的文件权限(参见故障排除部分)
故障排除
虚拟环境中的权限错误
如果你看到像这样的错误 PermissionError: [Errno 1] Operation not permitted: '/path/to/venv/pyvenv.cfg':
- 使用包装脚本 (推荐):
{
"mcpServers": {
"bigip": {
"command": "/Users/a.ganti/Documents/code/mcp-servers/big-ip/run_server.sh"
}
}
}- 授予Claude桌面全磁盘访问权限:
- 打开系统设置 → 隐私与安全性 → 全盘访问 - 添加Claude并启用访问权限 - 重启Claude桌面版
- 或者重新创建虚拟环境:
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtBIG-IP 连接问题
“无法连接到BIG-IP”
- 验证网络连接:
ping - 验证HTTPS访问:
curl -k https:///mgmt/shared/authn/login - 检查防火墙规则是否允许出站HTTPS(端口443)
“身份验证失败:401”
- 验证用户名和密码是否正确
- 检查BIG-IP中的用户帐户是否已启用
- 验证用户是否具有API访问权限
“SSL验证失败”
- 对于自签名证书,请设置
verify_ssl: false当被提示时 - 对于生产环境,请确保BIG-IP拥有有效的SSL证书
“无法检索虚拟服务器:403”
- 用户帐户缺少读取LTM配置的权限
- 需要至少“访客”角色或自定义角色,并且该角色需具有
ltm读取权限
服务器无法连接
检查Claude桌面版的日志以查找错误。包装脚本提供了更好的错误处理和环境隔离。
发展
添加更多工具
为了增加额外的BIG-IP管理功能:
- 使用(某种方式或工具)创建一个新的异步函数
@mcp.tool装饰器 - 使用
ctx: Context用于日志记录和引出(或诱发)的参数 - 从上下文状态中重用缓存的凭据
- 遵循……中的模式
list_virtual_servers用于身份验证
示例:
@mcp.tool
async def list_pools(ctx: Context) -> str:
"""List all load balancing pools"""
# Get cached credentials
credentials = ctx.get_state("bigip_credentials")
token = ctx.get_state("bigip_token")
# Your implementation here
...扩展功能
可添加的其他F5 BIG-IP操作包括:
- 列出池成员及其状态
- 查询池统计信息
- 列出 iRules
- 获取SSL证书信息
- 查询虚拟服务器统计信息
- 列出节点及其可用性
文档
- FastMCPhttps://gofastmcp.com 翻译为中文可以是:“https://快速MCP(或根据具体上下文翻译为相关术语)网站”。不过,由于“gofastmcp.com”是一个具体的网址,且没有上下文来确定其确切含义,所以这里的翻译是基于假设的。在实际应用中,应该根据该网站的具体内容或官方名称来进行翻译。如果“gofastmcp”是某个特定服务或项目的名称,那么应该直接翻译为该服务或项目的中文名称
- MCP协议https://modelcontextprotocol.io(该网址可直接翻译为“模型上下文协议.io”,但通常网址保持原样不翻译,此处仅为说明其含义)
- F5 BIG-IP iControl REST APIhttps://clouddocs.f5.com/api/icontrol-rest/(该网址可译为:F5云文档中心的iControl REST API页面,但实际网址翻译通常不改变网址本身,此处仅为说明其内容)
- F5 LTM 虚拟服务器 APIhttps://clouddocs.f5.com/api/icontrol-rest/APIRef_tm_ltm_virtual.html 的中文翻译为:“F5 云文档:iControl REST API 参考 - TM(Traffic Management,流量管理)/ LTM(Local Traffic Manager,本地流量管理)/ Virtual(虚拟服务器)”
许可证
此项目按现状提供,用于通过MCP协议管理F5 BIG-IP设备。
