LLM红队自动化测试服务

LLAMATOR MCP服务器是一个面向生产环境的服务封装,用于自动化LLM红队测试工作流程,提供HTTP API和MCP服务器两种集成方式。

  • by RomiconEZ
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 RomiconEZ/llamator-mcp-server

使用说明

用于llamator的MCP服务器:自动化LLM红队工作流程

概述

此存储库提供了一个面向生产的服务包装器 羊驼 用于自动化LLM红队。 它暴露了两个集成表面:

  • HTTP API(FastAPI) 用于作业提交、作业状态检索和工件访问。
  • MCP服务器(流式HTTP传输) 对于代理/工具集成,启用LLAMATOR运行作为 工具。

执行是异步的,并通过以下方式进行编排 ARQ+Redis。工件上传到 MinIO 并被检索 通过预签名的URL(返回为JSON;API不重定向)。

能力

  • Redis中持久状态的异步测试运行。
  • 请求带有秘密编辑的持久性:
    • API密钥不是以明文存储的。
    • 存储的有效载荷仅包括布尔标记(例如。 api_key_present).
  • 工件生命周期管理:
    • 工人在以下位置创建本地工件 LLAMATOR_MCP_ARTIFACTS_ROOT/<job_id>/....
    • 工件作为名为的存档上传到MinIO artifacts.zip.
    • HTTP API可以在作业前缀下列出可用对象,并解析预先签名的下载链接。
  • 通过为HTTP和MCP接口提供可选的API-key保护 X-API-Key.
  • 支持API密钥授权的OpenAPI架构(Swagger UI)。
  • Prometheus指标在 /metrics.

部署(Docker Compose)

要求:

  • 码头工人
  • Docker Compose

启动整个堆栈:

docker compose up --build

默认服务终结点:

  • HTTP API: http://localhost:8000
  • MinIO S3端点: http://localhost:9000
  • MinIO控制台: http://localhost:9001

健康检查:

curl -sS http://localhost:8000/v1/health

配置

所有配置都是通过前缀为的环境变量提供的 LLAMATOR_MCP_. 完整的参考文献可在 DOCUMENTATION.md.

典型的本地设置:

cp .env.example .env

关键配置类别:

  • 瑞迪斯:用于作业队列和状态存储的连接DSN。
  • MinIO:S3兼容的工件存储。
  • 攻击/判断模型:LLAMATOR执行的OpenAI兼容端点。
  • API安全:可选 X-API-Key 保护。
  • 作业执行:超时、TTL和重试行为。

HTTP API使用

创建跑步记录

curl -sS -X POST "http://localhost:8000/v1/tests/runs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <optional>" \
  -d '{
    "tested_model": {
      "kind": "openai",
      "base_url": "http://host.docker.internal:1234/v1",
      "model": "llm",
      "api_key": "lm-studio"
    },
    "run_config": { "enable_reports": false },
    "plan": { "preset_name": "owasp:llm10", "num_threads": 1 }
  }'

答复包括:

  • job_id (uuid4十六进制,32个字符)
  • status (queued | running | succeeded | failed)
  • created_at (UTC时间戳)

检索作业状态

curl -sS "http://localhost:8000/v1/tests/runs/<job_id>" \
  -H "X-API-Key: <optional>"

答复包括:

  • status:当前作业状态
  • result:聚合指标(成功时)
  • error:错误详细信息(失败时)
  • error_notice:紧凑的面向用户的错误消息(失败时)

人工制品

列出可用于作业的对象:

curl -sS "http://localhost:8000/v1/tests/runs/<job_id>/artifacts" \
  -H "X-API-Key: <optional>"

解析特定对象的预签名下载URL:

curl -sS "http://localhost:8000/v1/tests/runs/<job_id>/artifacts/<path>" \
  -H "X-API-Key: <optional>"

下载端点返回一个JSON有效负载,其中包含 download_url 并且不发出重定向。

MCP接口

MCP服务器被挂载到FastAPI应用程序中(默认挂载路径: /mcp)并使用流式HTTP传输。

外露工具:

  • create_llamator_run:提交作业,等待完成,返回聚合指标和(如果可用)预签名 的URL artifacts.zip.
  • get_llamator_run:返回已完成作业的聚合指标和可选工件存档URL。

这两个工具都返回一致的响应模式:

{
  "job_id": "string",
  "aggregated": {
    "attack_name": {
      "metric": 0
    }
  },
  "artifacts_download_url": "string or null",
  "error_notice": "string or null"
}

协议注释、标题和示例记录在 DOCUMENTATION.md.

安全模型

  • 如果 LLAMATOR_MCP_API_KEY 为空,身份验证已禁用。
  • 如果已配置,受保护的HTTP路由和MCP应用程序需要 X-API-Key: <value>.

本地开发

安装依赖项:

poetry install

运行API服务器:

uvicorn llamator_mcp_server.main:app --host 0.0.0.0 --port 8000

运行worker:

arq llamator_mcp_server.worker_settings.WorkerSettings

教程

带有分步示例的Jupyter笔记本可在以下网址获得 notebooks/llamator_mcp_server_tutorial.ipynb. 它表明:

  • 使用curl的HTTP API
  • MCP JSON-RPC协议交互
  • 轮询作业完成情况
  • 文物检索

测试

集成测试位于 llamator-mcp-server/tests 并依靠 tests/.env.test.

运行:

pytest -q

许可证📜

该项目根据以下条款获得许可 知识共享署名-相同方式共享4.0国际版 许可证。 看 许可证 文件以获取详细信息。