使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在将 vLLM (vLLM 是一个快速且易于使用的库,用于 LLM 推理和服务) 的基准测试工具集成到 MCP 生态系统中。通过该服务器,LLM 客户端可以远程调用 vLLM 基准测试,获取模型性能数据,例如吞吐量、延迟等。
主要功能点
- 基准测试工具集成: 将 vLLM 官方提供的基准测试工具封装成 MCP Tool,可以通过 MCP 协议远程调用。
- 性能评估: 允许用户指定 vLLM 服务地址、模型名称、benchmark 运行次数等参数,执行基准测试并返回详细的性能指标。
- 数据集支持: 内置 ShareGPT 数据集下载和使用,方便用户进行基准测试。
- 灵活配置: 支持配置 benchmark 工具的各种参数,例如 prompt 数量等。
安装步骤
- 克隆仓库: 首先,你需要克隆该 GitHub 仓库到本地:
git clone https://github.com/Eliovp-BV/mcp-vllm-benchmark.git cd mcp-vllm-benchmark - 安装依赖 (可选): 虽然仓库中没有明确的依赖安装步骤,但根据代码推测,你可能需要安装 'fastmcp', 'vllm' 和 'requests' 等 Python 库。建议在一个 Python 虚拟环境中安装:
python -m venv venv source venv/bin/activate # 或 venv\Scripts\activate for Windows pip install fastmcp requests # benchmark_tool.py 依赖 vllm,但 server.py 似乎没有直接依赖,可能 benchmark_tool.py 会动态安装或假设 vllm 已安装。如果运行报错,请根据错误信息安装 vllm 或 benchmark_tool.py 的其他依赖。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令及其参数才能连接。以下是针对该仓库生成的 MCP 服务器配置信息(JSON 格式),请添加到你的 MCP 客户端的服务器配置中:
{ "mcpServers": { "mcp-vllm": { "command": "uv", "args": [ "run", "/Path/TO/mcp-vllm-benchmark/server.py" // 将 "/Path/TO/mcp-vllm-benchmark" 替换为你的本地仓库路径 ] } } }
配置参数说明:
- '"mcp-vllm"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
- '"command": "uv"': 启动服务器的命令,这里使用 'uv' (可能是指 'uvicorn',一个 ASGI 服务器)。你需要确保你的环境中安装了 'uvicorn' 或其他可以运行 Python ASGI 应用的服务器,并将其命令替换到这里。如果直接使用 'python' 运行,可以将 command 修改为 '"command": "python"'。
- '"args": [...]': 启动命令的参数列表。
- '"run"': 'uv' 命令的子命令,用于运行 ASGI 应用。如果使用 'python' 命令,则不需要此参数。
- '"/Path/TO/mcp-vllm-benchmark/server.py"': 服务器 Python 脚本的路径。请务必将其替换为你本地 'server.py' 文件的实际路径。
如果你不熟悉 'uv' 命令,或者希望简化配置,可以将 'command' 和 'args' 修改为使用 'python' 直接运行 'server.py':
{ "mcpServers": { "mcp-vllm": { "command": "python", "args": [ "/Path/TO/mcp-vllm-benchmark/server.py" // 同样替换为你的实际路径 ] } } }
基本使用方法
-
启动 MCP 服务器: 在配置好 MCP 客户端后,启动 'mcp-vllm' 服务器。根据你选择的配置('uv' 或 'python'),MCP 客户端会自动执行相应的命令来启动服务器。
-
使用 LLM 客户端调用 Tool: 在 LLM 客户端中,你可以通过自然语言指令或特定的 MCP 调用方式来使用 'benchmark_vllm' 工具。例如,根据 'README.md' 的示例,你可以向 LLM 客户端发送类似以下的指令:
Do a vllm benchmark for this endpoint: http://10.0.101.39:8888 benchmark the following model: deepseek-ai/DeepSeek-R1-Distill-Llama-8B run the benchmark 3 times with each 32 num prompts, then compare the results, but ignore the first iteration as that is just a warmup.LLM 客户端会将这个自然语言指令转换为对 'benchmark_vllm' 工具的 MCP 调用,并将必要的参数(例如 'base_url', 'model', 'num_prompts' 等)传递给服务器。
-
获取基准测试结果: MCP 服务器执行 'benchmark_vllm' 工具后,会将基准测试的结果以 JSON-RPC 响应的形式返回给 LLM 客户端。客户端可以解析并展示这些结果,例如吞吐量、延迟等性能指标。
注意:
- 该项目目前可能还处于 Proof of Concept 阶段,可能存在一些 Bug 或不完善的地方,例如 'README.md' 中提到的 "random outputs by vllm it may show that it found some invalid json"。
- 你需要确保 vLLM 服务已经运行,并且地址和模型配置在调用 'benchmark_vllm' 工具时是正确的。
- benchmark 工具的具体参数和使用方式可以参考 'benchmark_tool.py' 和 'benchmark/benchmark_serving.py' 文件中的代码和注释。
信息
分类
开发者工具