F5副驾驶BIG-IP MCP服务器
将VS Code中的任何AI复制副本连接到F5 BIG-IP负载平衡器。作为HTTP服务器运行,通过以下方式公开F5管理工具 模型上下文协议(MCP).
适用于 GitHub Copilot, 克莱恩, 继续, Roo代码,以及支持MCP over Streamable HTTP的任何VS Code扩展。
它的作用
让您的Copilot以自然语言管理F5设备:
- “显示所有池及其成员状态”
- “使用SSL卸载在端口443上创建虚拟服务器”
- “为什么池成员10.0.1.5被标记下来?”
- “在F5文档中搜索iRule HTTP重定向示例”
服务器提供13个工具:设备管理、TMSH/bash执行、本地+外部知识搜索。
______________________________________________________________________
先决条件
| 要求 | 详细信息 |
|---|---|
| python | 3.10或更高 |
| F5 BIG-IP | 任何启用SSH的版本 |
| SSH访问 | 基于密钥或基于密码(需要密码 sshpass) |
| VS代码 | 安装了Copilot/AI扩展的任何版本 |
安装 sshpass (仅当使用密码验证时)
| OS | 命令 |
|---|---|
| macOS | brew install hudochenkov/sshpass/sshpass |
| Ubuntu/Debian | sudo apt install sshpass |
| RHEL/CentOS | sudo yum install sshpass |
| Windows | 本机不可用。使用SSH密钥或从WSL运行。 |
______________________________________________________________________
快速开始
1.克隆仓库
git clone https://github.com/darshandkd/f5-mcp-copilot.git
cd f5-mcp-copilot2.运行安装程序
macOS/Linux:
chmod +x setup.sh
./setup.shWindows(命令提示符):
setup.bat手动(任何操作系统):
python -m venv .venv
# Activate: source .venv/bin/activate (Linux/Mac) or .venv\Scripts\activate (Windows)
pip install -r requirements.txt python-dotenv3a。非秘密配置(.env)
编辑 .env (自动创建自 .env.example):
F5_HOST=10.1.1.100 # F5 management IP
F5_USER=admin # SSH username
F5_SSH_KEY=~/.ssh/f5_key # SSH key path (safe — it's a file path, not a secret)
F5_PORT=22
MCP_HOST=0.0.0.0 # Server bind address
MCP_PORT=8080 # Server portSSH密钥认证 这里配置了密钥文件路径——密钥文件路径不是秘密。如果两者都有F5_SSH_KEY和F5_PASSWORDSSH密钥优先。
3b。机密(仅环境变量)
F5_PASSWORD, MCP_API_KEY,以及 F5_DEVICE_*_PASSWORD 是 阻止从 .env --服务器在启动时剥离它们并记录错误。使用环境变量:
# Inline
MCP_API_KEY=your-key F5_PASSWORD=your-pass ./run_server.sh
# Export
export MCP_API_KEY=your-key && ./run_server.sh
# macOS Keychain
MCP_API_KEY=$(security find-generic-password -s f5-mcp-api-key -w) ./run_server.sh
# Interactive — run_server.sh prompts for MCP_API_KEY if not set
./run_server.sh4.启动服务器
macOS/Linux:
./run_server.sh窗户:
run_server.bat手册:
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
python f5_mcp_copilot.py您应该看到:
========================================
F5 MCP Copilot Server
Port: 8080 | Auto-restart: enabled
Logs: /path/to/logs/server.log
========================================
[date] Starting server...
F5 MCP Copilot Server starting on http://0.0.0.0:8080/mcp
API Key auth: enabled
Default F5 device: admin@10.1.1.100发射器(run_server.sh)在崩溃时自动重启服务器,并显示冷却窗口。
5.验证
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "x-api-key: your-secret-key" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'您应该得到一个列出所有13个工具的JSON响应。
______________________________________________________________________
连接到VS代码副本
选项A:使用附带的配置(推荐)
此回购包括 .vscode/mcp.json.在VS Code中打开项目文件夹,它将自动检测MCP服务器。VS代码将提示您在首次使用时输入API密钥。
选项B:添加到任何VS代码工作区
创建或编辑 .vscode/mcp.json 在您的项目中:
{
"servers": {
"f5-mcp": {
"type": "http",
"url": "http://localhost:8080/mcp",
"headers": {
"x-api-key": "${input:f5-api-key}"
}
}
},
"inputs": [
{
"id": "f5-api-key",
"type": "promptString",
"description": "API key for F5 MCP server",
"password": true
}
]
}选项C:添加到VS代码用户设置(全局)
打开 设置 >搜索 mcp >编辑 settings.json:
{
"mcp": {
"servers": {
"f5-mcp": {
"type": "http",
"url": "http://localhost:8080/mcp",
"headers": {
"x-api-key": "${input:f5-api-key}"
}
}
}
},
"inputs": [
{
"id": "f5-api-key",
"type": "promptString",
"description": "API key for F5 MCP server",
"password": true
}
]
}注: 避免对API密钥进行硬编码settings.json--使用${input:f5-api-key}因此VS Code会安全地提示它。
使用它
- 打开 副驾驶聊天 在VS代码中(Ctrl+Shift+I/Cmd+Shift+I)
- 切换到 代理模式 (点击聊天面板顶部的模式下拉菜单)
- F5工具会自动出现。问以下问题:
- “列出我的F5设备” - “显示所有池的状态” - “正在运行哪个版本的BIG-IP?”
需要代理模式。 MCP工具在询问或编辑模式下不可用。
______________________________________________________________________
兼容的AI扩展
此服务器适用于任何支持MCP over Streamable HTTP的VS Code扩展:
| 扩展 | 配置位置 | 注释 |
|---|---|---|
| GitHub Copilot | .vscode/mcp.json | 内置MCP支持(代理模式) |
| 克莱恩 | 控制MCP设置 | 添加为“流式HTTP”服务器 |
| 继续 | ~/.continue/config.json | 添加到下面 mcpServers |
| Roo代码 | Roo代码设置 | 添加为MCP服务器 |
通过这些扩展程序提供的所有型号(GPT-4o、Claude、Gemini、Llama等)都可以使用F5工具。这些工具与模型无关——它们返回任何LLM都可以解释的纯文本。
______________________________________________________________________
添加更多F5设备
这 .env 启动时为第一台设备添加文件种子。您可以随时添加更多设备,无论是通过Copilot聊天还是编辑 .env.
聊天中(自然语言或工具调用)
告诉你的副驾驶你想要什么:
"Add F5 device 10.1.1.200 with SSH key ~/.ssh/bigip_prod"
"Add F5 device bigip1.lab with user root and SSH key ~/.ssh/lab_key, call it lab"
"Switch default device to lab"
"Show me all my F5 devices"
"Remove device lab"或者直接使用工具:
| 行动 | 工具调用 |
|---|---|
| 添加设备 | f5_add_device(host='10.1.1.200', ssh_key='~/.ssh/f5_key') |
| 添加名称 | f5_add_device(host='10.1.1.200', ssh_key='~/.ssh/f5_key', name='prod') |
| 列出全部 | f5_devices() |
| 更新 | f5_update_device(name='prod', ssh_key='~/.ssh/new_key') |
| 切换默认值 | f5_set_default(name='lab') |
| 删除 | f5_remove_device(name='lab') |
在 .env 文件和环境变量
使用添加命名设备 F5_DEVICE_{NAME}_{FIELD} 图案在 .env (非机密字段),然后重新启动服务器:
# Production
F5_DEVICE_PROD_HOST=10.1.1.200
F5_DEVICE_PROD_USER=admin
# Lab (SSH key auth)
F5_DEVICE_LAB_HOST=192.168.1.50
F5_DEVICE_LAB_USER=root
F5_DEVICE_LAB_SSH_KEY=~/.ssh/lab_key通过环境变量设置设备密码:
F5_DEVICE_PROD_PASSWORD=your-password ./run_server.sh启动时,所有命名设备都会自动与默认设备一起加载。
为什么密码会出现在环境变量中: 在聊天中键入的任何内容都会在屏幕上显示,并发送给您的AI提供商。密码在 .env 存在备份工具和文件同步的风险。SSH密钥 *路径* 它们是安全的(它们只是文件位置),但密码是秘密——通过env-var注入它们。______________________________________________________________________
工具参考
| 工具 | 说明 |
|---|---|
f5_devices | 列出已配置的设备 |
f5_add_device | 添加设备(SSH密钥通过聊天,密码通过 .env) |
f5_update_device | 更新设备主机、用户、SSH密钥或端口 |
f5_remove_device | 删除设备(从内存中清除凭据) |
f5_set_default | 设置默认设备 |
f5_test | 测试SSH连接 |
f5_tmsh | 执行TMSH命令 |
f5_bash | 在F5上执行bash命令 |
f5_knowledge | 搜索本地+外部F5知识库 |
f5_search_docs | 搜索DevCentral、CloudDocs、AskF5 |
f5_doc_urls | 获取F5官方文档链接 |
f5_query | 通过可选设备验证向F5提问 |
______________________________________________________________________
知识库
服务器包括一个本地知识库(Knowledge/ 目录)涵盖:
- TMSH命令参考和备忘单
- LTM基础(池、虚拟、监视器)
- SSL/TLS配置
- iRules参考
- 高可用性和故障切换
- 网络配置
- 故障排除指南
当本地知识不涵盖某个主题时,服务器会自动搜索官方F5来源(DevCentral、CloudDocs、AskF5 K-articles)。
______________________________________________________________________
故障排除
服务器无法启动--端口正在使用中: 改变 MCP_PORT 在 .env 到不同的端口(例如。, 8081).
“sshpass未安装”错误: 安装 sshpass (请参阅先决条件)或切换到SSH密钥身份验证。
Copilot中未显示的工具:
- 确保服务器正在运行(
curl http://localhost:8080/mcp应该回应) - 确保你在 代理模式 (非询问或编辑模式)
- 检查
.vscode/mcp.jsonURL和API密钥与您的.env - 重新加载VS代码窗口(Ctrl+Shift+P>“重新加载窗口”)
SSH连接失败:
- 验证F5是否可访问:
ping - 验证SSH端口是否打开:
nc -zv 22 - 手动测试:
ssh -i admin@ "tmsh show sys version" - 检查服务器日志以获取详细的错误消息
Windows特定:
- 如果满足以下条件,请使用WSL或Git Bash
setup.bat有问题 - 对于SSH密钥认证,在密钥路径中使用正斜杠(
C:/Users/you/.ssh/f5_key) - Symlinks需要Windows上的管理员权限;复制
Knowledge/改为文件夹
______________________________________________________________________
生产特点
| 功能 | 详细信息 |
|---|---|
| TMSH外壳自动检测 | 自动检测F5管理员用户是否将TMSH作为默认shell(与bash相比),并相应地调整命令。无需配置。 |
| SSH连接多路复用 | 通过ControlMaster重用SSH连接——第一个命令打开连接,后续命令重用连接约5分钟。大大减少了延迟。 |
| 自动重启 | run_server.sh 在崩溃时重新启动服务器(在60秒内冷却最多10次)。日志到 logs/server.log. |
| 结构化日志记录 | 所有操作都记录了时间戳和严重性级别。工具错误被捕获并作为友好消息返回,而不是使服务器崩溃。 |
| 错误隔离 | 每个工具都包裹着 @_safe_tool --异常被捕获、记录并作为用户友好的错误消息返回。服务器永远不会因为一个错误的请求而崩溃。 |
______________________________________________________________________
安全
| 什么 | 如何 |
|---|---|
| SSH密钥 | 通过聊天添加(ssh_key='~/.ssh/key')或 .env --文件路径不是秘密 |
| 密码 | 仅环境变量(F5_PASSWORD=xxx ./run_server.sh)--从不进来 .env 或聊天 |
| API密钥 | 仅环境变量(MCP_API_KEY=xxx ./run_server.sh)--保护 /mcp 端点 |
.env 文件 | 仅限非秘密配置(主机、端口、用户、密钥路径)。Gitigned作为额外的保护措施 |
| 秘密执法 | 服务器阻止机密 .env 启动时--只接受环境变量 |
| 凭证 | 仅存储在内存中,服务器从不写入磁盘 |
| 网络 | 绑定到 0.0.0.0 默认情况下--使用 MCP_HOST=127.0.0.1 仅限本地访问 |
| 安全护栏 | 服务器端验证在命令到达设备之前阻止命令注入、凭据盗窃、横向移动、权限升级和数据泄露 |
______________________________________________________________________
许可证
麻省理工学院
