⚠️ 进行中: 此项目正在积极开发中,尚未经过彻底测试。功能可能不完整、存在错误或有重大变化。仅在非生产环境中使用,并自行承担风险。
一个强大的、基于配置的测试工具,用于Model Context Protocol (MCP)服务器。此项目提供了一个全面的解决方案,用于验证、基准测试和确保与Claude等AI模型集成的MCP服务器的可靠性。
该工具正朝着alpha版本发布迈进,目前提供了以下功能:
如果您有兴趣贡献,请随时打开问题并提交拉取请求。
Model Context Protocol (MCP)允许AI模型通过标准化接口访问外部工具和数据源。随着MCP服务器复杂性和重要性的增加,确保其正确功能变得至关重要。MCP Server Tester通过以下方式解决了这一需求:
此工具设计用于MCP服务器开发者、AI集成团队以及需要确保其MCP实现稳健、可靠并正确遵循协议规范的质量保证专业人员。
Model Context Protocol是一个标准,允许AI模型调用外部工具。一个MCP服务器通过简单的HTTP接口暴露一个或多个工具。每个工具描述其名称、参数和响应模式,以便模型可以安全地调用它。
mcp-server-tester自动化了检查MCP服务器及其工具是否正常工作的过程:
目标是快速发现预期行为与实际行为之间的差异,以便在将工具暴露给生产模型之前解决问题。
由于该项目仍在开发中,安装是通过克隆仓库完成的:
# 克隆仓库
git clone https://github.com/r-huijts/mcp-server-tester.git
cd mcp-server-tester
# 安装依赖项
npm install
# 构建项目
npm run build
# 创建全局符号链接(可选)
npm link
MCP Server Tester完全通过配置文件驱动设计。这种方法提供了几个优点:
# 创建一个包含您的Anthropic API密钥的.env文件
echo "ANTHROPIC_API_KEY=your-api-key-here" > .env
# 使用配置运行测试
mcp-server-tester
# 使用自定义配置文件
mcp-server-tester path/to/my-config.json
配置文件 (mcp-servers.json) 控制测试的所有方面:
{
"numTestsPerTool": 3,
"timeoutMs": 10000,
"outputFormat": "console",
"outputPath": "./reports/results.json",
"verbose": false,
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./"],
"env": {
"DEBUG": "true"
}
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-github-token-here"
}
},
"dev-server": {
"command": "node",
"args": ["/absolute/path/to/your/dev-server.js"],
"env": {
"DEBUG": "true",
"NODE_ENV": "development"
}
}
}
}
默认情况下,工具会测试 mcpServers 部分中定义的所有服务器。如果您只想测试特定的服务器,可以添加一个可选的 servers 数组:
{
"servers": ["filesystem", "dev-server"],
"numTestsPerTool": 3,
// 其他设置...
"mcpServers": {
// 服务器定义...
}
}
| 选项 | 描述 | 默认值 |
|---|---|---|
servers | 可选的特定服务器名称数组 | mcpServers 中的所有服务器 |
numTestsPerTool | 每个工具生成的测试数量 | 3 |
timeoutMs | 测试执行超时时间(毫秒) | 10000 |
outputFormat | 测试报告格式(json、console、html、markdown) | "console" |
outputPath | 输出文件路径 | 未定义 |
verbose | 启用详细日志记录 | false |
mcpServers 部分定义了所有可以测试的可用服务器:
| 属性 | 描述 | 必需 |
|---|---|---|
command | 要运行的可执行文件或命令 | 是 |
args | 命令行参数数组 | 是 |
env | 设置的环境变量 | 是 |
您可以在配置中定义各种类型的MCP服务器:
"npm-package": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {}
}
"python-script": {
"command": "python",
"args": ["./servers/custom_server.py"],
"env": {
"PORT": "8080"
}
}
适用于测试服务器的开发版本:
"dev-server": {
"command": "node",
"args": ["/absolute/path/to/your/dev-server.js"],
"env": {
"DEBUG": "true",
"NODE_ENV": "development"
}
}
"remote-socket": {
"command": "nc",
"args": ["localhost", "3000"],
"env": {}
}
出于安全原因,您的Anthropic API密钥应仅以以下方式之一设置:
ANTHROPIC_API_KEY=your-api-key.env文件:
ANTHROPIC_API_KEY=your-api-key
CLAUDE_MODEL=claude-3-opus
如果未提供,默认为claude-3-7-sonnet-20250219。重要: 切勿将API密钥放入配置文件中,因为它可能会被提交到版本控制系统。
MCP Server Tester支持最小的命令行选项:
| 选项 | 描述 |
|---|---|
--init 或 -i | 创建默认配置文件 |
--list 或 -l | 列出配置中定义的所有服务器 |
--help 或 -h | 显示帮助信息 |
--servers 或 -s | 逗号分隔的要测试的服务器列表 |
[config-path] | 指定自定义配置文件路径 |
--servers 选项会覆盖配置文件中的 servers 数组。
该工具使用Claude AI自动为MCP服务器暴露的每个工具生成适当的测试案例:
每个测试案例包括:
验证规则用于检查工具响应的结构和内容。支持以下规则类型:
contains – 确保字符串或数组包含给定值matches – 检查相等性或正则表达式匹配hasProperty – 验证属性是否存在equals – 断言值精确匹配预期值arrayLength – 要求数组具有特定长度custom – 调用用户定义的验证函数对于配置中指定的每个服务器(如果没有指定,则为所有服务器):
该工具可以生成多种格式的报告,由 outputFormat 配置选项控制:
直接在终端显示测试结果。
在 outputPath 指定的路径创建结构化的JSON文件。
在 outputPath 指定的路径生成带有可视化的HTML报告。
在 outputPath 指定的路径创建便携的Markdown文件。
创建默认配置文件:
mcp-server-tester --init
编辑 mcp-servers.json 文件以添加自己的服务器和设置
创建包含您的Anthropic API密钥的.env文件:
echo "ANTHROPIC_API_KEY=your-api-key-here" > .env
运行测试:
mcp-server-tester
要测试MCP服务器的开发版本:
{
"mcpServers": {
"my-dev-server": {
"command": "node",
"args": ["/path/to/your/project/dist/server.js"],
"env": {
"DEBUG": "true",
"NODE_ENV": "development"
}
}
}
}
mcp-server-tester
您可以为不同的测试场景维护不同的配置文件:
# 为不同的环境创建不同的配置文件
cp mcp-servers.json config-dev.json
cp mcp-servers.json config-prod.json
# 编辑每个文件以包含适当的设置
# 使用特定配置运行测试
mcp-server-tester ./config-dev.json
mcp-server-tester ./config-prod.json
如果您遇到连接到MCP服务器的问题:
mcp-servers.json 文件中的服务器配置timeoutMs 以适应较慢的服务器verbose: true 启用详细日志记录DEBUG=true 检查服务器进程启动如果您遇到API密钥问题:
.env文件中.env文件位于正确的位置(项目根目录)如果工具执行失败:
punycode模块弃用警告如果您遇到此警告:
(node:71439) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
这是Node.js关于内部模块被弃用的无害警告。它不影响MCP Server Tester的功能。警告来自其中一个依赖项,并将在未来的更新中解决。
解决方案:
NODE_NO_WARNINGS=1 环境变量运行:
NODE_NO_WARNINGS=1 mcp-server-tester
npm start
要设置开发环境:
# 克隆仓库
git clone https://github.com/r-huijts/mcp-server-tester.git
cd mcp-server-tester
# 安装依赖项(包括开发依赖项)
npm install
# 运行Jest测试套件
npm test
# 检查代码风格问题
npm run lint
# 创建您的.env文件
cp .env.example .env
# 编辑.env并添加您的API密钥
# 在开发模式下运行工具
npm run dev
主要的测试生成器位于 src/test-generator/TestGenerator.ts。
旧文件如 src/generator/TestGenerator.ts 已删除以避免混淆。所有导入应引用 src/test-generator/ 下的模块。
该项目可以作为npm包发布,便于安装。
# 编译TypeScript源代码
npm run build
# 创建包的tarball
npm pack
# 发布到npm(需要npm凭证)
npm publish
发布的包只包含 dist 文件夹的内容和必要的文档。当执行 npm publish 时,构建步骤会自动运行。
此项目根据MIT许可证授权。
git clone https://github.com/r-huijts/mcp-server-tester.git
cd mcp-server-tester
npm install
npm run build
mcp-server-tester 命令在整个系统中可用:npm link
所有行为都由一个JSON配置文件(默认为 mcp-servers.json)控制。配置列出了要测试的MCP服务器,并定义了超时和报告格式等选项。
使用 --init 创建文件或复制提供的示例:
mcp-server-tester --init
# 或
cp mcp-servers.json.example mcp-servers.json
编辑文件以添加您的服务器。一个最小示例如下:
{
"numTestsPerTool": 2,
"timeoutMs": 10000,
"outputFormat": "console",
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./"],
"env": { "DEBUG": "true" }
}
}
}
将您的Anthropic API密钥放在.env文件中或导出为ANTHROPIC_API_KEY:
ANTHROPIC_API_KEY=your-api-key
配置和环境变量就绪后,运行:
mcp-server-tester