F5 MCP服务器
F5设备(TMOS/BIG-IP) iControl REST API连接到 模型上下文协议(MCP)服务器是。\ 可以设置为自然语言请求,包括虚拟服务器、池、配置文件、首选项、L4标准设置、HA。
连接信息:mgmt IP、帐户、密码不存储在文件中。调用所有工具时 tmos_host, tmos_用户名, tmos_密码 输入作为参数。
______________________________________________________________________
目录
______________________________________________________________________
1.项目结构
f5-mcp/
├── F5MCPserver.py # MCP 서버 진입점. 도구 정의 및 stdio 트랜스포트
├── Tools/
│ ├── F5object.py # F5 iControl REST API 클라이언트 (CRUD, 기본설정, L4 표준, HA 등)
│ └── settings.py # 연결 설정 생성 (build_endpoint_settings). 저장소/파일 없음
├── scripts/
│ ├── run_mcp.bat # Windows용 MCP 실행 (프로젝트 루트에서 python -m F5MCPserver)
│ ├── run_mcp.sh # macOS/Linux용 MCP 실행
│ └── commit-if-changes.sh # 변경 시 커밋 헬퍼 (선택)
├── explore_configs.py # DNS/NTP/Syslog 등 조회 스크립트 (CLI 인자로 host/계정 전달)
├── requirements.txt # Python 의존성 (requests, mcp, python-dotenv, PyYAML)
├── claude_desktop_config.json
├── claude_desktop_config.windows.example.json
├── claude_desktop_config.mac.example.json
└── *.md # 가이드 문서: guide_*, prompt_* (아래 §2 참고)- 实际动作:
F5MCPserver.py定义MCP工具,每个工具_resolve_connection(tmos_host, …)验证连接后Tools.F5object.F5_object使用进行API调用。 - 连接信息:
.env不使用或设备列表文件。每次呼叫tmos_host,tmos_username,tmos_password(和选择tmos_port)。
______________________________________________________________________
2.文档(.md)指南
名称规则: 导游\_ =使用•设置指南, 提示\_ =AI规则。
| 文件 | 说明 |
|---|---|
| README.md (本文档) | 项目简介、结构、文档列表、 部署和安装, 开发指南 集成 |
| guide_标准设置_Flow.md 标准设置流程:首选项(第0节)、L4DB/配置文件(第1节)、One-Arm、冗余、VLAN/Self IP/Route、SNAT、配置文件。包括应用前/后验证程序 | |
| guide_工具_使用方法.md | 工具列表、使用示例、Claude联动。CRUD、auth user、基本/L4标准、HA工具清理和自然语言方案 |
| 导游_범용_API毫米 | 通用TMOS API:tm_get/tm_post/tm_patch/tm_put/tm_delete。使用path、body创建/修改/删除所有设置 |
| config_templates.yaml 配置YAML模板(connection、basic_settings、vlan、pool、virtual、monitor、profile、policy、irule等)。只填充要使用的部分使用 | |
| guide_YAML_模板_用法.md config_templates.yaml各部分说明和MCP工具映射。输入结构化设置时请注意 | |
| prompt_AI代理_规则.md | AI代理的规则:默认设置•L4标准•HA时禁止/必需,ask_user处理,特定场景的行为 |
部署和安装本README的 §3部署和安装指南,开发时要参考的规则是 §4开发指南和指南在中整理。
______________________________________________________________________
3.部署和安装指南
在Windows和macOS上安装、运行和Claude的联动方法。
3.1前提条件
- Python3.7或更高版本
- 窗户: python.org在安装时 “将Python添加到PATH” 选择 - macOS: python3 或者Homebrew等
- F5连接信息:管理IP、帐户(例如admin)、密码(每次调用工具时都输入)
3.2项目准备
代码位置
REM Windows
cd C:\Users\사용자명\경로\f5-mcp# macOS
cd /Users/사용자명/경로/f5-mcp虚拟环境(可选)
REM Windows
python -m venv .venv
.venv\Scripts\activate# macOS
python3 -m venv .venv
source .venv/bin/activate依赖性安装
REM Windows
pip install -r requirements.txt# macOS
pip install -r requirements.txt3.3连接信息
连接信息包括: 不写入文件或.env。\ Claude等每次使用MCP工具时 tmos_host(管理IP)、 tmos_用户名, tmos_密码 作为参数。 tmos_port(默认443)是可选的。
3.4执行方法
在终端上确认
- 窗户:
python -m F5MCPserver或scripts\run_mcp.bat - macOS:
python3 -m F5MCPserver或./scripts/run_mcp.sh(需要时chmod +x scripts/run_mcp.sh)
在Claude Desktop中用作MCP
- 设置文件位置
- 视窗:\ %APPDATA%\Claude\claude_desktop_config.json\ 池路径: C:\Users\사용자명\AppData\Roaming\Claude\claude_desktop_config.json - 如果文件夹/文件不存在: C:\Users\사용자명\AppData\Roaming\ 下面 Claude 创建文件夹,并在其中 claude_desktop_config.json 创建文件即可。 - Microsoft Store(MSIX)安装版如果使用,应用实际读取的路径可能为:\ C:\Users\사용자명\AppData\Local\Packages\Claude_xxxxx\LocalCache\Roaming\Claude\claude_desktop_config.json\ (在Packages下的文件夹名称中 Claude查找并使用包含的。如果MCP不起作用,请将配置文件放在该路径上进行修改。) - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- 设置示例(Windows) —
command在run_mcp.bat 绝对路径
{
"mcpServers": {
"f5-mcp": {
"command": "C:\\Users\\사용자명\\경로\\f5-mcp\\scripts\\run_mcp.bat",
"args": [],
"env": {}
}
}
}- 设置示例(MacOS) —
command在run_mcp.sh 绝对路径
{
"mcpServers": {
"f5-mcp": {
"command": "/Users/사용자명/경로/f5-mcp/scripts/run_mcp.sh",
"args": [],
"env": {}
}
}
}- 保存设置后 Claude Desktop完全关闭 →重新运行→ 新建聊天在中使用F5工具
设置示例文件: claude_desktop_config.windows.example.json, claude_desktop_config.mac.example.json (仅实际更改路径使用)。
Mac/Windows行为(相同代码)\ 这台服务器 在Mac和Windows上的相同代码以进行操作。根据操作系统的不同,工具列表也会发生变化,或者只有特定工具被“禁用”的设置。 没有.\ tm_get_tool, tm_post_tool, tm_patch_tool, tm_put_tool, tm_delete_tool包括 所有工具始终注册在配置文件中,也没有按工具启用/禁用的选项。\ 如果Claude提示说:“请在MCP服务器上激活这些工具。” Claude误导的是。 不是服务器端禁用的。 请参见下面的“仅显示部分工具或不支持”进行操作。
3.5使用流程摘要
- 安装:Python→项目文件夹→
pip install -r requirements.txt - 连接:无文件。使用工具时 tmos_host, tmos_用户名, tmos_密码 输入
- 运行:在终端上
python -m F5MCPserver或者,在Claude设置中使用run_mcp脚本 绝对路径 指定 - 使用:Claude在新聊天中要求“设置首选项”、“设置L4标准”、“创建VLAN”等
3.6疑难解答
| 症状 | 确认事项 |
|---|---|
| Windows上没有设置路径 | C:\Users\사용자명\AppData\Roaming\Claude 创建文件夹并在其中 claude_desktop_config.json 生成。MSIX安装面 AppData\Local\Packages\...\LocalCache\Roaming\Claude 验证路径 |
python/python3 没有 | 安装Python并选择PATH(Windows:选择“Add to PATH”) |
pip install 失败网络,Python3.7+ | |
| 在Claude中看不到F5工具 | commandgayf5-mcp的run_mcp.bat/run_mcp.sh 绝对路径确认身份 |
| 仅显示部分工具或显示为“不支持/禁用” | 所有Mac/Windows 相同的代码没有工具特定的激活设置。Claude完全关闭→重新运行→ 新建聊天 之后,像“用tm_get_tool查询ltm/pool”一样 直接说出工具的名字。 请求。重新验证连接的MCP是否为f5-mcp的设置路径 |
| 代码修改后的旧行为 | Claude 完全结束 重新启动,新建聊天 |
______________________________________________________________________
4.开发指南和指南
在修改和添加代码时进行匹配是一个很好的目标和规则。
4.1项目目标(维持)
- 目的:将F5设置为 自然语言中相同的品质用于执行的MCP服务器
- 三大功能
1. 默认设置 -hostname、NTP、DNS、syslog、admin/root密码等 1. L4标准设置 -sys_db、LTM connection、标准配置文件 1. 其他 -处理VLAN、Self IP、Pool、Virtual Server、HA、auth user等自然语言
更改代码/文档时,应与上述目的保持三大功能的区分。
4.2代码修改时的核对表
首选项 (Tools/F5object.py, apply_basic_settings)
- \[\]用户 光说给我的钱。 适用。设备查询的值不用作首选参数
- \[\]如果没有一个值
action: "ask_user"+basic_settings_guide/message返还
AI规则 (prompt_AI에이전트_규칙.md)
- \[\]“不要将未通过语言指定的项目放入apply_basic_setting_tool参数中”等规则是否与实际调用流相匹配
- \[\]首选项、L4标准、HA相关语句是否与代码行为一致
HA冗余 (Tools/F5object.py, apply_ha_settings)
- \[\]当Secondary CM name和Primary发生冲突时
secondary_device_name_actual应用short form后,使用与add_to_trust/config_sync相同的名称 - \[\]add_to_trustTMSH回退时密码转义(
'→'"'"')
工具·连接 (F5MCPserver.py)
- \[\]在所有工具中
tmos_host/tmos_port/tmos_username/tmos_password一致转发(仅在呼叫时使用连接信息) - \[ \]
apply_basic_settings_tool/apply_ha_tool参数为F5object是否与方法匹配
返回值·错误
- \[\]按步骤返回
{ "ok", "step", "result" }保持形状 - \[ \]
action,do_not_report_as_complete等,区分完成/未完成/ask_user - \[\]使错误消息中显示失败时的阶段、设备、API(REST vs TMSH)区分
4.3修改文档时
- 更改工具标识和参数时 guide_工具_使用方法.md, prompt_AI代理_规则.md 等,同时修改受影响的指南
- 不保存连接信息。
tmos_host/tmos_username/tmos_password仅传达到文档中
4.4代码样式·优先级
- 一致性:新工具
tmos_host,tmos_port,tmos_username,tmos_password收到,_resolve_connection验证后F5_object(**(conn or {}))调用 - 错误消息:具体编写以让用户/AI知道原因
______________________________________________________________________
本README中包含了部署、安装和开发指南。详细流程·工具使用方法如下 文档(.md)指南请参考中的每个指南。
