Mcp Autotest

Mcp Autotest

🚀 MCP协议自动化测试工具

mcp-autotest 是专门用于测试 MCP 协议实现的自动化测试工具。MCP 协议作为模型上下文交互的通信协议,该工具能助力开发者快速验证服务是否契合 MCP 协议规范。

🚀 快速开始

安装与运行

MCP 协议(Model Context Protocol)是一种用于模型上下文交互的通信协议。mcp-autotest 是一个专为测试 MCP 协议实现而设计的自动化测试工具,能够帮助开发者快速验证其服务是否符合 MCP 协议规范。

📦 安装指南

1. 安装工具

npx mcp-autotest

💻 使用示例

基础用法

2. 创建测试用例

编辑 testdata 文件夹中的 YAML 测试文件:

case: List tools
in_list_tools: {"jsonrpc":"2.0","method":"tools/list","id":1}
out_list_tools: {"jsonrpc":"2.0","result":{"tools":[ { "name": !!re "list-[a-z]+" } ]},"id":1}

3. 执行测试

运行以下命令启动测试:

npx mcp-autotest run testdata -- npx -y @modelcontextprotocol/server-postgres localhost:5432

高级用法

动态匹配

在某些情况下,您可能需要处理动态值(如时间戳或 UUID),此时可以使用正则表达式进行匹配。工具支持两种模式:

  1. 全量正则表达式: 使用 !!re 标签将整个字符串视为正则表达式。

    out_list_tools: {"jsonrpc":"2.0","result":{"tools":[ { "name": !!re "list-[a-z]+" } ]},"id":1}
    
  2. 嵌入式正则表达式: 使用 !!ere 标签在字符串中嵌入正则表达式片段。

    out_list_tools: {"jsonrpc":"2.0","result":{"tools":[ { "name": !!ere "list-/[a-z]+/-tool" } ]},"id":1}
    

注意事项

  • 除正则表达式部分外,其余字符需转义为实际值(使用 \\)。
  • 正则表达式匹配不区分大小写。

测试 PostgreSQL 服务

请参考项目中的 PostgreSQL 示例,了解如何编写针对具体服务的测试用例。

输出示例

2025/03/31 22:23:39 实际 JSON 与期望不匹配,
得到:'{"id":1,"jsonrpc":"2.0","result":{"tools":[{"description":"Run a read-only SQL query","inputSchema":{"properties":{"sql":{"type":"string"}},"type":"object"},"name":"query"}]}}'
与预期比较:
"result": {
"tools": {
"0": {
"description": {
^ 字符串值不匹配,
期望字符串:'Run a read-only SQL query 2',
实际字符串:'Run a read-only SQL query'
测试失败

动态匹配示例

假设工具返回的描述字段为动态值,您可以使用以下方式编写测试用例:

case: List tools
in_list_tools: {"jsonrpc":"2.0","method":"tools/list","id":1}
out_list_tools: {"jsonrpc":"2.0","result":{"tools":[ { "name": !!ere "list-/[a-z]+/-tool" } ]},"id":1}

此示例中:

  • "list-""-tool" 为固定字符串。
  • /[a-z]+/ 是嵌入的正则表达式,匹配任意小写字母序列。

这样可以避免因版本号等动态值导致测试失败的问题。

总结

mcp-autotest 是一个功能强大的自动化测试工具,能够帮助开发者高效验证 MCP 协议实现。通过灵活的配置和正则表达式支持,您可以轻松应对各种场景下的测试需求。

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-23 15:30

相似服务问题