MCP Server 牛刀小试之雷池WAF MCP

本文作者:小谈谈

什么是 MCP

MCP(Model Context Protocol)可以算是当下 AI 编程圈子里最火爆的话题之一了。实际上 MCP 早在 2024 年 11 月就已经由 Anthropic 提出,目前我们广泛接触到的 MCP 规范是 2025-03-26 版本

MCP 是一种用于标准化 AI 模型与本地和远程资源进行交互的标准协议。MCP 就像是 AI 应用程序的 USB-C 接口,为 AI 模型提供了一种标准化的方式来连接不同的数据源和工具。

MCP 采用的是 C/S 架构,一个 MCP Host 可以连接到多个 MCP 服务器,以扩展 AI 的能力。

如上图,在 MCP 中,有这样几个角色。

  • MCP Hosts: 像 Claude Desktop、IDEs 或 AI 工具这样的程序,它们希望通过 MCP 访问资源
  • MCP Clients: 维护与服务器 1:1 连接的协议客户端
  • MCP Servers: 轻量级程序,通过标准化的 Model Context Protocol 暴露特定功能
  • Local Resources: 你的计算机资源(数据库、文件、服务),MCP 服务器可以安全地访问这些资源
  • Remote Resources: 通过互联网可用的资源(例如,通过 APIs),MCP 服务器可以连接到这些资源

MCP 为 LLM 提供的能力不仅仅是工具,但目前大家重点关注到的是 Tool 能力。今天,我们要做的就是为雷池 WAF 创建一个 MCP Server,以实现通过 AI 对 WAF 进行自动化管理。

牛刀小试

雷池自 6.x 开始,对用户公开了 API 能力,用户可以通过管理面创建 API Token,这为我们实践 MCP Server 创造了一个有利条件。如下图,我们创建一个 API Token,后面 MCP Server 中需要进行对应的配置。

对于 MCP 协议,官方提供了 Python、TypeScript、Java 等语言的 SDK,社区提供了 Golang 版本的 SDK。我们使用的是 github.com/mark3labs/mcp-go 这个 SDK。

功能实现

项目的组织结构比较简单,main.go 创建了一个 SSE 形式的 MCP SERVER。在 utils 中,定义了和雷池 API 通信的协议,还有一些辅助函数。

具体的 MCP 工具定义在 tools 中。

目前已经实现的能力:

  • 创建受保护的应用
  • 获取证书
  • 获取攻击事件,获取攻击记录
  • 攻击事件统计
  • WAF 防护网站响应码统计
  • 常用时间计算

项目地址:cnb.cool/hex/go-mcp-...

开始使用

编辑 .env 启动服务。

ini 复制代码
TRANSPORT=sse
MCPS_ADDR=http://127.0.0.1:8099
SAFELINE_APISERVER=雷池管理端地址,例如 https://1.1.1.1:9443
SAFELINE_APITOKEN=雷池管理端 Token
DEBUG=true

在 Cursor 中使用。

json 复制代码
{
    "mcpServers": {
      "mcp-safeline": {
        "url": "http://127.0.0.1:8099/sse",
        "env": {
        }
      }
    }
  }

演示

我做了两个示例,演示通过 MCP 协议来对 WAF 进行自动化管理。

完整的视频演示:www.bilibili.com/video/BV1aD...

问题 1:今天是三月最后一天了,帮我看看近一个月,waf 都拦截了哪些攻击事件?

LLM 分析了用户的诉求,自主调用工具计算当前时间和一个月前是什么时候,获取了所有的攻击记录,进行汇总并返回给用户。

问题 2:在 waf 上配置了哪些证书?

LLM 通过相关工具获取了 WAF 上的证书列表和证书信息,并返回给了用户。

后记

在实现 MCP Server 的过程中,这个开发的工作量还是比较大的,我们需要了解 API,做好工具规划,给每个变量和函数写好描述信息。甚至给 MCP 写描述,比项目中写注释还累。在我的理解下,MCP Server 编程更像是给 LLM 讲述工具怎么用的过程,你既要给够 LLM 工具,还要给他讲明白工具使用背景和使用方法。

虽然 MCP 协议让 LLM 和工具解耦,开发工具时不用关心具体应用在什么 LLM 上,但"好刀更要有一位好厨子"。LLM 作为大脑,不仅需要强大的推理能力,还需要能够根据具体场景选择和规划调用 MCP Server,从而高效调度工具,最大化发挥工具的能力。

合理的工具调用策略,结合 LLM 的智能调度,才能真正提升应用的智能化水平,使其具备更强的泛化能力和实用性。

使用 邀请链接 或 推荐码: GVWYWCFHJ6MOHASCEPDTNJV37CSEAU7V 购买雷池专业版、商业版 WAF,享受专享优惠。

扩展

相关推荐
辣椒酱.1 分钟前
github入门与实战
github
捧月华如11 分钟前
React vs Vue vs Angular:三大前端框架深度对比
python·github
Z文的博客17 分钟前
嵌入式 ARM 设备交叉编译 mosquitto 2.0.20 (完整 TLS 支持) 详细教程 TRAE全程辅助,没敲一行代码
qt·mqtt·嵌入式·ai编程·mosquitto·嵌入式linux·trae
怕浪猫30 分钟前
第11章 内存机制:让模型记住对话历史(LangChain实战)
langchain·aigc·ai编程
研究点啥好呢9 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
无限进步_10 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
MicrosoftReactor11 小时前
技术速递|使用 Copilot SDK 构建 AI 驱动的 GitHub Issue 分类系统
人工智能·github·copilot
AI成长日志11 小时前
【GitHub开源项目专栏】AI推理优化框架深度解析(上):vLLM架构设计与核心实现
人工智能·开源·github
CV-deeplearning11 小时前
【开源】字节跳动开源 DeerFlow 2.0:一站式 SuperAgent 开发框架,GitHub 星标 5.9 万!
开源·github·deerflow·deerflow 2.0·superagent
大强同学11 小时前
对比 VS Code:Zed 编辑器编码体验全面解析
人工智能·windows·编辑器·ai编程