MCP赋能测试:Tools、Resources、Prompts三种能力的开发与应用

一、MCP 在测试场景的核心价值

MCP 让大模型从"只会聊天"变成"能动手干活"。在测试场景中,这意味着大模型可以直接调用测试管理系统、缺陷管理系统、需求管理系统的接口,访问沉淀在这些系统中的测试资产,而不是每次都从零开始生成内容。

MCP Server 对外暴露三种能力:Tools(工具调用)、Resources(知识库)、Prompts(标准化提示词模板)。


二、Tools:让大模型调用外部函数

Tools 是大模型的"功能按钮",每个 Tool 有名字、描述和输入规则,大模型根据用户意图自动选择调用哪个 Tool。

开发方式(基于 FastMCP):

python 复制代码
from mcp.server import FastMCP

mcp = FastMCP("TestTools")

@mcp.tool()
def run_test_case(case_id: str) -> dict:
    """根据用例ID执行测试用例,返回执行结果"""
    # 调用测试管理系统 API
    result = test_platform_api.run(case_id)
    return result

if __name__ == "__main__":
    mcp.run(transport='stdio')

MCP Host 配置(以 Claude Desktop 为例):

json 复制代码
{
  "mcpServers": {
    "test-tools": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/project", "python", "mcp_server.py"],
      "env": {"LOG_LEVEL": "INFO"}
    }
  }
}

配置完成后,大模型在对话中就能自动识别何时需要调用这个 Tool,无需用户手动触发。


三、Resources:注入动态知识库

Resources 是 MCP Server 的"文件柜",存储文本文件、数据库 Schema、Git 仓库内容等,让大模型随时拉取背景知识,而不依赖对话历史。

开发示例(将本地文件作为 Resource):

python 复制代码
@mcp.resource(
    uri="file:///project/test-cases/README.md",
    title="测试用例说明",
    description="项目测试用例的整体说明和规范",
    mime_type="text/markdown"
)
def get_test_readme():
    with open("project/test-cases/README.md", "r", encoding="utf-8") as f:
        return f.read()

Resources 与 RAG 的区别:RAG 是检索式的,每次根据查询动态检索相关片段;Resources 是主动注入的,大模型可以按需读取完整内容。两者可以配合使用------Resources 提供结构化的项目文档,RAG 提供历史需求的语义检索。


四、Prompts:标准化提示词模板

Prompts 是预设的"剧本",让大模型收到任务时直接按标准格式输出,避免每次从头编写提示词。

开发示例(边界值测试用例生成器):

python 复制代码
@mcp.prompt(
    name="testcase_gen",
    title="边界值测试用例生成器",
    description="根据输入的需求描述,采用边界值分析法设计测试用例"
)
def testcase_gen(message: str) -> list:
    return [
        {
            "role": "system",
            "content": """你是资深测试开发工程师,专精边界值分析法。
边界值原则:针对输入范围,测试 min、max、min-1、max+1、nominal、空值/无效。
输出格式:Markdown 表格(ID | 输入 | 预期 | 类型:正常/边界/异常)。"""
        },
        {
            "role": "user",
            "content": f"需求:{message}\n\n请基于边界值方法设计测试用例。"
        }
    ]

Prompts 的价值在于标准化:团队中不同成员调用同一个 Prompt,输出格式和质量保持一致,避免"每个人写的提示词效果不一样"的问题。


五、MCP Inspector:调试 MCP Server 的专用工具

MCP Inspector 是官方提供的开源调试工具,基于浏览器 UI,由两部分组成:

  • Inspector Client(前端,默认端口 6274):发送请求、查看响应,可以手动测试每个 Tool/Resource/Prompt
  • MCP Proxy Server(后端代理,默认端口 6277):桥接本地 MCP Server 和 Inspector,实时转发数据

安装和启动:

bash 复制代码
npm install -g @modelcontextprotocol/inspector
mcp-inspector

启动后访问 http://localhost:6274,可以在不依赖 Claude Desktop 等 Host 的情况下,直接测试 MCP Server 的每个接口是否正常工作。这是开发 MCP Server 时必备的调试手段。


六、FastMCP 的设计哲学:Docstring + Type Hints

FastMCP 充分利用了 Python 的两个特性,让开发 MCP Server 和写普通函数一样简单:

Docstring(三引号注释)→ 自动成为 Tool/Resource/Prompt 的描述字段,大模型通过这个描述判断何时调用。写法要求:见文知意,避免歧义。

Type Hints(类型标注)→ 自动生成参数 Schema,精确定义每个参数的类型和约束。

python 复制代码
@mcp.tool()
def query_defects(project: str, severity: str = "high") -> list:
    """查询指定项目的缺陷列表,按严重程度过滤"""
    # project: 项目名称
    # severity: 严重程度,可选 high/medium/low,默认 high
    return defect_system.query(project=project, severity=severity)

大模型调用时的决策过程:解析用户意图 → 匹配 Tool/Resource/Prompt 的描述 → 按 Type Hints 生成参数 → 发起调用。Docstring 越清晰,Type Hints 越精确,大模型的选择就越准确。


七、测试场景的落地方向

MCP Server 在测试工程中的典型应用场景:

接入测试管理系统:封装用例查询、执行触发、结果回写等接口,让大模型直接操作测试平台,无需人工中转。

接入缺陷管理系统:大模型分析测试日志后,直接调用 Tool 创建缺陷单,填写复现步骤和影响范围。

接入 CI/CD 流水线:触发构建、查询流水线状态、获取测试报告,让大模型参与到持续集成的反馈循环中。

封装数据工厂:将测试数据构造接口封装为 MCP Tool,大模型根据测试场景自动调用数据工厂生成所需数据。

MCP Client 不需要自行开发------Claude Desktop、Cursor、VS Code 的 Cline 插件都已内置 MCP Client,选择一个顺手的 Host 即可,测试工程师只需专注于 MCP Server 侧的业务封装。

相关推荐
倾颜1 天前
接入 MCP,不一定要先平台化:一次 AI Runtime 的实战取舍
前端·后端·mcp
zhangshuang-peta1 天前
通过 MCP 控制平面引入技能
人工智能·机器学习·ai agent·mcp·peta
丁劲犇1 天前
QMetaObject的invokeMethod异步阻塞调用在MCPServer开发中的巧妙应用
qt·ai·agent·异步·阻塞·mcp·mcp server
tanis_31 天前
MCP 服务器配置:让 AI 助手直接解析 PDF 文档
ai编程·mcp
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-04-09)
人工智能·ai·大模型·github·ai教程
火柴-人1 天前
我用 C++ 写了个 MCP ,让 AI 看懂了每一帧 GPU 在画什么
图形渲染·claude·codex·skill·vulkan·mcp·renderdoc
念越1 天前
蓝桥杯模拟4期自动化测试代码完整版解析
软件测试·蓝桥杯·自动化
花千树-0101 天前
Java Agent 集成 MCP 工具协议:让 AI 真正驱动企业系统
java·ai·langchain·ai agent·mcp·harness·j-langchain
前端摸鱼匠1 天前
【AI大模型春招面试题18】 L1、L2正则化、Dropout、早停(Early Stopping)的原理与适用场景?
人工智能·ai·语言模型·面试·大模型