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分数
- 参数精度指标
- 置信度分布分析
- 并行评估的批量测试
发展
# 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许可证
\[许可证待定\]
