在人工智能快速发展的今天,如何让AI更高效地与现实世界交互,成为许多开发者和研究者关注的焦点。MCP(Model Context Protocol)技术作为一种创新的工具集成方案,为AI提供了一种“双手”的能力,使其能够通过调用外部工具完成复杂任务。本文将展示在实际场景中的应用。

环境搭建

在开始构建MCP工具之前,我们需要先搭建一个稳定的工作环境。以下是详细的环境配置步骤:

初始化项目

首先,我们需要初始化一个项目目录,这将作为我们后续开发的基础。运行以下命令:

uv init dirsearch-mcp-server

这一步会创建一个名为dirsearch-mcp-server的目录,并初始化项目结构。

注:

uv 是一个挺全面的python依赖管理工具,但本人不用python做主力很久,略有生疏,按照大家的推荐也使用的uv。

这个项目名称原本是想用来连接dirsearch使用的,奈何环境问题一直搞不定,遂怒,决定使用 go run main.go 运行自编写的go程序,环境报错,亦怒, 直接 go build 编译执行。

创建Python虚拟环境

为了确保开发环境的隔离性和稳定性,我们使用Python虚拟环境。进入项目目录后,运行以下命令:

cd dirsearch-mcp-server
uv venv

这将创建一个名为.venv的虚拟环境,所有依赖包都将安装在这个环境中,避免与其他项目产生冲突。

激活虚拟环境

激活虚拟环境是使用MCP工具的前提。根据你的操作系统,运行以下命令:

.venv\Scripts\activate

激活后,你的命令行提示符会显示(venv),表示虚拟环境已成功激活。

安装依赖

接下来,我们需要安装MCP的依赖包。运行以下命令:

uv add mcp[cli]

这将安装MCP的核心库及其命令行接口(CLI),为后续开发提供支持。

创建MCP服务器:赋予AI执行能力

在环境配置完成后,我们可以开始创建一个MCP服务器。以下是具体的实现代码:

import subprocess
import time
from pathlib import Path from mcp.server.fastmcp import FastMCP # Initialize FastMCP server
mcp = FastMCP("beian-query-server", log_level="ERROR") @mcp.tool()
async def run_beian_query(domain: str, timeout: int = 300) -> dict:
"""
执行备案信息查询工具 参数:
domain (str): 要查询的域名 (如 baidu.com)
timeout (int): 最大执行时间(秒) 返回:
dict: 包含执行结果的字典
"""
start_time = time.time()
result = {
"status": "pending",
"command": "",
"returncode": None,
"stdout": "",
"stderr": "",
"duration": 0.0
}
try:
# 配置固定参数
target_dir = r"E:\Script\GoStore\RedTeam\tools\ToolsForBeian"
exe_path = str(Path(target_dir) / "beian.exe")
go_cmd = [exe_path, "info", "-i", domain] # 验证环境
if not Path(exe_path).exists(): # 关键修改点3
raise FileNotFoundError(f"beian.exe not found in {target_dir}") # 记录完整命令
result["command"] = " ".join(go_cmd) # 执行命令
process = subprocess.run(
go_cmd,
cwd=target_dir,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
timeout=timeout,
encoding='utf-8',
errors='replace'
) # 记录结果
result.update({
"status": "success",
"returncode": process.returncode,
"stdout": process.stdout.strip(),
"stderr": process.stderr.strip(),
"duration": round(time.time() - start_time, 2)
}) except subprocess.TimeoutExpired as e:
result.update({
"status": "timeout",
"stderr": f"执行超时 ({timeout}s)",
"duration": timeout
})
except Exception as e:
result.update({
"status": "error",
"stderr": str(e),
"duration": round(time.time() - start_time, 2)
}) return result if __name__ == "__main__":
mcp.run(transport="stdio")

上述 exePath 中的beian.exe 就是编译后的程序名称

代码解析

  1. 初始化MCP服务器

    使用FastMCP类创建一个服务器实例,指定服务器名称为beian-query-server,并将日志级别设置为ERROR,以减少不必要的输出。

  2. 定义工具函数

    通过@mcp.tool()装饰器,我们将run_beian_query函数注册为一个MCP工具。这个函数接收两个参数:domain(域名)和timeout(超时时间),并返回一个包含执行结果的字典。

  3. 工具逻辑

    • 配置工具路径:指定beian.exe的路径,并验证其是否存在。
    • 执行命令:通过subprocess.run执行备案查询命令,并捕获输出和错误信息。
    • 结果处理:根据执行结果更新状态、返回码、输出内容和执行时间。

配置MCP Client

创建好 server 后,就需要对client进行配置了,由于 vscode 中 cline 插件很好的支持了 mcp server 功能,可以节省我们创建 mcp client 的步骤 ,但是使用时需要进行相关配置,以下是配置文件的内容:

{
"mcpServers": {
"beian-query-server": {
"name": "调用golang工具的备案查询工具",
"key": "dirsearch-mcp-server",
"command": "uv",
"args": [
"--directory",
"E:\\Script\\PyStore\\dirsearch-mcp-server\\",
"run",
"--with",
"mcp",
"mcp",
"run",
"main.py"
],
"disabled": false,
"autoApprove": []
}
}
}

配置文件解析

  • name:工具的名称,用于描述工具的功能。
  • key:工具的唯一标识符。
  • command:运行工具的命令。
  • args:命令的参数列表,用于指定运行环境和脚本路径。
  • disabled:是否禁用该工具。
  • autoApprove:自动批准的工具列表。

这段配置相当于运行以下命令:

uv --directory E:\Script\PyStore\dirsearch-mcp-server\ run --with mcp mcp run main.py

运行

为了更方便地使用MCP工具,我们可以在VSCode中安装cline插件,并进行以下配置:

  1. 安装插件

    在VSCode的扩展市场中搜索并安装cline插件。

  2. 选择MCP服务器

    打开VSCode,选择MCP server作为目标服务器。

  3. 配置工具

    点击Config按钮,按照提示完成配置。

  4. 运行工具

    配置完成后,工具将自动运行,如下图所示:

  1. 查看结果

    工具运行后,你可以在VSCode的输出窗口中查看结果,如下图所示:

最终的查询结果如下:

总结

通过本文的介绍,我们成功搭建了一个基于MCP技术及ai技术的智能化备案信息查询工具,并实现了自动调用和结果展示。

MCP技术为AI提供了一种与外部工具交互的能力,在渗透测试中,如果将完整的渗透测试工具链通过MCP技术装备给ai调用,那么智能化的渗透测试工具将极大的提高工作的效率,就可以实现渗透测试从自动化到完全智能化的转变。

MCP技术:渗透测试从自动化到智能化的更多相关文章

  1. TOP100summit2017:网易测试总监钱蓓蕾——新时代测试正走向精英化、自动化、智能化

    壹佰案例:钱蓓蕾老师您好,很荣幸邀请到您成为第六届壹佰案例峰会测试专场的联席主席.您从事测试工作11年了,您觉得最近几年测试工作有什么趋势上的变化么? 钱蓓蕾:测试行业近几年变化挺大的,正逐渐向精英化 ...

  2. 自动化渗透测试工具(Cobalt Strike)3.1 最新破解版

    自动化渗透测试工具(Cobalt Strike)3.1 最新破解版[附使用教程] Cobalt Strike是一款专业的自动化渗透测试工具,它是图形化.可视化的,图形界面非常友好,一键傻瓜化使用MSF ...

  3. 测者的测试技术手册:AI的自动化单元测试

    测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试    

  4. 【渗透技术】渗透测试技术分析_TomCat

    [渗透技术]渗透测试技术分析_TomCat 本文转自:i春秋论坛 渗透测试-中间人攻击(原理)说起“中间人攻击”我想大多数对渗透测试又了解的朋友都多少有所了解,因为我们用到的次数真是非常的多.它可以将 ...

  5. kali Linux渗透测试技术详解

    kali Linux渗透测试技术详解 下载:https://pan.baidu.com/s/1g7dTFfzFRtPDmMiEsrZDkQ 提取码:p23d <Kali Linux渗透测试技术详 ...

  6. 自动化移动安全渗透测试框架:Mobile Security Framework

    自动化移动安全渗透测试框架:Mobile Security Framework 译/Sphinx  测试开发社区  7月3日 Mobile Security Framework (移动安全框架) 是一 ...

  7. Python 渗透测试编程技术方法与实践 ------全书整理

    1.整个渗透测试的工作阶段 ( 1 )前期与客户的交流阶段.( 2 )情报的收集阶段.( 3 )威胁建模阶段.( 4 )漏洞分析阶段.( 5 )漏洞利用阶段.( 6 )后渗透攻击阶段.( 7 )报告阶 ...

  8. chapter1 渗透测试与metasploit

    网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...

  9. Metasploit渗透测试魔鬼训练营

    首本中文原创Metasploit渗透测试著作,国内信息安全领域布道者和资深Metasploit渗透测试专家领衔撰写,极具权威性.以实践为导向,既详细讲解了Metasploit渗透测试的技术.流程.方法 ...

  10. 渗透测试_利用Burp爆破用户名与密码

    burp 全称 Burp Suite, 是用于攻击web 应用程序的集成平台.它包含了许多工具,可以抓包可以爆破也可以扫描漏洞. 主要组件如下: Proxy——是一个拦截HTTP/S的代理服务器,作为 ...

随机推荐

  1. 阿里云产品之数据中台架构-copy

    1. 场景描述 客户打包买了很多阿里云的产品,但是阿里云不负责实施,基于阿里云产品与客户需求,拟采用的数据中台架构,有类似需求的,可以参考下,拿走不谢! 2. 解决方案 阿里产品大数据架构图: 从下到 ...

  2. biancheng-Python爬虫教程

    http://c.biancheng.net/python_spider/ 网络爬虫又称网络蜘蛛.网络机器人,它是一种按照一定的规则自动浏览.检索网页信息的程序或者脚本.网络爬虫能够自动请求网页,并将 ...

  3. layui table表格单元格动态合并,并设置隔行变色

    layui table表格单元格动态合并,并设置隔行变色,此代码只针对嵌套数组只有一层的时候有效,多个数组嵌套还在冥想当中!! 需求描述 我们知道在layui插件官方平台有个可以无限极单元格合并的模块 ...

  4. JMeter中的JavaScript加密实战

    JMeter中的JavaScript加密实战 在性能测试领域,Apache JMeter 作为一款强大的开源工具,广泛应用于模拟多用户并发请求以评估应用程序的性能.然而,在实际的测试场景中,直接传输明 ...

  5. 2025年值得推荐的 8 款 WPF UI 控件库

    前言 今天大姚给大家分享 8 款开源.美观.功能强大.简单易用的WPF UI控件库,希望可以帮助到有需要的同学. WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Wind ...

  6. SpringCloud自定义loadbalancer实现标签路由

    一.背景 最近前端反应开发环境有时候调接口会很慢,原因是有开发图方便将本地服务注册到开发环境,请求路由到开发本地导致, 为了解决该问题想到可以通过标签路由的方式避免该问题,实现前端联调和开发自测互不干 ...

  7. 深度学习中CUDA环境安装教程

    首先说明,本人是小白,一次安装,可能有不对的地方,望包含. 安装CUDA 因为我们是深度学习,很多时候要用到gpu进行训练,所以我们需要一种方式加快训练速度. 通俗地说,CUDA是一种协助" ...

  8. DXF文件导入PADS板框问题

    在使用PADS时,经常会从CAD文件中导出板框形状到PADS中. 也经常碰到一个问题:就是单位不匹配,CAD中明明设置成毫米了,可导入到PADS时却是mil. 发现单位不匹配的情况跟AUTOCAD里面 ...

  9. css的度量单位:px、em、rem、vh、vw、vmin、vmax、百分比

    css的度量单位 px,像素数量,适用于比较固定的场景,比如边框宽度,分割线宽度 em em:是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位.一般浏览器字体大小默认为16px,则2em ...

  10. Emacs 的优点及与 DE 的比较

    一.引言 在编程领域,对于工具的选择一直是开发者们热议的话题.今天,我们来探讨一下 Emacs 及其所具有的优点,并思考使用 Emacs 写程序是否真的比使用集成开发环境(IDE)更方便. 二.Ema ...