在上一篇文章(链接)中,详细的描述了agent、mcp概念以及编写,此篇文章将详细的讲述MCP的使用,以及如何编写一个好的MCP。

0.1 自动化查杀java内存马

GitHub项目地址https://github.com/RuoJi6/memory-shell-mcp

0.1.1 编写思路

这个是笔者在使用kiro编写内存马查MCP的提示词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
帮我编写一个内存马查看/清理的MCP:
前置:
1、你需要在网络搜索什么是MCP
2、了解python的uv(当前目录下,我已执行:uv venv --python python3.12 ,uv init,你后面执行命令统一在虚拟环境执行:source .venv/bin/activate,在uv init 创建的main.py文件中编写代码)
3、查看当前目录下的`工具使用说明.md`文件

结合查看`工具使用说明.md`文件完成下面需求(提示:使用FastMCP编写完成):
1、本地执行命令(来执行:4,5,6,7)
2、ssh连接并可以执行命令(来执行:4,5,6,7)
3、可以让用户输入工具目录地址,如果没有输入就使用下面地址下载到临时目录(注意windows/linux/macos等临时目录)【此处下载需要先测试网络环境是否可用,可用就可以下载。注意:windows/linux/macos 中下载的命令,尽可能的兼容系统】
https://xget.xi-xu.me/gh/RuoJi6/memory-shell-detector/releases/download/2/detector-agent-1.0.0-SNAPSHOT.jar
https://xget.xi-xu.me/gh/RuoJi6/memory-shell-detector/releases/download/2/memory-shell-detector-cli.jar
4、结合查看`工具使用说明.md`文件可以执行工具命令(-l)
5、结合查看`工具使用说明.md`文件可以执行工具命令(-s)
6、结合查看`工具使用说明.md`文件可以执行工具命令(-v -p)
7、结合查看`工具使用说明.md`文件可以执行工具命令(-r -p)
【注意,在执行此命令删除内存马的时候,需要:1、使用-v命令获取内存马源代码,并发送给AI,惊喜判断是否是内存马,如果是方可清除 2、在执行此命令的时候,会有下面信息,需要输入y,如:[!] 警告: 移除内存马可能影响应用正常运行确认移除 org.apache.jsp.filter_002dinject_jsp$ShellFilter? (y/N): y】
8、运行完成之后,在当前目录输出md文件,描述功能,以及mcp配置信息

其中:

0.1.2 运行效果-查找内存马

内存马项目地址:https://github.com/0ofo/java-memshell

测试环境:

  • servlet+tomchat
    • servlet
    • filter
    • Listeneri
  • 模型:glm4.7

MCP配置(TOOLS_DIR可以为空不设置,将会自动下载到tmp目录,参考:https://github.com/RuoJi6/memory-shell-mcp):

1
2
3
4
5
6
7
8
9
10
11
{
"mcpServers": {
"memory-shell-detector": {
"command": "uvx",
"args": ["memory-shell-mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}

提示词:

1
帮我查看本机的java web服务,并排查是否存在内存马(判断标准):工具扫描出来之后,你需要反编译源代码,通过分析源代码,判断是否是内存马,以免在后续操作中,误删正确信息。

运行结果:

image-20260114104502190

AI工具调用图:

image-20260114104300355

AI思考流程图:

image-20260114104358274

0.1.2 运行效果-删除内存马

测试环境:

  • springboot
    • controller
    • interceptor
  • 模型:glm-4.7
  • Agent:claude

image-20260114112013007

MCP配置(TOOLS_DIR可以为空不设置,将会自动下载到tmp目录,参考:https://github.com/RuoJi6/memory-shell-mcp):

1
2
3
4
5
6
7
8
9
10
11
{
"mcpServers": {
"memory-shell-detector": {
"command": "uvx",
"args": ["memory-shell-mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}

提示词

这个:(进程名包含 com.example.demo.DemoApplication) 可选,笔者只是为了让AI快速找到这个服务。

1
2
3
4
5
6
7
8
9
帮我检测本机的 Java Web 服务(进程名包含 com.example.demo.DemoApplication),排查是否存在内存马。

检测要求:
1. 先下载检测工具,然后列出 Java 进程找到目标 PID
2. 扫描该进程,获取所有可疑类列表
3. 对每个可疑类反编译源代码,分析是否为内存马
4. 如果确认是内存马,执行移除操作
5. 移除后再次扫描验证,某些内存马需要多次移除才能彻底清除
6. 最后给我一个检测报告总结

运行结果:

image-20260114134822977

0.2 编写思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
帮我编写一个内存马查看/清理的MCP:
前置:
1、你需要在网络搜索什么是MCP
2、了解python的uv(当前目录下,我已执行:uv venv --python python3.12 ,uv init,你后面执行命令统一在虚拟环境执行:source .venv/bin/activate,在uv init 创建的main.py文件中编写代码)
3、查看当前目录下的`工具使用说明.md`文件

结合查看`工具使用说明.md`文件完成下面需求(提示:使用FastMCP编写完成):
1、本地执行命令(来执行:4,5,6,7)
2、ssh连接并可以执行命令(来执行:4,5,6,7)
3、可以让用户输入工具目录地址,如果没有输入就使用下面地址下载到临时目录(注意windows/linux/macos等临时目录)【此处下载需要先测试网络环境是否可用,可用就可以下载。注意:windows/linux/macos 中下载的命令,尽可能的兼容系统】
https://xget.xi-xu.me/gh/RuoJi6/memory-shell-detector/releases/download/2/detector-agent-1.0.0-SNAPSHOT.jar
https://xget.xi-xu.me/gh/RuoJi6/memory-shell-detector/releases/download/2/memory-shell-detector-cli.jar
4、结合查看`工具使用说明.md`文件可以执行工具命令(-l)
5、结合查看`工具使用说明.md`文件可以执行工具命令(-s)
6、结合查看`工具使用说明.md`文件可以执行工具命令(-v -p)
7、结合查看`工具使用说明.md`文件可以执行工具命令(-r -p)
【注意,在执行此命令删除内存马的时候,需要:1、使用-v命令获取内存马源代码,并发送给AI,惊喜判断是否是内存马,如果是方可清除 2、在执行此命令的时候,会有下面信息,需要输入y,如:[!] 警告: 移除内存马可能影响应用正常运行确认移除 org.apache.jsp.filter_002dinject_jsp$ShellFilter? (y/N): y】
8、运行完成之后,在当前目录输出md文件,描述功能,以及mcp配置信息

我们以上面的提示次为例,你需要明白:

  1. 让AI了解最新的知识(AI的知识库并不是最新的,你需要让AI知道最新的技术)
    1. 了解最新的MCP,以及uvx使用
    2. 了解项目的工具使用说明.md描述文件
  2. 让AI了解你想做什么(让AI知道你具体想干什么?怎么样干)
    1. 本地执行命令
    2. ssh连接执行命令
    3. 列出进程
    4. 反编译内存马
    5. 删除内存马
    6. 下载工具

0.3 参考

https://github.com/RuoJi6/memory-shell-mcp

https://github.com/private-xss/memory-shell-detector

https://github.com/xixu-me/Xget

https://github.com/0ofo/java-memshell