mcpField
T
testlink-mcp

testlink-mcp

本地服务
github.com/Eason0in开发工具09 周前更新

关于 testlink-mcp

testlink-mcp 是面向 TestLink 1.9.20 的安全型 MCP 服务,用于发现和分析测试资产,并管理测试用例或执行结果。它提供有界结构化读取,写入前须预览,且默认禁用写入。

主要功能

  1. 01发现项目、计划、构建和套件
  2. 02搜索并读取规范化测试用例
  3. 03检查可追溯关系和执行历史
  4. 04验证测试用例并预览变更
  5. 05应用已确认的用例和结果更新

适用场景

  1. 01在项目或套件范围内查找测试用例
  2. 02审查需求关联和执行证据
  3. 03同步前检查测试用例内容
  4. 04预览审核后提交执行结果

MCP 相关

通过 MCP stdio 和 TestLink 的 XML-RPC 接口提供发现、分析、验证及预览/应用工具。客户端无需凭据即可发现工具;写入须显式启用,并使用已确认且未过期的预览。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"eason0in-testlink": {
"command": "npx",
"args": [
"-y",
"testlink-mcp"
],
"env": {
"TESTLINK_URL": "<TESTLINK_URL>",
"TESTLINK_DEV_KEY": "<TESTLINK_DEV_KEY>",
"TESTLINK_DEMO_MODE": "<TESTLINK_DEMO_MODE>",
"TESTLINK_WRITE_ENABLED": "<TESTLINK_WRITE_ENABLED>"
}
}
}
}
启动命令npx -y testlink-mcp
需要配置的环境变量
TESTLINK_URLTestLink base URL
TESTLINK_DEV_KEY密钥TestLink API developer key
TESTLINK_DEMO_MODEUse deterministic demo data
TESTLINK_WRITE_ENABLEDAllow confirmed writes

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtestlink-mcp1.0.8

工具

15

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

testlink-mcp

M8ven Score

面向 AI、以安全为先的 TestLink 1.9.20 模型上下文协议服务。它通过 stdio 提供规范化的发现与分析工具、有界游标分页、结构化输出,以及先预览再应用的写入操作。

本仓库基于 TestLink 的公开 XML-RPC 接口和公开 MCP SDK 实现,不依赖私有 TestLink 软件包或私有源代码树。

亮点

  • 无需凭据即可启动,方便 MCP 客户端发现所有工具、资源和提示词。
  • 提供明确、确定性的演示模式,便于评估和入门。
  • 支持 structuredContent、outputSchema、工具注释、游标分页和稳定的错误代码。
  • 仅提供附件元数据;附件内容和 base64 负载均会移除。
  • 默认禁用写入;不提供删除工具。
  • 每次应用都必须提供 confirm: true、未过期且只能使用一次的 10 分钟预览,以及未发生变化的服务端快照。
  • 副作用调用绝不自动重试;应用尝试会记录到经过脱敏的操作日志中。
  • 运行时保护机制会阻止使用不受支持或已 EOL 的 Node 奇数版本,以及低于声明下限的安全补丁级别。

安全写入演示

TestLink MCP 安全写入流程:先预览、检查差异,然后明确确认应用

演示仅使用合成数据,展示了必要的安全边界: 先预览拟议的更改,再检查有界差异,随后使用确切的预览 ID 和 confirm: true 调用应用操作。预览期间不会发生任何写入。 可编辑的源帧位于 docs/assets/testlink-safety。

要求

  • Node.js ^22.23.2 || ^24.18.1 || ^26.5.1
  • 已启用 XML-RPC API 的 TestLink 1.9.20

开发和容器基线版本为 Node 24.19.0 LTS。CI 也会运行 Node 22.23.2 和 26.7.0。

快速开始

nvm use
npm ci
npm run build
TESTLINK_DEMO_MODE=true node dist/cli.js

发布后使用 npm 调用:

npx -y [email protected]

MCP 客户端配置:

{
  "mcpServers": {
    "testlink": {
      "command": "npx",
      "args": ["-y", "[email protected]"],
      "env": {
        "TESTLINK_URL": "https://testlink.example.com/testlink",
        "TESTLINK_DEV_KEY": "your-testlink-dev-key"
      }
    }
  }
}

不要将真实凭据放入受版本控制的文件中。将 .env.example 复制为已忽略的 .env,或通过 MCP 客户端/密钥管理器注入环境变量。

工具

工作流工具用途
启动testlink_get_server_capabilities检查配置、兼容性、演示模式和写入策略
探索testlink_list_projects列出项目
探索testlink_list_test_plans列出项目中的计划
探索testlink_list_builds列出计划中的构建
探索testlink_list_test_suites遍历一层测试套件
分析testlink_search_test_cases在有界的项目/套件范围内搜索用例
分析testlink_get_test_case获取一个规范化用例
分析testlink_list_test_case_attachments获取安全的附件元数据
分析testlink_get_traceability检查需求链接,以及用例是否属于一个必需的测试计划
分析testlink_get_execution_history检查近期执行证据
验证testlink_validate_test_case查找内容不完整或含糊的用例
预览testlink_preview_test_case_sync预览创建/更新操作和计划成员关系
应用testlink_apply_test_case_sync应用未更改且已确认的同步预览
预览testlink_preview_execution_result预览通过/失败/阻塞结果的报告
应用testlink_apply_execution_result应用未更改且已确认的结果预览

所有工具均返回:

{
  "ok": true,
  "data": {},
  "meta": {
    "source": "testlink",
    "requestId": "..."
  }
}

失败时会返回 ok: false 和 { code, message, retryable, details? }。使用方应根据 error.code 分支处理,而不是根据消息文本。

安全写入工作流

  1. 搜索现有用例并获取其当前版本。
  2. 验证所需的测试用例。
  3. 调用相关的预览工具。
  4. 创建用例时,提供 TestLink authorLogin;TestLink 1.9.20 还要求提供 desiredCase.suiteId、summary 和 steps。
  5. 向用户展示 proposedChanges 并取得明确确认。
  6. 在 10 分钟内使用预览 ID 和 confirm: true 调用 apply。
  7. 确认后的 apply 会在产生任何副作用前消耗其预览。无论成功、冲突还是失败,再次尝试前都要创建并审查新的预览。
  8. 如果 apply 返回 OUTCOME_UNKNOWN,请勿重试。远程写入可能已成功;请先核对 TestLink 用例、计划成员关系或执行结果。

仅在应执行写入操作的服务器进程中启用写入:

TESTLINK_WRITE_ENABLED=true npx -y [email protected]

默认账本路径为 ~/.local/state/testlink-mcp/operations.jsonl。使用 TESTLINK_LEDGER_PATH 覆盖该路径。远程写入前,服务器会持久化一条 attempted 记录;随后记录 applied 或 outcome_unknown。账本包含哈希和已脱敏的结果,不包含开发者密钥。

配置

变量默认值含义
TESTLINK_URL未设置TestLink 基础 URL 或完整的 XML-RPC 端点
TESTLINK_DEV_KEY未设置个人 TestLink API 密钥
TESTLINK_DEMO_MODEfalse使用确定性的本地演示数据
TESTLINK_WRITE_ENABLEDfalse允许使用已确认的 apply 工具
TESTLINK_REQUEST_TIMEOUT_MS30000请求超时时间,100–300000 ms
TESTLINK_MAX_RESPONSE_BYTES5242880XML 响应大小上限
TESTLINK_LEDGER_PATH用户状态目录已脱敏的 JSONL 操作账本
NODE_EXTRA_CA_CERTS未设置可选的额外 CA 证书包;仍会启用 TLS 验证

演示模式需显式启用,且优先于远程配置:

TESTLINK_DEMO_MODE=true TESTLINK_WRITE_ENABLED=true node dist/cli.js

开发

npm ci
npm run check
npm test
npm run eval
npm run build
npm audit --omit=dev --audit-level=high
npm pack --dry-run

离线工具选择评估会检查常见用户意图是否能分别选择搜索、验证、预览和 apply 工具。该评估结果确定性,不会向外部模型发送数据。

Docker

镜像以非 root 用户身份运行,并使用 Node 24.19.0。构建但不推送:

docker buildx build --platform linux/amd64,linux/arm64 --tag testlink-mcp:local --output type=oci,dest=testlink-mcp.oci.tar .

批准并发布后使用的镜像名称:ghcr.io/eason0in/testlink-mcp:1.0.8。

发布政策

版本 1.0.8 已准备好发布,但发布仍需显式执行。受保护的发布工作流要求使用签名版本标签,重新运行完整的测试/评估/审计/SBOM/打包检查,通过来源证明发布 npm,发布带有 SBOM 和来源证明的多架构 GHCR 镜像,创建 GitHub Release,最后发布经过验证的 MCP Registry 条目。

单独的受保护实时冒烟测试工作流会通过只读调用,使用真实的 TestLink 1.9.20 实例验证已安装的软件包。其 URL 和开发者密钥必须存储为环境机密,且绝不会写入日志。

软件包清单和 server.json 使用相同的 MCP 名称 io.github.Eason0in/testlink-mcp。无需发布即可运行注册表验证:

mcp-publisher validate server.json

npm、MCP Registry、Glama 和 MCP.so 的账户端设置及提交数据记录在市场提交清单中。

公共参考资料

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。