上一篇文章详细介绍了Agent、MCP的概念与编写。本文将聚焦于MCP的实际应用,通过一个具体案例,详细阐述如何编写一个功能完善且高效的MCP。
原文地址:https://ruoji6.github.io/posts/19293.html
自动化查杀Java内存马
GitHub项目地址:https://github.com/RuoJi6/memory-shell-mcp
执行效果展示:


编写思路
以下是使用大模型(如kiro)编写内存马查杀MCP时可以参考的提示词:
帮我编写一个内存马查看/清理的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配置信息
其中涉及的核心项目:
运行效果 - 查找内存马
内存马项目地址:https://github.com/0ofo/java-memshell
测试环境:
- servlet + tomcat
- 模型:glm-4.7
MCP配置(TOOLS_DIR可以为空不设置,将会自动下载到tmp目录,参考:https://github.com/RuoJi6/memory-shell-mcp):
{
"mcpServers": {
"memory-shell-detector": {
"command": "uvx",
"args": ["memory-shell-mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
提示词:
帮我查看本机的java web服务,并排查是否存在内存马(判断标准):工具扫描出来之后,你需要反编译源代码,通过分析源代码,判断是否是内存马,以免在后续操作中,误删正确信息。
运行结果:

AI工具调用图:

AI思考流程图:

运行效果 - 删除内存马
测试环境:
- SpringBoot
- 模型:glm-4.7
- Agent:claude

MCP配置(TOOLS_DIR可以为空不设置,将会自动下载到tmp目录,参考:https://github.com/RuoJi6/memory-shell-mcp):
{
"mcpServers": {
"memory-shell-detector": {
"command": "uvx",
"args": ["memory-shell-mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
提示词(“进程名包含 com.example.demo.DemoApplication”是可选项,用于让AI快速定位目标服务):
帮我检测本机的 Java Web 服务(进程名包含 com.example.demo.DemoApplication),排查是否存在内存马。
检测要求:
1. 先下载检测工具,然后列出 Java 进程找到目标 PID
2. 扫描该进程,获取所有可疑类列表
3. 对每个可疑类反编译源代码,分析是否为内存马
4. 如果确认是内存马,执行移除操作
5. 移除后再次扫描验证,某些内存马需要多次移除才能彻底清除
6. 最后给我一个检测报告总结
运行结果:

编写思路解析
再次回顾核心提示词:
帮我编写一个内存马查看/清理的MCP:
...
以上述提示词为例,我们可以总结出编写高效MCP提示词的两个关键点:
- 让AI了解最新的知识(弥补AI知识库的滞后性)
- 了解最新的MCP标准与
uvx工具的使用方式。
- 让AI阅读项目附带的
工具使用说明.md文档,理解工具的具体功能和命令行参数。
- 清晰定义任务目标与执行路径
- 明确告知AI需要实现的功能:本地命令执行、SSH远程执行、工具下载、进程列表、反编译分析、内存马删除等。
- 规划好任务流,例如先下载工具,再扫描,接着分析源码确认,最后执行清除。
参考链接
通过将AI的推理与决策能力,与专业的Java内存马检测工具相结合,我们构建了一个自动化、智能化的安全检测与响应流程。这种“AI + 专用工具”的模式,极大地提升了安全运维的效率和准确性,为Web应用安全防护提供了新的思路。更多类似的技术实践与开源项目探讨,欢迎关注云栈社区。