使用说明
带mcpo的F5 MCP服务器
F5 BIG-IP设备的模型上下文协议(MCP)服务器,通过mcpo提供服务。此设置提供AI 能够查询F5 BIG-IP对象(如池、节点、虚拟服务器和其他LTM)的助手 组件。
概述
此存储库包含:
- F5 MCP服务器:基于FastMCP的服务器,提供查询F5 BIG-IP设备的工具
- mcpo集成:通过mcpo为MCP服务器提供服务的配置,便于与AI客户端集成
- Docker设置:两个组件的完整容器化环境
先决条件
- Docker和Docker Compose
- 带有REST API访问的F5 BIG-IP设备
- 容器和F5设备之间的网络连接
快速开始
-
克隆并准备环境:
git clone https://github.com/f5-rahm/f5-mcp cd f5-mcp -
创建外部Docker网络:
docker network create labnet -
配置环境变量:
创建
f5mcp/.env带有F5凭据的文件:F5_HOST=192.168.1.100 F5_USER=admin F5_PASS=your-password创建
.env主目录中带有mcpo API密钥的文件:MCPO_API_KEY=your-mcpo-api-key-here -
启动服务:
docker-compose up -d备注:docker-compose.yml应配置为使用main
.envmcpo服务的文件。如果需要,添加env_file: .envmcpo服务定义。
项目结构
.
├── f5mcp/
│ ├── Dockerfile
│ ├── main.py # MCP server implementation
│ ├── requirements.txt
│ └── .env # F5 credentials (create this)
├── docker-compose.yml # Service definitions
├── mcpo-config.json # mcpo configuration
├── .env # mcpo API key (create this)
└── README.md
测试MCP服务器
1.直接HTTP测试
使用curl或任何HTTP客户端直接测试MCP服务器:
初始化会话:
curl -X POST http://localhost:8081/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}
}'
列出可用工具:
curl -X POST http://localhost:8081/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}'
测试obj_list工具:
# List all pools
curl -X POST http://localhost:8081/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "obj_list",
"arguments": {
"obj_type": "pool"
}
}
}'
# Get specific pool details
curl -X POST http://localhost:8081/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "obj_list",
"arguments": {
"obj_type": "pool",
"obj_name": "your-pool-name"
}
}
}'
2.容器测试
检查容器日志:
# F5 MCP Server logs
docker logs f5mcp
# MCPO logs
docker logs mcpo
网络内部测试:
# Test MCP server from another container
docker run --rm --network labnet curlimages/curl:latest \
curl -X POST http://f5mcp:8081/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"clientInfo":{"name":"test","version":"1.0.0"}}}'
测试mcpo
1.健康检查
# Check if mcpo is running
curl http://localhost:8000/health
# If API key authentication is enabled, include it:
curl -H "Authorization: Bearer your-mcpo-api-key-here" http://localhost:8000/health
2.列出已配置的服务器
curl -X GET http://localhost:8000/servers
3.通过mcpo测试MCP服务器
# Initialize connection through mcpo
curl -X POST http://localhost:8000/f5mcp/initialize \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}'
# List tools through mcpo
curl -X POST http://localhost:8000/f5mcp/tools/list \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{}'
# Call obj_list through mcpo
curl -X POST http://localhost:8000/f5mcp/tools/call \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"name": "obj_list",
"arguments": {
"obj_type": "pool"
}
}'
备注:如果mcpo配置有API密钥身份验证,则添加
-H "Authorization: Bearer your-mcpo-api-key-here"对于上述所有curl命令。
可用工具
obj_list
检索F5 BIG-IP LTM对象。
参数:
obj_type(必填):F5对象的类型(例如,“池”、“节点”、“虚拟”、“规则”)obj_name(可选):用于检索详细信息的特定对象名称
示例:
// List all pools
{
"obj_type": "pool"
}
// Get specific pool details
{
"obj_type": "pool",
"obj_name": "web-pool"
}
// List all virtual servers
{
"obj_type": "virtual"
}
配置
环境变量
F5 MCP服务器配置 (in f5mcp/.env):
F5_HOST:F5 BIG-IP管理IP地址F5_USER:具有API访问权限的F5用户名F5_PASS:F5用户密码
mcpo配置 (in .env):
MCPO_API_KEY:用于MCPO身份验证的API密钥(如果需要)
mcpo服务器配置
中的mcpo配置 mcpo-config.json 定义:
{
"mcpServers": {
"f5mcp": {
"type": "streamable-http",
"url": "http://f5mcp:8081/mcp",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream"
}
}
}
}
故障排除
常见问题
-
F5设备连接被拒绝:
- 验证F5_HOST是否可从容器访问
- 在中检查F5凭据
.env文件 - 确保F5设备已启用REST API
-
mcpo无法连接到MCP服务器:
- 确认两个容器都在
labnet网络 - 检查f5 mcp容器是否正在运行:
docker ps - 查看容器日志:
docker logs f5mcp
- 确认两个容器都在
-
网络问题:
- 确保
labnet网络存在:docker network ls - 如果缺少,请创建它:
docker network create labnet
- 确保
-
缺少API密钥:
- 验证
.env文件存在于具有MCPO_API_KEY的主目录中 - 检查一下
f5mcp/.env包含有效的F5凭据
- 验证
调试命令
# Check container status
docker-compose ps
# View logs
docker-compose logs f5mcp
docker-compose logs mcpo
# Test network connectivity
docker exec mcpo ping f5mcp
# Interactive container access
docker exec -it f5mcp /bin/bash
docker exec -it mcpo /bin/bash
发展
添加新工具
要向MCP服务器添加新工具,请修改 f5mcp/main.py:
@mcp.tool
def your_new_tool(param1: str, param2: int = 10):
"""Description of your tool"""
# Your implementation here
return result
更新依赖关系
更新 f5mcp/requirements.txt 重建:
docker-compose build f5mcp
docker-compose up -d f5mcp
与AI客户端集成
此MCP服务器可以与支持模型上下文协议的AI助手集成。这些工具将可供人工智能查询F5 BIG-IP配置和状态。
AI助手使用示例:
- “列出F5设备上的所有池”
- “显示web池的配置”
- “配置了哪些虚拟服务器?”
安全考虑
- 安全地存储F5凭据(考虑在生产中使用Docker secrets)
- 限制对容器的网络访问
- 使用HTTPS进行生产部署
- 如果需要,为mcpo实施适当的身份验证
- 考虑F5用户权限(建议用于监视用例的只读权限)