MCP服务器评估框架

MCP.Evals是一个用于测试Model Context Protocol (MCP)服务器的评估框架,支持自动化测试和多语言模型验证,适用于MCP服务器的开发和验证场景。

  • by EbramTawfik
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 EbramTawfik/MCP.Evals

使用说明

MCP.Evals 可以翻译为“MCP评估”或“MCP评价”,具体取决于上下文和“Evals”在其中的具体含义(可能指评估、评价、测试等)。在这里,为了保持简洁和通用性,可以翻译为“MCP评估”

一个测试评估框架 模型上下文协议(MCP) 配备语言模型的服务器。MCP.Evals 提供自动化测试功能,以验证 MCP 服务器在不同场景下的实现情况,并确保工具执行的可靠性。

特点/功能

  • 🔍 翻译为中文是:“🔍”(注:这个符号本身在中文中没有直接对应的翻译,通常表示“放大镜”或“搜索”的意思,用于指示查看细节或搜索信息。) 自动化MCP服务器测试 - 对MCP服务器进行评估运行

  • 🤖 表示机器人。 多语言模型支持 - Azure OpenAI(已验证),OpenAI(待验证),Anthropic(未实现)*

  • 📊(图表/数据表) 灵活配置 - YAML 配置支持

  • 🚀 表示火箭或快速上升、飞速发展等意思,可直接用作表情符号或翻译为“火箭”、“飞速上升”等,具体根据上下文确定。 多种运输方式 - 支持stdio和HTTP传输

  • ✅ 验证框架 - 配置和请求验证

  • 🛠️(工具/螺丝刀) 命令行界面(CLI)工具 - 易于使用的命令行界面

安装

作为全球工具(推荐)

dotnet tool install -g MCP.Evals

作为一个NuGet包

dotnet add package MCP.Evals

快速入门

1. 创建评估配置

创建一个YAML配置文件(例如。, my-server-eval.yaml):

# Language model configuration
# Status: azure-openai (✅ verified), openai (⚠️ needs verification), anthropic (❌ not implemented)
model:
  provider: azure-openai  # Recommended: use azure-openai (verified working)
  name: gpt-4o

# MCP server configuration
server:
  transport: stdio
  path: "./my-mcp-server.exe"

# Evaluation test cases
evals:
  - name: basic_math_test
    description: Test basic math operations
    prompt: "Use the calculator tool to add 5 + 3"
    expectedResult: "Should return 8"
    
  - name: echo_test
    description: Test echo functionality
    prompt: "Use the echo tool to repeat 'Hello World'"
    expectedResult: "Should echo back 'Hello World'"

2. 进行评估

# Run evaluations with API key
McpEval evaluate my-server-eval.yaml --api-key "your-api-key"

# Azure OpenAI with endpoint
McpEval evaluate my-server-eval.yaml --api-key "your-key" --endpoint "https://your-resource.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2025-01-01-preview"

# Save results to file
McpEval evaluate my-server-eval.yaml --output results.json --api-key "your-key"

# Validate configuration without running
McpEval validate my-server-eval.yaml

3. 查看结果

结果包括详细的执行日志、评分以及性能指标:

{
  "configurationName": "my-server-eval",
  "totalEvaluations": 2,
  "successfulEvaluations": 2,
  "failedEvaluations": 0,
  "averageScore": 0.95,
  "evaluations": [
    {
      "name": "basic_math_test",
      "success": true,
      "score": 0.9,
      "executionTimeMs": 1234,
      "toolsUsed": ["calculator"]
    }
  ]
}

配置选项

语言模型提供商

Azure OpenAI ✅ 验证有效(或:已验证可正常工作)

model:
  provider: azure-openai
  name: gpt-4o

OpenAI ⚠️(OpenAI 警告/注意) 需要验证

model:
  provider: openai
  name: gpt-4o

Anthropic ❌(可译为“Anthropic(错误)”或根据上下文具体解释“❌”的含义,如“Anthropic(不适用/无效)”等) 尚未实施

model:
  provider: anthropic
  name: claude-3-5-sonnet-20241022

运输类型

标准输入输出(stdio)

server:
  transport: stdio
  path: "./my-server.exe"
  args: ["arg1", "arg2"]  # Optional command line arguments

HTTP(超文本传输协议)

server:
  transport: http
  url: "http://localhost:3000/mcp"
  path: "./server.js"  # Optional: auto-start server if not running

示例

该仓库包含了不同场景下的示例配置:

CLI 命令

评估

从配置文件运行评估:

McpEval evaluate <config-path> [options]

Options:
  --api-key       API key for language model provider
  --endpoint      Endpoint URL (required for Azure OpenAI)
  --output, -o    Output file path for results (JSON format)
  --format, -f    Output format (json, summary, detailed, clean)
  --verbose, -v   Enable verbose logging

验证

在不运行评估的情况下验证配置:

McpEval validate <config-path>

配置选项

API密钥配置

API密钥必须通过命令行参数提供:

  • 使用 --api-key 运行命令时的选项

Azure OpenAI 配置

对于Azure OpenAI,您还需要提供终端节点:

  • 使用 --endpoint 带有您的Azure OpenAI部署URL的命令行选项(例如。, https://your-resource.openai.azure.com/openai/deployments/model-name/chat/completions?api-version=2025-01-01-preview)

日志记录配置

通过(某种方式)控制日志记录的详细程度 --verbose 命令行标志:

  • 默认:信息级别日志记录
  • 带有;和……一起 --verbose调试级别日志记录

要求

  • .NET 8.0 或更高版本
  • 所选语言模型提供商的有效API密钥
  • 用于评估的MCP服务器

建筑学

MCP.Evals 遵循 SOLID 原则,采用简洁的架构设计:

  • 命令 - CLI命令实现
  • 服务 - 核心业务逻辑(编排、评分、运输管理)
  • 模型 - 数据传输对象和配置模型
  • 抽象概念 - 依赖注入接口
  • 验证 - 用于配置验证的FluentValidation规则

支持

致谢

这个项目是受到以下灵感启发的: MCP-evals(可能指某种评估或测试框架/系统,具体含义需根据上下文确定,此处为直译) 由麦克伦哈德(McLenhard)所著/创作。


实施状态:

  • Azure OpenAI✅ 经验证有效,推荐用于生产环境
  • OpenAI(开放人工智能研究所)⚠️ 实现已存在,但需进行验证测试
  • Anthropic(注:这是一个公司或组织的名称,直接翻译为“人类中心论的”或“以人为本的”并不准确,因为在这里它可能指的是一个专注于人工智能或类似领域的公司或组织,所以直接保留原名“Anthropic”作为翻译)❌ 尚未实现 - 仅返回占位符响应

为MCP社区用心打造