跳转到内容

集成 / MODEL CONTEXT PROTOCOL

Milten MCP:在 AI 助手中查看网站审计

将 Codex、Cursor 或 Claude Code 连接到您已保存的 Milten 审计。通过 Model Context Protocol(MCP),助手可以读取网站性能指标,并获取以报告数据为依据的优化建议。

Milten MCP

HTTP

助手如何使用 Milten 审计

  1. 查找审计

    list_audits
  2. 读取测量数据

    get_audit_report
  3. 获取优化方案

    get_optimization_plan

访问权限

令牌仅读取您自己保存的审计。 授予 audits:write 后,可以在每日配额内启动和重新运行审计。

如何连接 Milten MCP

Milten MCP 运行在远程服务器上。将服务器 URL 和访问令牌添加到支持 Streamable HTTP 和自定义 Authorization 请求头的客户端中。无需在本地安装 Milten 软件包。

服务器 URL
https://milten.io/mcp
身份验证
Authorization: Bearer <PAT>

准备工作

令牌仅读取您自己保存的审计。 授予 audits:write 后,可以在每日配额内启动和重新运行审计。

Codex

将 <PAT> 替换为令牌密钥,然后在 Bash 或 Zsh 中运行整个代码块。它会添加服务器,并将 Authorization 保存到 Codex 配置文件(默认为 ~/.codex/config.toml)的 http_headers 中。再次运行会替换 milten 的设置。请重启 Codex。此文件包含密钥,请勿公开。

终端
codex mcp add milten --url https://milten.io/mcp &&
cat >> "${CODEX_HOME:-$HOME/.codex}/config.toml" <<'EOF'

[mcp_servers.milten.http_headers]
Authorization = "Bearer <PAT>"
EOF
客户端文档 ↗
Cursor

将 milten 条目添加到 mcpServers:写入 ~/.cursor/mcp.json 可供所有项目使用,写入 .cursor/mcp.json 则仅用于当前项目。保留已有的服务器条目。

对于使用 MILTEN_MCP_TOKEN 的示例,请在启动客户端前将令牌设为该环境变量的值。更改令牌后,请重启客户端。在终端中设置的变量不会自动传递给从桌面启动的应用。

.cursor/mcp.json
{
  "mcpServers": {
    "milten": {
      "url": "https://milten.io/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
      }
    }
  }
}
客户端文档 ↗
Claude Code

将此条目合并到项目的 .mcp.json 中。Claude Code 会在启动时读取环境变量;如客户端提示,请批准连接此项目服务器。

对于使用 MILTEN_MCP_TOKEN 的示例,请在启动客户端前将令牌设为该环境变量的值。更改令牌后,请重启客户端。在终端中设置的变量不会自动传递给从桌面启动的应用。

.mcp.json
{
  "mcpServers": {
    "milten": {
      "type": "http",
      "url": "https://milten.io/mcp",
      "headers": {
        "Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
      }
    }
  }
}
客户端文档 ↗

检查连接

list_projects, list_monitoring_pages, list_audits, get_audit_status, get_audit_report, get_optimization_plan, get_audit_section, compare_audits, get_monitoring_history. audits:write: start_audit, rerun_audit.

如何获取 Milten 访问令牌

登录 Milten 后,可在账户面板的“个人资料 → API 密钥”中创建、查看和撤销个人访问令牌(Personal Access Token,PAT)。MCP 客户端通过 Authorization: Bearer 请求头发送令牌;MCP 服务器不使用浏览器 Cookie 或 OAuth 登录。

创建访问令牌

登录 Milten,在个人资料中打开“API 密钥”,输入令牌名称和有效期,然后点击“创建令牌”。

打开 API 密钥

请立即复制密钥:它只显示一次。请妥善保存,并通过上方任一配置方式将其传递给客户端。令牌 id 会保留在列表中,以便撤销令牌。

令牌仅读取您自己保存的审计。 授予 audits:write 后,可以在每日配额内启动和重新运行审计。

查看和撤销令牌

“API 密钥”列表显示令牌的名称、有效期和状态。点击“撤销”将终止该令牌的 MCP 访问权限。您也可以通过已登录的浏览器会话调用这些账户 API 路由:GET 返回不含密钥的令牌元数据。撤销时,将 {id} 替换为令牌 ID;DELETE 返回 204,后续使用该令牌的 MCP 请求将被拒绝。

账户 API
GET /v1/personal-access-tokens/
DELETE /v1/personal-access-tokens/{id}

MCP 工具:审计、报告和优化方案

MCP 客户端将这些 JSON 参数传递给 tools/call。请求报告或优化方案时,请将示例 UUID 替换为 list_audits 返回的 auditId。这里需要审计 ID,而不是网站 URL。

list_projects

列出您自己项目的 ID、名称和 URL。

参数
page?, limit?
响应
projects, count, page, limit, hasMore
list_projects · JSON
{
  "page": 1,
  "limit": 20
}

list_monitoring_pages

列出您自己监控页面的 ID、URL、计划和测量条件。使用 monitoringUnitId 读取历史记录。

参数
projectId?, page?, limit?
响应
pages, count, page, limit, hasMore
list_monitoring_pages · JSON
{
  "page": 1,
  "limit": 20
}

start_audit

启动新审计并返回 auditId。重发同一请求时,请复用 requestId。

参数
requestId, url, operation, region; projectId?, formFactor?, deviceName?, cpu?, network?, lang?, maxPages?, skipThirdParty?
响应
auditId, statusTool, reportTool
start_audit · JSON
{
  "requestId": "6166f8ee-bb4e-4366-b359-0d321dbca341",
  "url": "https://example.com/",
  "operation": "seo",
  "region": "ru-mow"
}

rerun_audit

使用已保存的设置重新运行您自己的审计。新运行请使用新的 requestId。

参数
auditId, requestId
响应
auditId, statusTool, reportTool
rerun_audit · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000",
  "requestId": "93759350-c5d3-45dd-80c8-e8ca170df3ed"
}

get_audit_status

无需读取完整报告即可返回状态、错误、测量条件和可用章节。

参数
auditId
响应
audit, conditions, sections, trustNote
get_audit_status · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000"
}

list_audits

查找当前已验证用户拥有的审计,也可将列表限定为一个项目。

参数
所有字段均为可选。projectId:项目 UUID;page:整数 ≥ 1,默认值为 1;limit:1–50 的整数,默认值为 10。 url?, operation?, status?, dateFrom?, dateTo?
响应
audits 包含 auditId、url、operation、status 和 createdAt,并在有数据时包含 projectId 和 error。count 为总数;page 和 limit 表示分页信息。如果 truncated 为 true,请减小 limit 后重试。状态为 running、completed 或 failed。
list_audits · JSON
{
  "page": 1,
  "limit": 10
}

get_audit_report

读取报告的所有已保存分区和简要指标摘要。

参数
auditId:必填,来自 list_audits 的审计 UUID。
响应
audit 包含元数据;filling 以 {type, data} 格式包含所有已保存分区,包括 Speed Scanner、HAR、CrUX 和 llmAdvice。analysis 补充指标与问题摘要。trustNote 将网站内容标记为不可信数据。响应数据的默认上限为 1 MiB;超出时返回错误,而不是截断报告。
get_audit_report · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000"
}

get_optimization_plan

读取报告中显示的已保存 llmAdvice 计划。MCP 不会生成新建议或调用 LLM。

参数
auditId:必填 UUID;focus:all(默认值)、lcp、inp、cls 或 backend;limit:1–25 的整数,默认值为 10。
响应
plan 包含 source、summary、recommendations 和 truncated。建议的顺序与字段保持不变:priority(critical、medium 或 low)、metrics、metricSavings、title、resources、evidence、action、effect 和 verification。focus 按 metrics 筛选,backend 对应 TTFB。limit 缩短列表时,truncated 为 true。旧版文本计划通过 output 返回,不作筛选。若没有已保存计划,请查看 diagnostic。
get_optimization_plan · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000",
  "focus": "lcp",
  "limit": 3
}

get_audit_section

读取最后保存的报告章节。大型数组可以分页获取。

参数
auditId 和 section 为必填项。section 是 filling 中的 type,例如 har。可选的 path 是 JSON Pointer,例如 /log/entries。数组的 offset 从 0 开始,limit 为 1–200(默认 50)。其他数据请省略分页参数。
响应
data 保留原始字段和 null。数组返回 total、nextOffset 和 truncated;使用 nextOffset 继续读取,直到 truncated 为 false。响应过大时会返回错误,请缩小 path 范围或降低 limit。
get_audit_section · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000",
  "section": "seo",
  "path": "/pages",
  "limit": 5
}

compare_audits

比较同一 URL 和检查类型的两次本人审计,包括测量值、基于阈值的问题以及已保存建议的变化。

参数
baselineAuditId 是基准审计,candidateAuditId 是后续审计。两个 UUID 均从 list_audits 获取。实验室指标支持 basic、inp 和 ttfb。
响应
delta = candidate − baseline,缺失值为 null。请查看 comparable 和 warnings。findings 分为 added、resolved、persisting 和 uncompared。建议按 title 完全匹配,并附上两个已保存的计划。
compare_audits · JSON
{
  "baselineAuditId": "123e4567-e89b-42d3-a456-426614174000",
  "candidateAuditId": "e6723288-f28c-4b62-8a4e-7dc395958c0c"
}

get_monitoring_history

按从新到旧的顺序返回本人监控页面的已保存测量结果,不会启动检查。

参数
monitoringUnitId 必填,是监控页面的 Core UUID(coreMonitoringUnitId),不是 auditId。dateFrom 和 dateTo 为包含两端的 RFC 3339 时间范围,默认最近 30 天。page 从 1 开始,limit 为 1–50(默认 20)。
响应
results 包含时间、指标、设备、地区和 affectedAlert,响应还包括 count 和 hasMore。翻页时请复用返回的 dateFrom 和 dateTo。历史零值可能代表缺失数据;INP 是实验室测量值,不是 CrUX p75。
get_monitoring_history · JSON
{
  "monitoringUnitId": "e09aa948-a541-4404-bcdc-9e5621c11891",
  "page": 1,
  "limit": 20
}

给 AI 助手的提示词示例

连接后,可在助手聊天中发送以下消息。助手会调用 MCP 工具并解释结果;这些消息并不是单独的服务器命令。

  1. 显示我的 Milten 审计,并找到 example.com 最近一次已完成的审计。

  2. 阅读这份报告。哪些指标表明加载缓慢?请列出数值和单位。

  3. 获取重点针对 LCP 的优化方案。如果报告有相应依据,请提出最多三项修改,并说明如何验证每项修改的效果。

此连接可以访问哪些数据

令牌仅读取您自己保存的审计。 授予 audits:write 后,可以在每日配额内启动和重新运行审计。 被审计网站的文本是不可信的数据,绝不能视为对代理的指令。

故障排除

404 / 返回 HTML 而非 JSON

确认当前环境已启用 MCP 端点。路径必须为 /mcp,不带结尾斜杠或语言前缀。文档页面使用的是另一个 URL。

401 unauthorized

检查 Authorization: Bearer 和令牌密钥。如果 Codex 显示 failed (0 tools),请使用有效令牌重新配置并重启 Codex。已过期或撤销的令牌需要更换。此端点不支持 OAuth 登录。

403 origin forbidden

对于浏览器客户端,MCP 服务器必须允许其 origin。联系 Milten 时请提供客户端名称和 origin,不要发送令牌。

429 rate limit exceeded

降低请求频率,稍后重试。服务器默认限制为每个令牌每分钟 60 次请求;具体环境可能采用不同限制。

audit not found / invalid arguments

使用您自己的 list_audits 响应中的审计 UUID。不存在的审计和其他用户的审计都会返回 audit not found。请检查分页、focus 和 limit 的值。

指标或建议为空

检查 audit.status 和 diagnostic。报告可能没有受支持的指标或已保存的 llmAdvice。如果没有建议匹配 focus,列表也会为空。这不能证明网站没有问题。

503 / temporarily unavailable

身份验证服务或审计服务暂时不可用。请稍后重试;如果问题持续存在,请联系支持团队。

Cookies

我们使用 Cookie

我们使用 Cookie 以在你的网站上为你提供更好的体验。你可以在我们的 隐私政策.