弹霄博科

小谈谈一亩三分地



MCP Server 牛刀小试之雷池 MCP


发布日期: 2025/04/01
更新日期: 2025/04/02
作者: 小谈谈
分类: 开发
标签: mcp, 雷池, waf, golang, mcp-go
阅读时间: 5 分钟
字数: 1146 字


什么是 MCP

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

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

[图片: Figure1]
https://static.txisfine.cn/upload/20250331231731.png

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

[图片: Figure3]
https://static.txisfine.cn/upload/20250331232256.png

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

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

牛刀小试

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

[图片: 20250331233533]
https://static.txisfine.cn/upload/20250331233533.png/pkwatermark

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

功能实现

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

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

目前已经实现的能力:

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

开始使用

编辑 .env 启动服务。

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

在 Cursor 中使用。

```
{
"mcpServers": {
"mcp-safeline": {
"url": "http://127.0.0.1:8099/sse",
"env": {
}
}
}
}
```

演示

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

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

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

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

[图片: 20250331235502]
https://static.txisfine.cn/upload/20250331235502.png/pkwatermark

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

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

[图片: 20250331235536]
https://static.txisfine.cn/upload/20250331235536.png/pkwatermark

后记

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

[图片: 20250331235805]
https://static.txisfine.cn/upload/20250331235805.png/pkwatermark

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

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

扩展