Higress OPS MCP Server
一个模型上下文协议(MCP)服务器的实现,能够全面配置和管理 Higress。此代码库还提供了一个基于 LangGraph 和 LangChain MCP Adapters 构建的MCP客户端,通过精心设计的代理流程架构,可方便地与Higress MCP服务器进行交互。
Demo
https://github.com/user-attachments/assets/bae66b77-a158-452e-9196-98060bac0df7
配置环境变量
将 .env.example 文件复制到 .env 并填写相应值。
启动MCP客户端和MCP服务器
在stdio模式下,MCP服务器进程由MCP客户端程序启动。运行以下命令启动MCP客户端和MCP服务器:
uv run client.py
添加新工具
步骤1:创建新的工具类或扩展现有类
- 如果添加全新的工具类别,请在tools目录下创建新文件
- 如果工具符合现有类别,则将其添加到现有类中
from typing import Dict, List, Any
from fastmcp import FastMCP
class YourTools:
def register_tools(self, mcp: FastMCP):
@mcp.tool()
async def your_tool_function(arg1: str, arg2: int) -> List[Dict]:
"""
你的工具描述。
Args:
arg1: arg1的描述
arg2: arg2的描述
Returns:
返回值的描述
Raises:
ValueError: 如果请求失败
"""
# 使用self.higress_client进行API调用
return self.higress_client.your_api_method(arg1, arg2)
步骤2:如果你的工具需要与Higress Console API交互,则添加新方法到HigressClient
- 在utils/higress_client.py中添加封装API调用的方法
- 使用现有的HTTP方法(get, put, post)进行实际API通信
def your_api_method(self, arg1: str, arg2: int) -> List[Dict]:
"""
描述这个API方法的作用。
Args:
arg1: arg1的描述
arg2: arg2的描述
Returns:
响应数据
Raises:
ValueError: 如果请求失败
"""
path = "/v1/你的/api/endpoint"
data = {"arg1": arg1, "arg2": arg2}
return self.put(path, data) # 或 self.get(path) 或 self.post(path, data)
步骤3:在服务器中注册你的工具类
- 将你的工具类添加到server.py中的tool_classes列表
- 该列表用于ToolsRegister实例化和注册所有工具
- ToolsRegister将自动设置logger和higress_client属性
tool_classes = [
CommonTools,
RequestBlockTools,
RouteTools,
ServiceSourceTools,
YourTools # 在这里添加你的工具类
]
步骤4:如果你的工具需要人工确认,则添加到SENSITIVE_TOOLS
- 该列表中的工具在执行前需要人工确认
# 定义需要人工确认的写操作
SENSITIVE_TOOLS = [
"add_route",
"add_service_source",
"update_route",
"update_request_block_plugin",
"update_service_source",
"your_tool_function" # 如果你的工具需要确认,在这里添加工具名称
]