模型上下文协议工具评估系统

用于评估MCP工具是否有效触发相关用户查询的系统,包括工具评估、相似性检测和质量分析等功能。

  • by StacklokLabs
  • Python
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 StacklokLabs/mcp-tef

使用说明

mcp-tef

模型上下文协议(MCP)工具的评估系统。验证MCP工具是否有效地触发相关用户查询。

它的作用

工具评估:测试您的MCP工具描述是否有效:

  • LLM是否为给定的查询选择了正确的工具?
  • 参数提取是否正确?
  • LLM对其选择有多大信心?
  • 你的工具描述在哪里可以改进?

相似性检测:查找并修复重叠的工具:

  • 检测具有相似描述和功能的工具
  • 生成多维相似性矩阵
  • 获取基于人工智能的建议,以提高差异化
  • 分析跨工具组合的能力重叠

快速开始

# Install dependencies
uv sync

# Configure environment (optional - defaults work with Ollama)
cp .env.example .env

# Run the server (HTTPS with auto-generated certificate)
uv run python -m mcp_tef
# Server starts at https://localhost:8000

# API docs at https://localhost:8000/docs

📖 新加入mcp-tef? 看 全面的快速入门指南 获取详细的教程、工作流程和故障排除。

密钥配置

法学硕士提供者:

  • 地方发展:Ollama(默认)-不需要API密钥
  • 生产:OpenRouter-设置 OPENROUTER_API_KEY 在 .env

安全:

  • 默认:带有自动生成的自签名证书的HTTPS
  • 自定义证书: --tls-cert-file 和 --tls-key-file 旗帜
  • 发展: --tls-enabled=false 对于HTTP(⚠️ 不用于生产)

看 文档/测试-带olama.md 和 docs/tls-configuration.md 了解详情。

核心工作流

工具评估

测试您的LLM是否根据用户查询正确选择工具:

  • 使用预期的工具和参数创建测试用例
  • 使用MCP服务器URL中的新工具定义运行测试
  • 获得分类(TP/FP/TN/FN)、参数验证和置信度分析
  • 接收基于人工智能的建议,以改进工具描述

→ 请参阅快速入门指南中的详细工作流程

刀具质量分析

使用人工智能质量评分评估和改进工具描述:

  • 获得清晰度、完整性和简洁性得分(1-10)
  • 收到详细的解释和改进建议
  • 同时跨服务器分析多个工具

→ 请参阅快速入门指南中的详细工作流程

相似性检测

查找并修复混淆LLM的重叠工具描述:

  • 使用嵌入检测语义相似的工具
  • 生成多维相似性和重叠矩阵
  • 获取基于人工智能的差异化建议
  • 支持多种输入格式(URL、工具列表或服务器组)

→ 请参阅快速入门指南中的详细工作流程

度量与分析

跟踪多个测试的评估性能:

  • 精确度、召回率和F1分数
  • 参数精度指标
  • 置信度分布分析
  • 并行评估的批量测试

→ 参见API文件

发展

# Format code
task format

# Lint
task lint

# Type check
task typecheck

# Run tests
task test

发布

当您推送版本标签时,发布将通过GitHub Actions自动进行。Git标签是版本信息的唯一来源。

# 1. Ensure main branch is clean and all tests pass
git checkout main
git pull origin main
task format && task lint && task typecheck && task test

# 2. Create and push a version tag
git tag v1.2.3
git push origin v1.2.3

# For pre-release versions (won't update 'latest' tag):
git tag v1.2.3-beta.1
git push origin v1.2.3-beta.1

注: 版本在 pyproject.toml 停留在 0.1.0 作为占位符。Git标签是容器发布的规范版本源。

自动发生的事情:

  • ✅ 运行所有代码质量检查(格式、lint、类型检查、测试)
  • ✅ 构建多平台容器映像(linux/amd64、linux/arm64)
  • ✅ 使用适当的标签发布到GitHub容器注册表
  • ✅ 生成SBOM和来源证明
  • ✅ 使用Cosign对所有图像进行签名(无钥匙签名)
  • ✅ 使用自动生成的注释创建GitHub版本

版本标记格式:

  • 稳定版本: v1.2.3 → 创建标签: 1.2.3, 1.2, latest
  • 预发布: v1.2.3-beta.1 → 创建标记: 1.2.3-beta.1 (没有 latest)
  • 发布候选人: v1.2.3-rc.1 → 创建标记: 1.2.3-rc.1 (没有 latest)

验证版本:

# Check workflow status
gh run list --workflow=release.yml

# Authenticate to GitHub Container Registry (images are private)
# Create a Personal Access Token with 'read:packages' scope at:
# https://github.com/settings/tokens/new?scopes=read:packages
echo "$GITHUB_TOKEN" | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin

# Pull and test the image
docker pull ghcr.io/stackloklabs/mcp-tef:1.2.3
docker run --rm ghcr.io/stackloklabs/mcp-tef:1.2.3 --help

# Verify signature
cosign verify \
  --certificate-identity-regexp="https://github.com/StacklokLabs/mcp-tef" \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  ghcr.io/stackloklabs/mcp-tef:1.2.3

制作CLI版本

当您推送命令时,CLI版本会发布到GitHub Release cli-v* 标签:

# 1. Ensure CLI tests pass
cd cli/
uv sync --dev
uv run ruff format --check .
uv run ruff check .
uv run ty check src/
uv run pytest -m "not docker"

# 2. Create and push a CLI version tag
git tag cli-v0.1.0
git push origin cli-v0.1.0

支持的版本格式(PEP 440):

标签 类型
cli-v1.0.0 释放
cli-v1.0.0.post1 释放(职位)
cli-v1.0.0a1 预发布(alpha)
cli-v1.0.0b1 预发布(测试版)
cli-v1.0.0rc1 预发布(发布候选)
cli-v1.0.0.dev1 预发布(开发)

自动发生的事情:

  • 运行CLI代码质量检查(格式、lint、类型检查、测试)
  • 构建Python包(wheel+sdist)
  • 使用包工件创建GitHub Release

注: CLI版本使用单独的标记前缀(cli-v*)来自服务器版本(v*).

技术栈

  • Python 3.13+ 使用uv包管理器
  • 快速API (异步REST API)
  • Pydantic v2 (验证)+ Pydantic AI (LLM接口)
  • SQLite+aiosqlite (异步存储)
  • pytest (105次测试,覆盖率77%)

→ 详细架构见文档

用例

  • ✅ 在部署MCP服务器之前验证工具描述
  • ✅ 识别并修复相似/重叠的工具
  • ✅ 跨不同LLM提供商的测试工具
  • ✅ 获取基于人工智能的改进建议
  • ✅ 跨测试套件跟踪评估指标

部署

CLI工具(推荐)

部署mcp-tef最简单的方法是使用CLI工具:

# Install the CLI
uv tool install mtef

# Deploy latest version
mtef deploy

# Deploy with API keys and health check
mtef deploy \
  --env OPENROUTER_API_KEY=sk-xxx \
  --health-check

看 CLI文档 了解完整的使用细节。

使用预构建的容器图像

预构建的、签名的容器映像可从GitHub容器注册表中获得。

需要身份验证: 图像目前是私有的,需要身份验证。创建 个人访问令牌 和 read:packages 范围:

# Authenticate to GHCR
echo "$GITHUB_TOKEN" | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin

拉和跑:

# Pull the latest stable release
docker pull ghcr.io/stackloklabs/mcp-tef:latest

# Or pull a specific version
docker pull ghcr.io/stackloklabs/mcp-tef:1.2.3

# Run the container
docker run -d \
  -p 8000:8000 \
  -e OPENROUTER_API_KEY=your-key \
  -v $(pwd)/data:/app/data \
  ghcr.io/stackloklabs/mcp-tef:latest

可用图像标签:

  • latest -最新稳定版本(不包括预版本)
  • X.Y.Z -特定版本(例如。, 1.2.3)
  • X.Y -最新补丁版本(例如。, 1.2)
  • X.Y.Z-beta.N -预发布版本(例如。, 1.2.3-beta.1)

验证图像签名:

所有图像均已签名 共同签署 供应链安全:

# Install cosign (if not already installed)
# See: https://docs.sigstore.dev/cosign/installation/

# Verify image signature using keyless signing
cosign verify \
  --certificate-identity-regexp="https://github.com/StacklokLabs/mcp-tef" \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  ghcr.io/stackloklabs/mcp-tef:latest

# Inspect SBOM (Software Bill of Materials)
cosign download sbom ghcr.io/stackloklabs/mcp-tef:latest

从源头构建

# Build locally
docker build -t mcp-tef .

# Run locally built image
docker run -d -p 8000:8000 -e OPENROUTER_API_KEY=your-key mcp-tef

许可证

[许可证待定]